|
void main(void)
{
//u8 key;
CKCON =0x00; //设置外部总线最快
EAXFR = 1; //使能访问
WTST =0x00; //设置代码等待参数
//赋值为0.可将CPU执行程序的熟读设置为最快
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口 0000 1111 0x00 P0M1 |= 0x0F; P0M0 |= 0x00;
P0M1 |= 0x0F; P0M0 |= 0x00;
P1M1 = 0x00; P1M0 = 0x00; //
P2M1 = 0x00; P2M0 = 0x00; //
P2M1 |= 0xFC; P2M0 |= 0x00;
P3M1 = 0x00; P3M0 = 0x00; //
P4M1 = 0x00; P4M0 = 0x00; //
P4M1 |= 0x60; P4M0 |= 0x00; //0110 0000
P5M1 = 0x00; P5M0 = 0x00; //
UART4_config(0); //选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer4做波特率.
P0IM0 |= 0xFF; //高电平中断 0000 1111
P0IM1 |= 0xFF;
P0INTE |= 0xFF; //使能P3口中断
P2IM0 |= 0xFC; //高电平中断 1111 1100
P2IM1 |= 0xFC;
P2INTE |= 0xFC; //使能P2口中断
P4IM0 |= 0x60; //高电平中断 0110 0000
P4IM1 |= 0x60;
P4INTE |= 0x60; //使能P4口中断
EA=1;
while(1);
}
//中断处理
void common_isr() interrupt 13
{
u8 intf0;
u8 intf2;
u8 intf4;
intf0 = P0INTF ;
intf2 = P2INTF ;
intf4 = P4INTF;
if(intf0)
{
P0INTF = 0x00;
P2INTF = 0x00;
P4INTF = 0x00;
if(intf0 & 0x01) //P00 -->fire1
{
FIRE1_Flag = 1;
}
if(intf0 & 0x02) //P01 -->fire2
{
FIRE2_Flag = 1;
}
if(intf0 & 0x04) //P02 -->fire3
{
FIRE3_Flag = 1;
}
}
}
//ISR.ASM
//将下面的代码保存到相同的ISR.ASM,然后将文件添加到项目中即可
CSEG AT 0133H ;P1 口中断入口地址
JMP P0INT_ISR
CSEG AT 013BH ;P2 口中断入口地址
JMP P2INT_ISR
CSEG AT 014BH ;P4口中断入口地址
JMP P4INT_ISR
PXINT_ISR:
JMP 006BH ;借用 13 号中断的入口地址
END
整个程序实现IO口的高电平中断,中断好像都没有进去,求请教一下!!
|
|