
代码
#include <reg52.h>
unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code seg[]={0,1,2,3,4,5,6,7};//分别对应相应的数码管点亮,即位码
unsigned char i, j, k, div, in0;
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void delay(unsigned int cnt)
{
while(--cnt);
}
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=0x3C; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
AUSR=0x00;
TL0=0xAF;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
Init_Timer0();
i = 0;
j = 0;
k = 0;
div = 0;
while(1)
{
if(in0 == 1)
{in0 = 0;
if(div == 19)
{div = 0;
if (i == 59)
{i = 0;
if ( j == 59)
{j = 0;
if (k == 23)
k = 0;
else
k = k + 1;
}
else
j = j + 1;
}
else
i = i + 1;}
else
div = div + 1;
}
P2 = seg[0];
P0 = dofly[k/10];
delay(200);
P2 = seg[1];
P0 = dofly[k%10];
delay(200);
P2 = seg[2];
P0 = dofly[j/10];
delay(200);
P2 = seg[3];
P0 = dofly[j%10];
delay(200);
P2 = seg[4];
P0 = dofly[i/10];
delay(200);
P2 = seg[5];
P0 = dofly[i%10];
delay(200);
};
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x3C; //重新赋值
TL0=0xAF;
//LED=~LED; //指示灯反相,可以看到闪烁
in0=1;
}
回复
打赏帖 | |
---|---|
分享汽车防盗系统的组成与分类(一)被打赏5分 | |
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
宏定义和const关键字定义被打赏5分 | |
换取逻辑分析仪】STM32G4从入门到大师之五:ADC中断方式单路采集电压被打赏16分 | |
【换取逻辑分析仪】STM32G4从入门到大师之四:ADC查询方式单路采集电压被打赏14分 | |
【分享开发笔记,赚取电动螺丝刀】几个单片机I2S外设的BLCK时钟对比被打赏20分 | |
【功率监测与控制系统DIY活动成果贴】DIY功率计与LabVIEW数据采集被打赏100分 | |
【分享开发笔记,赚取电动螺丝刀】使用ESP32S3调试I2S音频模块MAX98357被打赏22分 | |
【Freertos】任务管理被打赏10分 | |
分享博世的两种不同的喷射系统模式被打赏5分 |