27,373
社区成员
发帖
与我相关
我的任务
分享
#include <REGX52.H>
#define uint unsigned int
#define uchar unsigned char
#define true 1
#define false 0
sbit key1 = P3 ^ 4;
sbit key2 = P3 ^ 5;
sbit key3 = P3 ^ 6;
sbit key4 = P3 ^ 7;
sbit dula = P2 ^ 6;
sbit wela = P2 ^ 7;
unsigned char code table[] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
uchar numt0, num;
void delay(uint);
void display(uchar);
void init();
void keyscan();
void main(void) {
do {
keyscan();
display(num);
} while(true);
}
void init() {
TMOD = 0x01;
TH0 = (65536 - 45872) / 256;
TL0 = (65535 - 45872) / 256;
EA = 1;
ET0 = 1;
}
void keyscan() {
if(key1 == 0){
delay(10);
if(key1 == 0){
num = ++num % 60;
while(!key1);
}
}
}
void display(uchar arg) {
uchar shi, ge;
shi = arg / 10;
ge = arg % 10;
dula = 1;
P0 = table[shi];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfe; // 1111 1110
wela = 0;
delay(5);
dula = 1;
P0 = table[ge];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfd; // 1111 1101
wela = 0;
delay(5);
}
void delay(uint arg) {
uint i, k;
for(i = arg; i > 0; --i) {
for(k = 110; k > 0; --k);
}
}