#include <hidef.h> /* common defines and macros */ #include "derivative.h" /* derivative-specific definitions */ #define ATD_CLOCK 2000000 #define BUS_CLOCK 8000000 #define OSC_CLOCK 16000000 #define baud 9600 #define led1 PORTAB_PB0 #define led2 PORTB_PB1 #define led1_dir DDRAB #define led2_dir DDRB #define on 0 unsigned int num = 0; unsigned char AD0_DATA,AD1_DATA; void gpio_init(void) { PORTB = 0XFF; led1_dir = 0xff; led2_dir = 0xff; } void ECT_INIT(void) { TIOS_IOS0 = 1; //定时器0用作输出比较 TSCR1_TEN = 1; //定时器使能 TSCR1_TFFCA = 1; //快速清除标志位 TCTL2 = 0X00; //定时器与输出引脚断开 TIE = 1; //开定时器0中断 T标志寄存器1 = 0XFF; T标志寄存器2 = 0XFF; //清除中断标志 TSCR2 = 0X03; } void SCI_INIT(void) { SCI0BD = BUS_CLOCK/16/baud; SCI0CR1 = 0X00; SCI0CR2 = 0X08; //串口使能,发送使能 } void AD_INIT(void) { ATD0CTL1_SRES = 0 ; //8位精度选择 ATD0CTL2 = 0X42; //启动AD 快速清除,转换完成中断 ATD0CTL3 = 0X90; //每次转换两个通道,右对齐模式 ATD0CTL4 = BUS_CLOCK / ATD_CLOCK / 2 - 1; //AD时钟频率2M } void AD_START(void) { ATD0CTL5 = 0X30; //转换AD00和AD01 单次转换 转换完成,产生中断 } void sci_send(void) { while(!SCI0SR1_TC); SCI0DRL = AD0_DATA; } #pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt void ECT_interrupt(void) { num++; TC0 = TCNT + 1000; //周期1ms } interrupt void AD_interrupt(void) { AD0_DATA = ATD0DR0L; //"L"表示第八位,,不表示左右对其 “H”表示高八位, AD1_DATA = ATD0DR1L; sci_send(); } #pragma CODE_SEG DEFAULT void main(void) { /* put your own code here */ SCI_INIT(); ECT_INIT(); AD_INIT(); gpio_init(); EnableInterrupts; for(;;) { if(num ==5000) { TSCR1_TEN = 0; //延时五秒,关闭定时器 AD_START(); //开始AD采集 led1 = on; led2 = on; } // _FEED_COP(); /* feeds the dog */ } /* loop forever */ /* please make sure that you never leave main */ }
收藏0 举报
仙女山 发表于 2015-7-26 09:56 楼主现在问题解决了吗
quray1985 发表于 2015-7-25 16:25 你用的是定时器中断采集吧,看看你的ad初始化那里是如何设置的
ccw1986 发表于 2015-7-25 17:05 把代码贴出来看看?
小帅哥哥 发表于 2015-7-26 10:23 代码贴出来了 你帮我看看 就是在for(;;)循环里,我关掉了定时器,下面的AD转换就不行 ,打开定时器 ...
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
发帖类勋章
时间类勋章
等级类勋章
22
71
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号