|
STC8G1K08怎么用普通IO中断,目前使用P1.5,P1.6,P1.7做按键中断,配置入下,收不到IO中断打印信息
void IO_Int_Init() {
P_SW2 |= 0x80;// bit[7] EAXFR:0:禁止访问XFR 1:使能访问XFR
P1IM0 = 0x00; //00:下降沿;01:上升沿 10:低电平 11:高电平
P1IM1 = 0xe0;
P1INTE = 0xe0;//使能P1.5 P1.6 P1.7中断
P1IE |= 0xe0;
P_SW2 &= ~0x80;
EA = 1;
}
void common_isr() interrupt 13
{
unsigned char psw2_st;
unsigned char intf;
psw2_st = P_SW2;
P_SW2 |=0x80;
Uart2SendStr("common_isr\r\n");
intf = P1INTF;
if(intf)
{
P1INTF=0x00;
if(intf & 0x20) //P1.5 口中断
{
is_key |=0x01;
key1_t =timer_t0;
P12=0;
Uart2SendStr("key 1 \r\n");
}
if(intf & 0x40) //P1.6 口中断
{
is_key |=0x02;
key2_t =timer_t0;
P13=0;
Uart2SendStr("key 2 \r\n");
}
if(intf & 0x80) //P1.7 口中断
{
is_key |=0x04;
key3_t =timer_t0;
P14=0;
Uart2SendStr("key 3 \r\n");
}
}
P_SW2=psw2_st;
}
ISP.ASM代码如下:
CSEG AT 0133H;P1口中断入口地址
JMP P1INT_ISR
P1INT_ISR:
JMP 006BH;借用13号中断入口地址
END
|
|