高手请指点,我使用思卡尔单片机MC9S12XDT512写了一个周期中断定时器函数,代码在附件里,请问为什么我在使用full chip simulation时,中断处理程序有用(看到静态变量K是在变化的,PITCNT0也在变化。) 但是使用TBDML仿真的时候,程序下载到板子里,PITCNT0是在变化,但K就是不变化,PORTA口的I/O情况也未做改变。 参考手册上写着:PIT使能后会使定时器中断清零,我就特别的把中断使能写在定时器开始运行的下面,而且,总中断也放在最下边。就是不明白,请已经调通了程序的高手指点下。谢谢啦。 #include <hidef.h> /* common defines and macros */ #include <mc9s12xdt512.h> /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12xdt512"
static int k=0;
void main(void) { // int i,j;
DDRA=0xFF; DDRE=0x04;
PITMTLD0=99; //8位定时器重装载寄存器赋值 ,0.5S PITLD0=1999;//16位定时器重装载寄存器赋值 PITMUX=0x00;//复用第0路8位微定时器 PITCE=0x01;// 16位定时开始运行 PITFLT=0x01; PITCFLMT=0x81;//8位定时器装载并开始运行 PITINTE=PITINTE | 0x01;//容许定时器0中断 EnableInterrupts;
for(;;) { /* for(i=0;i<350;i++) for(j=0;j<450;j++) ;
k++; */ //if (PITCNT0%20!=0) if (k%2!=0) { PORTAB_PA6=1; PORTAB_PA5=0; PORTAB_PA4=1; PORTAB_PA3=0; } else { PORTAB_PA6=0; PORTAB_PA5=1; PORTAB_PA4=0; PORTAB_PA3=1; }
} }
void interrupt 66 Timer0_Out() {//EnableInterrupts; PITCE=0x01; PITTF=0x01; k++; }
https://bbs.21ic.com/upfiles/img/20095/200952011546931.rar 相关链接:https://bbs.21ic.com/upfiles/img/20095/200952011546931.rar |