蓝桥杯模块练习6

外部中断控制数码管显示数字增减

外部中断每发生一次,在共阴数码管上显示一个数字,且每中断一次显示的数值增加1(使用INT0)或减少1(使用INT1)(数字范围0-9,起始数码管显示0)。

#include
#include
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9共阴数码管码值
sbit buzzer=P0^6;  			//蜂鸣器
sbit relay=P0^4;  			//继电器
uchar m=0;
void INT_0() interrupt 0
{  

    m++;
	  if(m==10) m=0;               		 	//当m=10时,使其为0 ,使其可以循环 
	  P2=0xc0;P0=0x01;P2=0x00;
	  P2=0xe0;P0=~table[m];P2=0x00;  		//显示数值
}
void INT_1() interrupt 2
{
  if(m==0) m=10;  
     	m--;
  P2=0xc0;P0=0x01;P2=0x0;
	P2=0xe0;P0=~table[m];P2=0x00; 			//显示数值
} 
void main()
{
	P2=0x80;P0=0xff;P2=0x00;    			//关闭8个led灯
	P2=0xa0;buzzer=0;relay=0;P2=0x00;		//关闭蜂鸣器和继电器
   EA=1;    								//打开总中断
	 EX0=1;   								//打开外部中断0
	 IT0=1;   								//设置触发方式下降沿
	 EX1=1;  								//打开外部中断1
	 IT1=1;   								//设置触发方式下降沿
	P2=0xc0;P0=0x01;P2=0x0;
	P2=0xe0;P0=~table[0];P2=0x00;  		  	//打开使其显示为0
	while(1); 
}

你可能感兴趣的:(蓝桥杯)