📄 sz1.c
字号:
/*******************************************************************************************************************************************
2008年3月15日单片危微机控制应用技术、张大明
p0 p3动态共阴数码管Fosc=6MHz p256
*******************************************************************************************************************************************/
#include<reg52.h>
#define ucher unsigned char
code uchar TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar sz[6];
unsigned int i,a,b,c,sww,ww,qw,bw,sw,gw; /*定义sww,ww,qw,bw,sw,gw为方便调用,秒数a必须用无符号整型数(最大65535)
计数值才能大于12h(43200s)*/
void bin_hms(void) /*将a中秒数转化为时分秒子函数*/
{if(a>=46800)a=a-43200;
sww=sz[0]=a/36000;
ww=sz[1]=a/3600%10;
qw=sz[2]=a%3600/600;
bw=sz[3]=a%3600/60%10;
sw=sz[4]=a%60/10;
gw=sz[5]=a%60%10;
}
void delay (void)
{
for(i=0;i<12;i++)
{;}
}
void disp(void)
{
while(!TF1)
{
p1=0x00;
p3=0xdf;
bin_hms();
for(b=0;b<6;b++)
{p1=TAB[sz[b]];
delay();
if(p3==0xfe)break;
p1=0x00;
p3=p3<<7|p3>>1;
if(TF1==1)break;
}
}
}
main()
{a=0;TMOD=0x10;
while(1)
{
for(c=0;c<10;c++)
{TH1=0x3c; /*计数器初值T1=3CE2H时,计满数为100ms*/
TL1=0xE2; /*计时不准确可以调整T1的计数初值*/
tr1=1;
disp(); /*在显示子函数只能够等待计满一个100ms*/
TF1=0;
}
a++; /*10次100ms为1s,秒计数器加1*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -