用INT0中断控制LED闪烁方式
用单片机P1脚控制8个LED灯闪烁,按下K1键换另一各闪烁方式。
K1键一端连着INT0 (P3^2),一端连着地
原来的闪烁方式
void main() { while(1) { P1=0xaa; Delay500ms(); P1=0x55; Delay500ms(); } }
新的闪烁方式放在中断函数中
//用新闪烁方式闪烁5次后,返回主函数,用原方式断续闪烁
void int_0() interrupt 0 //中断号为0,表示用INT0中断 { unsigned int i=0; while(i<5) { P1=0xf0; Delay500ms(); P1=0x0f; Delay500ms(); i++; } }
因为是用INT0,所以中断号是0 即interrupt 0
要用到中断INT0,
要把总中断开关打开,即EA=1
再把INT0中断开关打开,即EX0=1;
因为INT0脚 (P3^2)通过K1按键连着地,所以触发方式选择低电平,即IT0=0
把以上三个条件写入主函数
void main() { EA=1; EX0=1; IT0=0; while(1) { P1=0xaa; Delay500ms(); P1=0x55; Delay500ms(); } }
用外部中断和两个寄存器有关
IE寄存器:
TCON寄存器: