/*************************************************************************
首先祝大家在蓝桥杯比赛上能取得好成绩
以下代码为我利用手头上的开发板(QX-MCS51)写下的小程序
利用计时器计时,数码管显示来实现的计时秒表,但运行起来总会出错还找不到错误位置,求各位大神帮忙看一下
*************************************************************************/
#include <reg52.h>
#define u8 unsigned char
#define u16 unsigned int
sbit DU = P2^6;
sbit WE = P2^7;
sbit S2 = P3^0;
u8 code SMGdu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 code SMGwe[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 a,b,c,ms;
void SMGHS() //数码管显示函数
{
static u8 wei;
P0 = 0xff;
WE = 1;
P0 = SMGwe[wei];
WE = 0;
switch(wei)
{
case 0:DU = 1;P0 = SMGdu[a%10];DU = 0; break;
case 1:DU = 1;P0 = SMGdu[a/10];DU = 0; break;
case 2:DU = 1;P0 = 0x40;DU = 0; break;
case 3:DU = 1;P0 = SMGdu[b%10];DU = 0; break;
case 4:DU = 1;P0 = SMGdu[b/10];DU = 0; break;
case 5:DU = 1;P0 = 0x40;DU = 0; break;
case 6:DU = 1;P0 = SMGdu[c%10];DU = 0; break;
case 7:DU = 1;P0 = SMGdu[c/10];DU = 0; break;
}
wei++;
if(wei == 8)
wei = 0;
}
void Delay_ms(u16 n) //延时函数
{
u8 j;
while(n--)
for(j=0;j<113;j++);
}
void time0init() //计时器初始化函数
{
EA = 1;
ET0 = 1;
TR0 = 1;
TMOD = 0x01;
TH0 = 0xf8;
TL0 = 0xcc; //放入计时初值(2ms)
}
void main()
{
time0init(); //调用初始化函数
while(1)
{
if(ms == 5)
{
ABC:
ms = 0;
a++; //a为10ms位
if(a == 100)
{
a = 0;
b++; //b为 s 位
if(b == 60)
{
b = 0;
c++; //c为 min 位
if(c == 60)
c = 0;
}
}
}
if(S2 == 0) //按下S2暂停计时
{
Delay_ms(10);
if(S2 == 0)
{
while(S2 == 0);
while(1)
{
if(S2 == 0) //再次按下S2开始计时
{
Delay_ms(10);
if(S2 == 0)
{
while(S2 == 0);
goto ABC;
}
}
}
}
}
}
}
void timer0()interrupt 1
{
TH0 = 0xf8;
TL0 = 0xcc; //重放初值
ms++;
SMGHS();
}共1条
1/1 1 跳转至页
求助!利用计时器和数码管写的秒表,误差比较大
关键词: 蓝桥训练 程序 数码管 计时器
共1条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
我要赚赏金打赏帖 |
|
|---|---|
| Chaos-nano:专为低资源单片机设计的轻量级协作式异步操作系统(ATMEGA328P轻量级操作系统)—— 详细介绍被打赏¥16元 | |
| FPGA配置被打赏¥10元 | |
| Chaos-nano协作式异步操作系统:赋能MicrochipAVR8位单片机的革新之路被打赏¥15元 | |
| 基于esp32开发时串口工具的注意点被打赏¥24元 | |
| 基于FireBeetle2ESP32-C5开发板的舵机控制被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】MAX78000开发板制作的电子相册被打赏¥32元 | |
| 基于FireBeetle2ESP32-C5开发板的超声波测距及显示被打赏¥21元 | |
| FireBeetle2ESP32-C5上RTC电子时钟的实现被打赏¥25元 | |
| 【分享开发笔记,赚取电动螺丝刀】MAX78000开发板读取SD卡被打赏¥23元 | |
| 【S32K3XX】Standby RAM 重启后数据异常问题调查被打赏¥38元 | |
我要赚赏金
