51单片机实现精确定时

一、51单片机代码

cpp 复制代码
#include <reg52.h>

sbit LED = P3^3;

extern bit b10Ms;
extern bit b100Ms;
extern bit b1S;
extern bit b10S;

void Timer0_Init()
{
    TMOD |= 0x01; // 设置定时器0为模式1
    TH0 = (65536 - 1000) / 256; // 高8位赋初值
    TL0 = (65536 - 1000) % 256; // 低8位赋初值
    EA = 1; // 开启总中断
    ET0 = 1; // 开启定时器0中断
    TR0 = 1; // 启动定时器0
}

void Timer0_ISR() interrupt 1 // 定时器0中断服务函数
{
	static unsigned int b1000MsCnt;
	static unsigned int b10MsCnt;

    TH0 = (65536 - 1000) / 256; // 重新加载初值
    TL0 = (65536 - 1000) % 256;

	if (++b1000MsCnt >= 1000)
	{
		b1000MsCnt = 0;
		b1S = 1;
	}



	
}

void main()
{
    Timer0_Init(); // 初始化定时器0
    while(1)
	{
		
		if (b1S)
		{
			b1S = 0;
		   LED = ~LED; // 取反LED的状态
		}

	}
}

二、Proteus仿真

三、完整资料下载

基于51单片机的LED控制: https://url83.ctfile.com/d/45573183-66541738-df92bf?p=7526 (访问密码: 7526)

相关推荐
zlinear数据采集卡9 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
水果里面有苹果11 小时前
33-TPS62130RGTR-3A降压器
嵌入式硬件
振南的单片机世界12 小时前
推挽vs开漏:一个“强拉硬灌”,一个“只拉不管”
arm开发·stm32·单片机·嵌入式硬件
小心亦新12 小时前
STM32学习23--I2C-1
stm32·嵌入式硬件·学习
小羊先生car13 小时前
F429-HAL-Can总线(回环及双机实验)(2026/8/15)
c语言·单片机·嵌入式硬件·软件构建
嵌入式阿蔡13 小时前
STM32时钟树详解:配错一个全乱套
c语言·stm32·单片机·嵌入式硬件
Dr.kangder14 小时前
嵌入式面试总结(二十)——ISA原理
单片机·面试·职场和发展·系统架构·嵌入式
zlinear数据采集卡15 小时前
数据采集卡从入门到精通(7):流水线型ADC——级级接力,高速与高精的平衡术
开发语言·arm开发·嵌入式硬件·fpga开发·c#
bobuddy15 小时前
CMW500信令测试关键配置要点
嵌入式硬件
花花鱼15 小时前
TinyML Agent:MCU 上的微型智能体,AI 智能体下沉的底层实现
人工智能·单片机·嵌入式硬件