📄 update01.c
字号:
#include <reg52.h> /* 预处理命令 */
#include <absacc.h>
#include <stdio.h>
#define SECOND 62
unsigned int count; /* 定义用于500微秒计数器的整型变量 */
void dlms(unsigned char d);
//段码表
unsigned char code Table[14] = {0x77,0x24,0x5d,0x6d,0x2e,0x6b,0x7b,0x25,0x7f,0x6f,0x08,0x1f,0x3f,0x80};
/* 0 , 1 , 2, 3, 4, 5, 6, 7, 8, 9, - , p , A , . */
//
//要显示的字符
unsigned char idata dis_buf[6]={0,0,0,0,0,0};
// 低位, 高位,
//根据数组中的内容在段码表中查出要显示的字符,LED上显示的字符为9,2,3,P,5,6
struct time { /* 定义用于时、分、秒的结构变量*/
unsigned char hour; /* 时 */
unsigned char min; /* 分 */
unsigned char sec; /* 秒 */
};
struct time clocktime; /* 当前时间 */
//dis_buf[0]为显示的高位
void display(unsigned char *p){
unsigned char sel,i;
sel=0x01;
for(i=6;i>0;i--){
P0=Table[*p];
P2=sel;
dlms(10);
p++;
sel=sel<<1;
}
}
timer0() interrupt 1 using 2 /* 定时器T0中断服务程序 */
{
if( ++count == SECOND ) { /* 每次中断时微秒计数器加1 */
count = 0;
//display(dis_buf);
// update(&clocktime);
if (clocktime.sec/0X0a < 1){
dis_buf[5]=clocktime.sec;
dis_buf[4]=0;
//dis_buf[3]=0;
//dis_buf[2]=0;
//dis_buf[1]=0;
//dis_buf[0]=0;
}
else if((clocktime.sec/0X0A) >= 1){
dis_buf[5]=clocktime.sec % 0X0a;
dis_buf[4]=clocktime.sec / 0X0A;}
if( ++clocktime.sec == 60 ) { /* 秒处理 */
clocktime.sec = 0;
if( ++clocktime.min == 60 ) { /* 分处理 */
clocktime.min = 0;
if( ++clocktime.hour == 25 ) { /* 小时处理 */
clocktime.hour = 1;
}
}
}
//dis_buf[3]=0;
//dis_buf[2]=0;
//dis_buf[1]=0;
//dis_buf[0]=0;
if (clocktime.min/0x0a < 1)
{
dis_buf[3]=clocktime.min;
dis_buf[2]=0;
}
else if ((clocktime.min) >=1){
dis_buf[3]=clocktime.min % 0X0a;
dis_buf[2]=clocktime.min / 0X0A;
}
}
display(dis_buf); dlms(3);
}
//}
void dlms(unsigned char d)
{
//unsigned char d;
unsigned char i,j;
for(i=d;i>0;i--)
{
for(j=1000;j>0;j--)
{;};
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -