📄 jiaotongdeng.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define led P0
#define light 0xcc
#define smg P2
uchar code key_rl[]={0,0,1,0,2,0,0,0,3,};
uchar led_f=0;
uchar sec=24;
uchar sec_num=20;
uchar sec_bufer=24;
uchar key_num=0;
uchar key_bufer=0;
void delay(uint ms)
{while(ms--);
}
void set_timer()
{TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
TR0=1;
ET0=1;
EA=1;
}
void timer0() interrupt 1
{uchar new;
if(sec_num)
{sec_num--;goto over;}
else {sec_num=20;}
if(sec){sec--;
new=(sec/10)<<4 | sec%10;
P2=new;
goto over;}
else {sec=sec_bufer;
new=(sec/10)<<4 | sec%10;
P2=new;
led=~led;
goto over;}
over:TH0=0x3C;
TL0=0xB0;
}
uchar get_key()
{uchar key_h,key_l,key,k,j;
P1=0xf0;
if(P1==0xf0){key=0xff;goto back;}
delay(2000);
P1=0xf0;
if(P1==0xf0){key=0xff;goto back;}
P1=0xf0;key_h=~P1;
P1=0x0f;key_l=~P1;
key_h>>=4;
key_h=key_rl[key_h];
key_l=key_rl[key_l&0x0f];
key=key_h*4+key_l; //键值为0~15
waiton: P1=0xf0;
if(P1!=0xf0)goto waiton;
back:return (key);
}
deal_key(uchar key)
{ if(key==10);
else if (key==11)
{sec=key_bufer;
sec_bufer=key_bufer;
key_num=0;
sec_num=20;
}
else
{ if(key_num==0)
{key_bufer=key;key_num=1;}
else if(key_num==1)
key_bufer=key_bufer*10+key;
else if(key_num==2);
else ;
}
}
void main()
{uchar key;
delay(5000);
P0=light;
smg=0;
set_timer();
judge: do
key=get_key();
while(key==0xff);
deal_key(key);
goto judge;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -