C51单片机毫秒级秒表程序
2025-09-28 来源:bilibili
最近在学c51,在网站上没怎么搜到现成的代码,b站上的视频也是没找到什么有用的,我就自己写了一个,已经通过实验是可以跑的,各位大佬对我写的有什么问题可以指点下。
#include <reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;//数码管的位选
u8 code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; //不带小数点的共阴极数码管段选
u8 code table1[]={0xbf,0x86,
0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //带小数点的供阴极数码管段选
static u16 xi;//全局变量通过1ms的定时中断
u8 timer[]={0,0,0,0,0,0,0,0};//存取时间
void Timer0Init()//中断
{
TMOD|=0X10;
TH1=0XFC;
TL1=0X18;
ET1=1;
EA=1;
TR1=1;/
}
void delayms(u8 x) //延时函数
{
u8 i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void DigDisplay()//数码管显示函数
{
u8 i;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break;
}
if((i==2)||(i==4)||(i==6))
{
P0=table1[timer[i]];
}
else
P0=table[timer[i]];
delayms(5);
P0=0x00;//ÏûÒþ
}
}
void chuli()//处理函数通过定时器每1ms的中断得到一个自增数
{
if(xi=10)
{
timer[0]++;
xi =0;
}
if(timer[0]==10)
{
timer[0]=0;
timer[1]++;
}
if(timer[1]==10)
{
timer[1]=0;
timer[2]++;
} //ms
if(timer[2]==10)
{
timer[2]=0;
timer[3]++;
}
if(timer[3]==6)
{
timer[3]=0;
timer[4]++;
} //s
if(timer[4]==10)
{
timer[4]=0;
timer[5]++;
}
if(timer[5]==6)
{
timer[5]=0;
timer[6]++;
} //min
if(timer[6]==10)
{
timer[6]=0;
timer[7]++;
}
if(timer[7]==10)
{
timer[7]=0;
}
}
void main()//主函数
{
Timer0Init(); //定时器中断
while(1)
{
chuli();
DigDisplay();
}
}
void Timer0() interrupt 3
{
TH1=0XFC;
TL1=0X18;
xi++;
}
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策




