智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1428|回复: 1
打印 上一主题 下一主题

求教MC 9S08MP16

[复制链接]

9

主题

13

帖子

0

精华

注册会员

Rank: 2

积分
131
威望
75
贡献
32
兑换币
30
注册时间
2012-12-24
在线时间
18 小时
毕业学校
西安电子科技大学
跳转到指定楼层
1#
发表于 2013-1-7 23:57:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人想用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;的时候程序却又进不了中断了!

15

主题

110

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
威望
825
贡献
379
兑换币
514
注册时间
2012-12-3
在线时间
184 小时
2#
发表于 2013-1-9 22:26:30 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 05:04 , Processed in 0.053507 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表