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