高级会员
- 积分
- 772
- 威望
- 297
- 贡献
- 293
- 兑换币
- 0
- 注册时间
- 2010-1-16
- 在线时间
- 91 小时
|
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void wait() {
int i,j;
for(i=0;i<2000;i++)
for(j=0;j<1335;j++) ;
}
void ADCInit(void)
{
ATD0CTL2=0x42; //禁止外部触发, 中断允许
ATD0CTL3=0x08; //每次转换1个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0x01; //10位 采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]=2M
ATD0CTL5=0x80; //右对齐无符号 6:0特殊通道禁止,5:1连续转换 ,4:0单 通道轮流采样
ATD0DIEN=0x00; //禁止数字输入
}
word AD_wData = 0;
void main() {
float voltage;
DisableInterrupts;
ADCInit();
EnableInterrupts;
for(;;)
{
voltage = (float)AD_wData * 2.5 /1024;// 计算电压值
}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 22 Int_AD0(void)
{
DisableInterrupts;
AD_wData = ATD0DR0; //Read out the Result Register
wait();
EnableInterrupts;
}
调试时连接出错,很奇怪,求高手指教。。。。。。
谁有ATD中断程序,给我参考下也行。。。。。。谢谢 |
|