求请教!!STC32的IO口中断处理
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口的高电平中断,中断好像都没有进去,求请教一下!!
//ISR.ASM
//将下面的代码保存到相同的ISR.ASM,然后将文件添加到项目中即可
CSEG AT 0133H ;P1 口中断入口地址
JMP PXINT_ISR
CSEG AT 013BH ;P2 口中断入口地址
JMP PXINT_ISR
CSEG AT 014BH ;P4口中断入口地址
JMP PXINT_ISR
PXINT_ISR:
JMP 006BH ;借用 13 号中断的入口地址
END
这部分有错已经修改
参考附件例程,设置P0口高电平中断,IO口中断函数里判断中断源翻转对应的P2口。
在主循环里翻转P00,通过示波器可以看到,P00为高电平时,会不断产生中断反复触发P20翻转。
P00为低电平时不产生中断,P20不再翻转。
乘风飞扬 发表于 2023-6-29 10:22
参考附件例程,设置P0口高电平中断,IO口中断函数里判断中断源翻转对应的P2口。
在主循环里翻转P00,通过示 ...
请问STC32可以同时检测同一端口的上升沿和下降沿吗
下面是我的代码:
P2IM0 = 0xff|0x3C;//上升沿中断和下降沿中断 //0011 1100
P2IM1 = 0;
P2INTE = 0xff; //使能 P2 口中断
P2WKUE = 0xff; //使能 P2 口中断唤醒
if(intf2)
{
P2INTF = 0x00;
P2_IO_INTERRUPT=1;
if(flag == 0)//默认是上升沿中断
{
flag = 1;
P2IM0 = 0x00;//设置为下降沿中断
P2IM1 = 0;
}
else if(flag == 1)
{
flag =0;
P2IM0 = 0xff;//设置为上升沿中断
P2IM1 = 0;
}
检测一个开关的两种状态,开关默认关闭,打开和关闭各发送一个数据包 IO口中断只支持以下四种模式:
可以在中断里进行切换。例如脚位是低电平时设置上升沿中断,脚位电平变高后触发上升沿中断,在中断里切换为下降沿产生中断,这样脚位电平变低时会再次触发中断。
页:
[1]