智能车制作

标题: 求教MC 9S08MP16 [打印本页]

作者: 飞刀小李    时间: 2013-1-7 23:57
标题: 求教MC 9S08MP16
本人想用MC9S08MP16单片机KBI模块,从KBI2P7端输入4.3v的1HZ的50%的PWM波,昨天 15:21 上传
下载附件 (76.62 KB)



void KBI_INIT()
{
//  PTBDD &=0X7F;//PB7输入
//  PTCDD &=0X7F;//PC7输入
//按照手册上要求的步骤
//  KBI3SC &=0XFD;//先把中断允许关掉
//  KBI3PE =0X01;//PTD0检测速度、允许引脚中断
//  KBI3ES =0X00;//下降沿中断
//  KBI3SC =0X06;//清楚标志,开中断,只边沿检测
    PTCD  =0X00;
    PTCPE =0XFF;
    KBI2SC_KBIE =0;//先把中断允许关掉
   
    KBI2ES =0X00;//下降沿,低电平
    KBI2PE =0X80;//PTc7检测速度、允许引脚中断
    KBI2SC =0X02;//边沿检测
}
unsigned int numk=0;
unsigned int count=0;
void main(void)
{
    EnableInterrupts; /* enable interrupts */
  // include your code here  
//  
  init_clk();
  delay(1);
  
  //    PDB1();
//  PWM();
//  MTIM();
  KBI_INIT();
  PTDDD =0XFF;
  while(1)
  {  
     DisableInterrupts;
     PTDD_PTDD2 =1;        //亮LED1; PTDD_PTDD2
     asm (nop);asm (nop);
     
     PTDD_PTDD3 =1;        //亮LED2;
     asm (nop);asm (nop);
     PTDD_PTDD2 =0;        //亮LED1; PTDD_PTDD2
     asm (nop);asm (nop);     
     PTDD_PTDD3 =0;
     
     count++;               
    __RESET_WATCHDOG();    //默认是开看门狗的
  }
}
interrupt VectorNumber_Vkeyboard2 void kbi2()
{
//    KBI2SC_KBACK=1;//清除外部中断标志位
//    kbi_value = PTGD;//读取按键值
    KBI2PE =0;
    KBI2SC =0X04;
    KBI2SC_KBACK=1;//清除外部中断标志位
    KBI2SC_KBACK=1;//清除外部中断标志位
    asm (nop);asm (nop);
    asm (nop);asm (nop);
     numk++;
    if(numk%2)
    {
         
      PTDD_PTDD0 =0;
      asm (nop);asm (nop);
      asm (nop);asm (nop);
        
    }
    else
    {                  
         PTDD_PTDD0 =1;
         asm (nop);asm (nop);
         asm (nop);asm (nop);     
//         PTDD_PTDD3 =1;        //亮LED2;
        
    }
    if(numk==2000)
        numk=0;
    KBI2PE =0X80;//PTc7检测速度、允许引脚中断
    KBI2SC =0X02;//边沿检测
}
我的这个程序为什么在中断中不能对引脚数据寄存器赋值?比如说中断中的PTDD_PTDD0,不能对其赋值,导致了出现这个问题.还有就是中断执行到倒数第二行 KBI2PE =0X80;// 马上中断标志位就置位了。导致程序一直循环中断。但是当我把最后一行KBI2SC =0X02;// 改成KBI2SC =0X06;的时候程序却又进不了中断了!


作者: あなた    时间: 2013-1-9 22:26





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