打印

MC9S12XDT512写了一个周期中断定时器,中断未产生,请高手指点

[复制链接]
2119|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanliana|  楼主 | 2009-5-20 11:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高手请指点,我使用思卡尔单片机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

相关帖子

沙发
ccat| | 2009-9-1 15:47 | 只看该作者
检查过void interrupt 66   Timer0_Out() 没有, 66 是不是正确?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝