外部中断应用实例例7
1用按键控制的一位LED数码管显示系统1)硬件电路图7-2为硬件原理图
其中LED数码管的控制显示连接与例6
4相同,PA口工作于输出方式,作为LED数码管的段码输出,LED数码管的位信号接地,因此这个一位的LED数码管工作于静态显示方式
图中使用了两个按键K1、K2,按键的一端分别与PD2(INT0)、PD3(INT1)连接
INT0和INT1作为外部中断的输入,采用电平变化的下降沿触发方式,当K1(K2)按下时,会在PD2(PD3)引脚上产生一个高电平到低电平的跳变,触发INT0或NT1中断
系统的功能还是控制一个8段数码管显示“0”-“F”16个十六进制的数字
当系统上电时,显示“0”
K1键的作用是加“1”控制键:按1次K1键,显示数字加1,依次类推
当第15次按K1键时,显示“F”,第16次按K1键,显示又从“0”开始
K2键的作用是减1控制键:按1次K1键,显示数字减1,减到“0”后,再从“F”开始
#includeflashcharled_7[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};charcounter;//INT0中断服务程序interrupt[EXT_INT0]voidext_int0_isr(void){if(++counter>=16)counter=0;}//INT1中断服务程序interrupt[EXT_INT1]voidext_int1_isr(void){if(counter)--counter;elsecounter=15;}voidmain(void){PORTA=0xFF;DDRA=0xFF;GICR|=0xC0;//允许INT0、INT1中断MCUCR=0x0A;//INT0、INT