打印

在MPLAB下怎么调试中断,还请大侠帮我看下我的中断函数有什

[复制链接]
3132|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yjypmypm|  楼主 | 2008-1-11 00:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想用PIC单片机的RB 口电平变化中断写一个4*4矩阵键盘,烧片后运行不了.又不知道怎么用SIM调试中断,请大侠帮忙.








extern uchar key;  //外部的全局变量

 static uchar key_i;
 static uint  key_a=2000;

void port_init()
{
  ADCON1=0X07;   // 初始化I/O,使其工作在数字I/O状态
 TRISA = 0xFF; //ff;  0 out; 1 in

//初始化RB口为电平变化中断
  TRISB = 0xF0;   //设置为高4位输出..
  RBPU=0;      //使用RB口弱上拉
  PORTB=0;     //PORTB 低4位输出0
  INTCON=0;    // 清除INTCON 所有中断禁止;
  RBIE=0 ;       //允许RB口电平变化中断;
  


 TRISC = 0x3E; //fe "0011 1110"
 TRISD = 0x00; 
 TRISE = 0x01; //df;   "0000 0001"  busy(输入) req(输出)
 }  

void interrupt INTS(void)
{
 
       
  if(RBIE && RBIF)

   {
    RBIF=0;       //清除RB口中断标志;
    key=PORTB;   //读一次RB口清除中断条件;
    if(key!=0xf0)
      { 
        while(key_a--); //有键按下消抖后再判断;
         if(key!=0xf0)
           { 
             PORTB=0x0e;   
              NOP();
              NOP();
             for(key_i=0;key_i<4;key_i++)
              {
               if( (PORTB^0xff)!=0)
                  {key=PORTB;
                   break;
                   }
                 else 
                   {CARRY=1;
                    PORTB=PORTB<<1;
                    }
                   
               }
        
            }
         }
     PORTB=0;    //清除PORTB口为下次检测做准备
     PORTB=PORTB; //再读读一次RB口清除中断条件;
    }

}
沙发
xieyuanbin| | 2008-1-11 07:41 | 只看该作者

SIM是软件仿真,除了一台电脑外不需要任何硬件支持

楼主那个,需要用到软件仿真中的引脚激励,用异步激励就可以了。
如果用ICD2调试,在调试时除了用到RB6,RB7之外,PORTB口的其它PIN功能并不影响,所以还是可以调试电平变化中断的。

使用特权

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

本版积分规则

6

主题

21

帖子

0

粉丝