为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > CS1237程序

CS1237程序

2022-08-05 10页 doc 24KB 15阅读

用户头像

is_654168

暂无简介

举报
CS1237程序/*----------------------------------------------------------------------------CODENAME:AD_Communication.C-description-MCU与ADC通讯相关子程序-----------------------------------------------------------------------------*///整个通讯时序的时间必须小于1个数据转换周期//推荐每个CLK的时间长度:2uS~15uS/*-------...
CS1237程序
/*----------------------------------------------------------------------------CODENAME:AD_Communication.C-description-MCU与ADC通讯相关子程序-----------------------------------------------------------------------------*///整个通讯时序的时间必须小于1个数据转换周期//推荐每个CLK的时间长度:2uS~15uS/*-----------------------------------------------------------------------------Name:F_AD_ClockFunction:ADC时序时钟-----------------------------------------------------------------------------*/voidF_AD_Clock(void){IO_CLK_AD=1;F_Delay();IO_CLK_AD=0;F_Delay();}/*-----------------------------------------------------------------------------Name:F_Read_AD_ByteFunction:读3字节AD值-----------------------------------------------------------------------------*/voidF_Read_AD(void){_UCHARi;R_AD0.word=0;EIC20_EIE0=0;//关闭MCU_DAT管脚的外部中断(防止读写时误触发)//while(IO_Data_AD);for(i=0;i<24;i)//发送24个CLK,接收数据{R_AD0.word<<=1;F_AD_Clock();if(IO_Data_AD){R_AD0.word;}}F_AD_Clock();F_AD_Clock();F_AD_Clock();//CLK27,拉高DRDY//如果一个数据转换周期内对ADC进行两次或以上的读写操作,则需要发送46个CLK,而不是27个CLK//(即:发送24个CLK读取数据,然后再发送22个CLK)EIC20_EIE0=1;//重新开启MCU_DAT管脚的外部中断}/*-----------------------------------------------------------------------------Name:F_Rd_AdRegFunction:读取ADC寄存器-----------------------------------------------------------------------------*/_UCHARF_Rd_AdReg(void){_UCHARi;union_UCHAR_BITR_Temp;//----------------------------------EIC20_EIE0=0;//关闭MCU_DAT管脚的外部中断(防止读写时误触发)//----------------------------------//1~3:clk1-clk27//----------------------------------for(i=0;i<27;i){F_AD_Clock();}//----------------------------------//4:clk28-clk29//----------------------------------IO_Data_AD_Dir=1;F_AD_Clock();F_AD_Clock();//把MCU_Data管脚设为输出//----------------------------------//5:clk30-clk36(发送读命令)//----------------------------------R_Temp.byte=0xAC;for(i=0;i<7;i){if(R_Temp.bit.b07){//读命令(0x56)左移1位//MSB}IO_Data_AD=1;}else{IO_Data_AD=0;}R_Temp.byte=R_Temp.byte<<1;F_AD_Clock();//----------------------------------//6:clk37//----------------------------------IO_Data_AD_Dir=0;F_AD_Clock();//----------------------------------//把MCU_Data管脚设为输入//7:clk38-clk45(读取寄存器)//----------------------------------R_Temp.byte=0;for(i=0;i<8;i){R_Temp.byte<<=1;F_AD_Clock();if(IO_Data_AD){R_Temp.byte;}}//----------------------------------//8:clk46//----------------------------------F_AD_Clock();//----------------------------------EIC20_EIE0=1;//重新开启MCU_DAT管脚的外部中断returnR_Temp.byte;}/*-----------------------------------------------------------------------------Name:F_Wr_AdRegFunction:写入ADC寄存器-----------------------------------------------------------------------------*/voidF_Wr_AdReg(_UCHARR_AdReg){_UCHARi;union_UCHAR_BITR_Temp;//----------------------------------EIC20_EIE0=0;//关闭MCU_DAT管脚的外部中断(防止读写时误触发)//----------------------------------//1~3:clk1-clk27//----------------------------------for(i=0;i<27;i){F_AD_Clock();}//----------------------------------//4:clk28-clk29//----------------------------------IO_Data_AD_Dir=1;//把MCU_Data管脚设为输出F_AD_Clock();F_AD_Clock();//----------------------------------//5:clk30-clk36(发送写命令)//----------------------------------R_Temp.byte=0xCA;//写命令(0x65)左移1位for(i=0;i<7;i){if(R_Temp.bit.b07)//MSB{IO_Data_AD=1;}else{IO_Data_AD=0;}R_Temp.byte=R_Temp.byte<<1;F_AD_Clock();}//----------------------------------}//6:clk37//----------------------------------F_AD_Clock();//----------------------------------//7:clk38-clk45(写入寄存器)//----------------------------------R_Temp.byte=R_AdReg;for(i=0;i<8;i){if(R_Temp.bit.b07)//MSB{IO_Data_AD=1;}else{IO_Data_AD=0;}R_Temp.byte=R_Temp.byte<<1;F_AD_Clock();}//----------------------------------//8:clk46//----------------------------------IO_Data_AD_Dir=0;F_AD_Clock();//把MCU_Data管脚设为输入//----------------------------------EIC20_EIE0=1;//重新开启MCU_DAT管脚的外部中断
/
本文档为【CS1237程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索