📄 main.c
字号:
#include <reg51.h>
unsigned long count = 0;
unsigned long show_count = 0;
unsigned char digest[11] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x83,0xF8,0x80,0x98,0xC6};
unsigned char scancode[8] = {0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80};
sbit P1_0 = P1^0;
#define HIGH_BIT 0xFB
#define LOW_BIT 0x80
void Disp(int id)
{
P2 = 0;
P2 = scancode[id];
P0 = 0xff;
switch (id)
{
case 0: P0 = digest[(show_count / 10000000) % 10]; break;
case 1: P0 = digest[(show_count / 1000000) % 10]; break;
case 2: P0 = digest[(show_count / 100000) % 10]; break;
case 3: P0 = digest[(show_count / 10000) % 10]; break;
case 4: P0 = digest[(show_count / 1000) % 10]; break;
case 5: P0 = digest[(show_count / 100) % 10]; break;
case 6: P0 = digest[(show_count /10) % 10]; break;
case 7: P0 = digest[show_count % 10]; break;
}
}
void Timer0() interrupt 1
{
static unsigned int scount = 0;
static unsigned char rcount = 0;
TH0 = HIGH_BIT;
TL0 = LOW_BIT + 34;
scount++;
if (scount == 800) //1 second
{
scount = 0;
show_count = count;
count = 0;
}else if (scount % 2 == 0)
{
rcount++;
if (rcount == 8) rcount = 0;
Disp(rcount);
}
count += (TH1 << 8) | TL1;
TH1 = TL1 = 0;
}
void main()
{
TMOD = 0x51;
// 11.0592 Mhz 1.152 ms
TH0 = HIGH_BIT;
TL0 = LOW_BIT;
//initalize output counter
TH1 = 0;
TL1 = 0;
EA=1;
ET0=1;
TR0=1;
TR1=1;
for (;;);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -