超级版主
- 积分
- 17281
- 威望
- 8767
- 贡献
- 3040
- 兑换币
- 4153
- 注册时间
- 2011-8-7
- 在线时间
- 2737 小时
|
我一直用的代码
- void AD_N_Init(void)
- {
- ATD0CTL1=0b00100000; //8位精度,转换前不放电
- ATD0CTL2=0b01000000; // 快速清零, 无等待模式, 禁止外部触发, 中断禁止
- ATD0CTL3=0b00001000; // 右对齐无符号,转换序列长度为1, No FIFO, Freeze模式下继续转换
- ATD0CTL4=0b00000001; // 为确定值 转换4个时钟, ATDClock=[BusClock*0.5]/[PRS+1]=8MHz; PRS=0,
- /* 转换时间 = Initial Sample Time + Programmed Sample Time + Resolution Period
- =2+4+10=16ATDclock=16*1/8=2us */
- // 要求每隔约2us采集一点 (或更小) 一行采26点
- ATD0CTL5=0b00110000; //单通道采样,持续采样,选择通道0
- ATD0DIEN=0b00000000; // 禁止数字输入
- }
-
- int AD_N(int i)
- { //(AD)转换结果获取函数,抄来的。虽然不懂,就这么用了
- int IOCcnt;
- ATD0CTL2=0x40;
- switch(i){
- case 0: ATD0CTL5=0x20;break;
- case 1: ATD0CTL5=0x21;break;
- case 2: ATD0CTL5=0x22;break;
- case 3: ATD0CTL5=0x23;break;
- case 4: ATD0CTL5=0x24;break;
- case 5: ATD0CTL5=0x25;break;
- case 6: ATD0CTL5=0x26;break;
- case 7: ATD0CTL5=0x27;break;
- }
- while(!ATD0STAT0_SCF);
-
- IOCcnt=(ATD0DR0>>6);
-
- return IOCcnt;
- }
复制代码 |
|