cbai
发表于 2025-4-18 15:05:38
第十四课学习心得:IO口都可以中断,但和外部中断有区别,某个IO只支持上升沿中断、下降沿中断、高电平中断、低电平中断中的一种,如果需要同时检测某种信号是上升沿还是下降沿,要将信号同时接到不同的IO口进行上升沿和下降沿检测;课程介绍了IO中断相关的寄存器:中断使能寄存器、中断标志寄存器、中断模式寄存器、中断优先级控制寄存器;并且介绍了keil中如何扩展中断向量号的方式,使keil支持中断向量号大于31;
cbai
发表于 2025-4-18 16:01:35
cbai 发表于 2025-4-18 15:05
第十四课学习心得:IO口都可以中断,但和外部中断有区别,某个IO只支持上升沿中断、下降沿中断、高电平中断 ...
//数码管显示0:执行while函数1:执行P3_IO中断 2:执行P4_IO中断
void P3_IO_Init(void){ //P3口中断初始化
P3IM0 = 0x00;
P3IM1 = 0xff; //IO口中断模式设置为下降沿
P3INTE = 0x08;//P33口中断使能
}
void P3_IO_Isr(void) interrupt 40 {
u8 intf = P3INTF;
if(intf){
P3INTF = 0; //手动清除中断标志位
if(intf & 0x08){ //判断是否是P33按钮按下
password = 1;//数码管显示1
}
}
}
void P4_IO_Init(void){
P4IM0 = 0x00;
P4IM1 = 0xff;
P4INTE = 0x80; //P47口中断使能
PINIPL |= 0x10;
PINIPH |= 0x10;
}
void P4_IO_Isr(void) interrupt 41 {
u8 intf = P4INTF;
if(intf){
P4INTF = 0;
if(intf & 0x80){
password = 2;
}
}
}
为什么这段程序,在按P47按钮时,数码管显示的时空,没有显示2?