📄 新建 文本文档.txt
字号:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define TURE 1
#define FALSE 0
void disp(void);
void delay(del);
void bcd(void);
void shan(void);
void delay10(dell);
void tkey(void);
int temp;
int f;
uchar count;
uchar data clock[3]={23,50,50};
uchar data num[6];
/************主程序*************/
void main(void)
{
temp=0xff;
f=1;
P1=0xff;
count=20;
SP=0X60;
TMOD=0X01;
SCON=0X00;
TL0=0XB0;
TH0=0X3C;
EA=1;
IT0=1;
ET0=1;
TR0=1;
EX0=1;
while(TURE)
{
return1:bcd();
disp();
delay(5000);
if (temp==0xff)
goto return1;
tkey();
shan();
disp();
delay10(4000);
}
}
/**********按键程序************/
void tkey(void)
{
uchar judcekey;
judcekey=P1&0x0f;
if(judcekey==0x0f)
goto return2;
/*******移位键*********/
if (judcekey==0x0e)
f++;
if (f==4)
f=1;
/**********加一键*********/
if(judcekey==0x0d)
{clock[f-1]++;}
if (f==1)
{ if (clock[f-1]==24){
clock[f-1]=0;}
}
else{ if (clock[f-1]==60)
clock[f-1]=0;
}
/******减一键***********/
if(judcekey==0x0b)
{clock[f-1]--;}
if (f==1)
{ if (clock[f-1]==0xff){
clock[f-1]=23;}
}
else
{ if (clock[f-1]==0xff)
clock[f-1]=59;
}
return2:_nop_();
}
/*******闪烁程序***********/
void shan(void)
{
if (f==1)
{
num[0]=10; //时闪
num[1]=10;
}
if (f==2)
{
num[2]=10;//分闪
num[3]=10;
}
if (f==3)
{
num[4]=10;//秒闪
num[5]=10;
}
}
/*******十位个位转换************/
void bcd(void)
{
num[5]=clock[2]-(clock[2]/10)*10 ;
num[4]=clock[2]/10;
num[3]=clock[1]-(clock[1]/10)*10 ;
num[2]=clock[1]/10;
num[1]=clock[0]-(clock[0]/10)*10 ;
num[0]=clock[0]/10;
}
/********定时程序*************/
void timer1() interrupt 1 using 2
{
TL0=0XB0;
TH0=0X3C;
count--;
if(count==0)
{
count=20;
clock[2]++;//秒//
}
else
goto out;
if(clock[2]==60)
{
clock[2]=0;
clock[1]++;//分//
}
if(clock[1]==60)
{
clock[1]=0;
clock[0]++;
}
if(clock[0]==24)//时//
clock[0]=0;
out:_nop_();
}
/************显示程序*************/
void disp(void)
{uchar code LEDValue[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF}; //0-9
uchar k;
for(k=0;k<=5;k++)
{
SBUF=LEDValue[num[5-k]];
while(TI==0);
TI=0;
}
}
/*******外部中断***********/
void intr0() interrupt 0 using 2
{
;
}
/************延时程序*************/
void delay(del)
{
for(del;del>0;del--);
}
/*****延时程序***********/
void delay10( dell)
{
float i,j;
for(dell;dell>0;dell--)
for(i=1000;i<0;i--)
for(j=5000;j<0;j--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -