中级会员
- 积分
- 248
- 威望
- 181
- 贡献
- 25
- 兑换币
- 0
- 注册时间
- 2010-9-4
- 在线时间
- 21 小时
|
麻烦大家看下我的程序。遇到的问题是引入中断后,小车就只进行中断程序,不会在执行for里面的程序了。我想是在ad初始化的时候和中断发生了冲突,但是就是找不出
问题在哪边。xs128的ad模块和dg128差别挺大的。急求大家帮助。
void ad_init() {
ATD0CTL0=0x07;//第七通道后返回
ATD0CTL1=0x00;//允许指定AD口做外部触发输入口,8位结果,采样前采样电容不放电 1
ATD0CTL2=0x42;//停止模式下继续运行,允许中断
ATD0CTL3=0xB0;//10110000 右对齐,转换序列为6
ATD0CTL4=0x1F;//00011111 Ad时钟频率 ATDclock=busclock/(prs)*0.5=1MHZ,prs=32,
ATD0CTL5=0x30;//00110000 特殊通道转换禁止,连续转换,多通道,起始为0
ATD0DIEN=0x00;//输入使能寄存器,禁止引脚的数字缓冲
}
void rti_int()
{
CRGINT_RTIE=1;//允许每个周期结束产生中断
RTICTL=0xCA;//11001010,周期大约为1s,实时中断的溢出时钟周期=(RTR[3:0]+1) x (2的(RTR[6:4] + 9)次方)/OSCCLK。
}
void main(void)
{
DisableInterrupts;
pll_init();
ad_init();
rti_int();
EnableInterrupts;
for(;;) {PORTB=0X00;}
#pragma CODE_SEG __NEAR_SEG NON_BANKED //实时中断RTI 中断函数
void interrupt 7 RTI(void)
{
DisableInterrupts;
PORTB=0XFF;
CRGFLG_RTIF=1; //向CRGFLG_RTIF 写1 清除标志位
}
#pragma CODE_SEG DEFAULT |
|