标题: 中断控制四位数码管 [打印本页]
作者: 123345 时间: 2016-7-3 19:24
标题: 中断控制四位数码管
#include<reg51.h>
unsignedchar code LED_MOD_ANODE[]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
unsignedchar code BIT_CONTROL[]={0x01,0x02,0x04,0x08};
unsignedchar LED_COM[]={0xff,0xff,0xff,0xff};
unsignedchar code key_buf[]={0xee,0xde,0xbe,0x7e,
0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,
0xe7,0xd7,0xb7,0x77};
unsignedint n = 0;
voiddelay(unsigned char m){
for(;m>0;m--){
unsigned char i;
for(i=125;i>0;i--);
}
}
voiddisplay(){
unsigned char j;
for(j=0;j<4;j++){
P0=LED_MOD_ANODE[LED_COM[j]];
P2=BIT_CONTROL[j];
delay(2);
P2=0x00;
}
}
voidgetkey(void) interrupt 0 using 1{
char key_scan[]={0xef,0xdf,0xbf,0x7f};
unsigned char i=0,j=0;
EA=0;
for(i=0;i<4;i++){
P1=key_scan;
for(j=0;j<16;j++){
if(P1==key_buf[j]){
LED_COM[0]=LED_COM[1];
LED_COM[1]=LED_COM[2];
LED_COM[2]=LED_COM[3];
LED_COM[3]=j;
k++;
if(n>4) {LED_COM[0]=LED_COM[1]=LED_COM[2]=0X10;n=1;}
break;
}
}
}P1=0x0f;EA=1;
}
voidmain(){
unsigned char i=0;
LED_COM[0]=LED_COM[1]=LED_COM[2]=LED_COM[3]=0X10;
display();
P1=0x0f;
IT0=1;
EX0=1;
EA=1;
while(1){
display();}
}
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |