智能车制作

标题: PIT定时器中断的问题 [打印本页]

作者: meijj1990    时间: 2011-3-4 15:53
标题: PIT定时器中断的问题
本帖最后由 meijj1990 于 2011-3-4 16:06 编辑

我用PIT写了一个中断
#pragma CODE_SEG __NEAR_SEG NON_BANKED   //利用中断来分时点亮
void interrupt 66 PIT0_ISR(void)
{

    PITTF_PTF0=1;  
   sen_count++;
   if(sen_count==1)
   PORTA=0X00;
   if(sen_count==2)
    PORTA=0X04;
   if(sen_count==3)
    PORTA=0X10;
   if(sen_count==4)
    PORTA=0X14;
   if(sen_count==5)
    PORTA=0X40;
   if(sen_count==6)
     PORTA=0X44;
   if(sen_count==7)
     sen_count=1;
   
   
  
}

为什么PITTF_PTF0=1;只能放在中断的一开始?我最先将这句话放在末尾,结果编译没问题,但是下到车子上去运行就不能正确显示,改到中断开头就没问题了。这是为什么?
作者: meijj1990    时间: 2011-3-6 16:43
额...
作者: zhjb1    时间: 2011-3-9 07:48
分析你的问题可能出在PIT初始化程序有问题,我就是在结束时加这条的。
作者: meijj1990    时间: 2011-3-9 17:50
回复 4# zhjb1


    我也看到过这句话放在最后一句的情况,一点问题都没有,这是我们车子的初始化程序
void PIT0_Init(void)
{   

   PITCFLMT_PITE=0;       //disable PIT
   PITCE_PCE0=1;          //enable timer channel 0
   PITMTLD0=(96-1);       //time base  480 clock cycles ,it's 0.1M Hz
   PITMUX=0X00;           // ch0 connected to micro timer 0
                          //time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS.
   PITLD0=(100-1);      // 定时时间=96/48M*100=0.2ms   
   PITINTE_PINTE0=1;      //enable interupt channel 0
   PITCFLMT_PITE=1;       //enable PIT
//PITCNT0,类似于自由记数器TCNT,只不过一直是递减,TCNT是一直递增
}
但是我觉得我的初始化没什么问题,你看有问题吗?
作者: 傲风飞扬    时间: 2011-3-10 15:52
初始化而已……
作者: 1637557819    时间: 2012-4-29 15:53
估计是 初始化 的问题
作者: 栗子kary    时间: 2012-5-16 23:22
、、




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2