想用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口清除中断条件; }
}
|