
#define uc unsigned char
uc code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} //共阴极0到9
uc ms50,s//定义变量:50毫秒,秒
void timer0(void) interrupt 1 using 0
{
TL0 = 0xb0
ms50++
if(ms50==20)/嫌派蠢/定时1秒
{
ms50=0s++
P0=table[s/10]//分解出十位芹陪
P2=table[s%10]//分解出个?
}
if(s==60)s=0//超过1分钟,恢复为0秒
}
void main(void)
{
ms50=0
s=0
TMOD = 1//0000 0001,也就是T0(低四位有效),定时(第三位),方式1(最低位01)
TH0 = 0x3c//定时器赋予初值,定时0.05秒
TL0 = 0xb0
EA = 1 //总中断允许
ET0 = 1//定时中断0,允许羡碰
TR0 = 1//启动定时器
while(1)
}
这个行闹程序可以实现秒的计时,按键控制开始、暂停、清零功能,更多功能自己在贺兆看清程序的基档拍罩础上进行改进。
#include <reg51.H>
sbit P3_5 =P3^5
unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00}
unsigned char second
unsigned char keycnt
unsigned int tcnt
void main(void)
{
unsigned char i,j
TMOD=0x02
ET0=1
EA=1
second=0
P1=dispcode[second/10]
P2=dispcode[second%10]
while(1)
{
if(P3_5==0)
{
for(i=20i>0i--)
for(j=248j>0j--)
if(P3_5==0)
{
keycnt++
switch(keycnt)
{
case 1:
TH0=0x06
TL0=0x06
TR0=1
break
case 2:
TR0=0
break
case 3:
keycnt=0
second=0
P1=dispcode[second/10]
P2=dispcode[second%10]
break
}
while(P3_5==0)
}
}
}
}
void t0(void) interrupt 1 using 0
{
tcnt++
if(tcnt==4000)
{
tcnt=0
second++
if(second==100)
{
second=0
}
P1=dispcode[second/10]
P2=dispcode[second%10]
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)