|
本帖最后由 DEMOK 于 2012-12-21 11:15 编辑
- //-----------------------------------------------------------//
- //功能说明:MC9S12XS128--ATD例程
- //使用说明:由通道ATD0进行多通道A/D转换,转换值在B口显示
- //程序设计:DEMOK工作室(demok.taobao.com)
- //设计时间:2010.03.12
- //------------------------------------------------------------//
- #include <hidef.h> /* common defines and macros */
- #include "derivative.h" /* derivative-specific definitions */
- word AD_wValue;//AD转换结果
- //--------------初始化函数----------------//
- //-----时钟初始化程序--------//
- void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
- { //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
- REFDV=1; //总线时钟=48/2=24MHz
- SYNR=2;
- while(!(CRGFLG&0x08));
- CLKSEL=0x80;
- }
- //-----ATD初始化程序--------//
- void AD_Init(void)
- {
- ATD0CTL1=0x00; //选择AD通道为外部触发,8位精度,采样前不放电
- ATD0CTL2=0x40; //标志位自动清零,禁止外部触发, 禁止中断
- ATD0CTL3=0xa0; //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转
- ATD0CTL4=0x01; //采样时间为4个AD时钟周期,PRS=1,ATDClock=6MHz
- ATD0CTL5=0x30; //特殊通道禁止,连续转换 ,多通道转换,起始通道为0转换4个通道
- ATD0DIEN=0x00; //禁止数字输入
- }
- //-----读取AD转换结果--------//
- void AD_GetValue(word *AD_wValue)
- {
- *AD_wValue=ATD0DR0; //读取结果寄存器的值
- }
- //-----主函数--------//
- void main(void)
- {
- PLL_Init();
- AD_Init();
- DDRB=0xFF;
- PORTB=0x00;
- EnableInterrupts;
- for(;;)
- {
- while(!ATD0STAT2_CCF0); // 等待转换结束while(ATDOSTAT2_CCF0==1)
- AD_GetValue(&AD_wValue); // 读取转换结果
- PORTB = (byte)AD_wValue; // 在B口显示转换值
- }
- }
复制代码
第八届智能车摄像头技术交流群 群号:108190422
第八届智能车光电技术交流群 群号:132879827
第八届智能车电磁技术交流群 群号:118404899(已满)
第八届智能车电磁技术交流群② 群号:287996146
对号入座,欢迎加入!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|