📄 sheji11.c
字号:
//数码管为共阳管,COM高电平时对应的数码管导通
//
#include "AT89X51.H"
#define uchar unsigned char
#define uint unsigned int
uchar code Table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar data i=0,j=0,k=0,q=0; //i个位,j十位,k百位,q千位
uint data dt=0;
//函数申明
void calc(uint);
display(void);
void delay1ms(void);
start(void);
void main(void)
{start();
display();
while(1);
}
//按键加1中断子程序
void T0add() interrupt 1 using 0
{EA=0;
if(dt!=9999)
{dt++;
calc(dt);
}
else
{dt=0;
calc(dt);
}
start();
}
//按键减1中断子程序
void T1SUB() interrupt 3 using 1
{EA=0;
if(dt!=0)
{dt--;
calc(dt);
}
else
{dt=0;
i=j=k=q=0;
}
start();
}
//按键清零中断子程序
void int1zero() interrupt 0 using 2
{EA=0;
dt=0;
i=j=k=q=0;
start();
}
//数码管显示函数
display()
{
while(1)
{P2=0xEF;
P0=Table[i];
delay1ms();
P2<<=1;
P0=Table[j];
delay1ms();
P2<<=1;
P0=Table[k];
delay1ms();
P2<<=1;
P0=Table[q];
delay1ms();
}
}
//计算数据个、十、百、千位函数
void calc(uint d)
{i=d%10;
j=(d/10)%10;
k=(d/100)%10;
q=d/1000;
}
//延迟1MS函数
void delay1ms(void)
{uint a;
for(a=0;a<1000;a++);
}
//初始化函数
start()
{TMOD=0x66;
TH0=TL0=0xFF;
TH1=TL1=0xFF;
EX0=1;
IT0=0;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -