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)

相关推荐
jianqiang.xue1 小时前
ESP-IDF保姆级入门02|Ubuntu24.04搭建EIM-GUI开发环境,打通Windows_Linux双平台统一开发
stm32·单片机·物联网
无垠的广袤2 小时前
【工业树莓派 CM0 Dev Board】扩展板设计
linux·python·嵌入式硬件·pcb设计·模块化·传感器
嵌入式-老费2 小时前
esp32开发与应用(添加数据分区)
单片机·嵌入式硬件
嵌入式-老费3 小时前
esp32开发与应用(OTA升级)
嵌入式硬件
CYLAM20256 小时前
STC32G 单片机0.96“OLED 西历农历可调万年历 (1901-2100)
单片机·嵌入式硬件·stc32g·万年历·西历农历·0.96”oled 12864·4x4 矩阵键盘
Discipline~Hai6 小时前
ARM03-蜂鸣器和中断
c语言·arm开发·单片机·嵌入式硬件·嵌入式
KaifuZeng7 小时前
电源面试问题汇总一
单片机·嵌入式硬件·面试·电路
驱动探索者9 小时前
RISC-V PLIC 深度解析:从 Spec 到 Zephyr 驱动实现
单片机·嵌入式硬件·中断控制器
LCG元9 小时前
STM32 FreeRTOS 实战:任务调度 + 互斥锁 + 消息队列 + 串口命令解析器
stm32·单片机·嵌入式硬件
Hello_Damon_Nikola9 小时前
姿态式饮水量估算从原理到实战
嵌入式硬件