#include
#define uint unsigned int
uint DIDA=0,SEC=0,MIN=0,HOUR=0,h=0;
code char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void timer0() interrupt 1 using 1
{
TR0=0;
TH0=0x3c;
TL0=0xb0;
DIDA++;
TR0=1;
}
main()
{ uint p,k;
uint KEY();
void CONV();
void ITX();
TMOD=0x01;
TH0=0x3c;TL0=0xb0;
ET0=1;EA=1;
TR0=1;
while(1)
{ if(h==0)
{
P2=0x81;
P0=0x80;
for(p=0;p<200;p++);
}
else
{
P2=0x81;
P0=0x00;
for(p=0;p<200;p++);
}
CONV();
ITX();
P1=0x0f;
if(P1!=0x0f)
{ for(p=0;p<=10000;p++);
if(P1!=0x0f)
{ k=KEY();
if(k==0)
{ MIN++;
if(MIN==60)
{ MIN=0;
HOUR++;
if(HOUR==24)
HOUR=0;
}
}
else if(k==4)
{ HOUR++;
if(HOUR==24)
HOUR=0;
}
}
}
}
}
void CONV()
{
if(DIDA==20)
{
DIDA=0;
SEC++;
h=!h;
if(SEC==60)
{ SEC=0;
MIN++;
if(MIN==60)
{ MIN=0;
HOUR++;
if(HOUR==24)
HOUR=0;
}
}
}
}
void ITX()
{ uint i,j,k,e,p;
i=HOUR/10;
j=HOUR%10;
k=MIN/10;
e=MIN%10;
P2=0x80;
P0=tab[j];
for(p=0;p<200;p++);
P2=0x81;
P0=tab[i];
for(p=0;p<200;p++);
P2=0x82;
P0=tab[e];
for(p=0;p<200;p++);
P2=0x83;
P0=tab[k];
for(p=0;p<200;p++);
}
uint KEY()
{ uint i,k;
unsigned char code tab[16]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,
0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
P1=0x0f;
i=P1;
P1=0xf0;
i=i|P1;
for(k=0;tab[k]!=i&&k<16;k=k+1);
return (k);
}
上一篇:键盘显示模块调试程序
下一篇:单片机进行脉宽调制(PWM) 直流电机调速测试程序
推荐阅读最新更新时间:2024-03-16 15:52
设计资源 培训 开发板 精华推荐
- 揭秘性能爆表的AMD Zen3,采用chiplet设计,总面积83.74平方毫米
- 5G能给卫星带来多大变化?
- 长江存储讲解Xtacking架构技术,堆叠500层不是没可能
- 你见过透明的OLED屏吗?松下这款产品让你大开眼界
- 2020高通骁龙技术峰会即将开播,聚焦最新顶级移动体验
- 【STM32】HAL库 STM32CubeMX教程九---ADC
- 【STM32】HAL库 STM32CubeMX教程十---DAC
- 【STM32】 DMA原理,步骤超细详解,一文看懂DMA
- 【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )
- 【STM32】HAL库 STM32CubeMX教程十三---RTC时钟