📄 shizhongchengxu.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led_1=P1^0; //秒控制
sbit led_2=P1^1; //分控制
sbit led_3=P1^2; //时控制
sbit led_4=P1^3;
uchar code shuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管字形0,1,2,3,4,5,6,7,8,9
uchar code daidian[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
uchar code *str1=&shuzi[0],*str2=&shuzi[0],*str3=&daidian[0],*str4=&shuzi[0]; //str1、str2分别为秒分指针;str3、str4为时指针
/* 延时子程序 */
void delay(void)
{
unsigned i,j;
for(i=0;i<40;i++)
{for(j=0;j<20;j++)
{}
}
}
timer0() interrupt 1
{static uint t=0;
t++;
TH0=0x3C; //0.05S
TL0=0xB0;
if(t%20==0)
{
if(*str1==0xa4)
{str1=&shuzi[0];str2++;}
else
str1++;
if(*str2==0x82)
{str2=&shuzi[0];str3++;}
if(*(str3--)==0x10)
{str3=&daidian[0];str4++;}
else
str3++;
if((*str3==0x30)&&(*str4==0xf9))
{str3=&daidian[1];str4=&shuzi[0];}
}
}
void display()
{led_1=0;
P0=*str1;
delay();
led_1=1;
led_2=0;
P0=*str2;
delay();
led_2=1;
led_3=0;
P0=*str3;
delay();
led_3=1;
led_4=0;
P0=*str4;
delay();
led_4=1;
}
void main(void)
{
TMOD=0x01; //定时器0方式1
EA=1; //开总中断
ET0=1; //允许定时器0中断
TH0=0x3C; //0.05S
TL0=0xB0;
TR0=1;
while(1)
display();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -