51单片机定时器参数计算

您所在的位置:网站首页 三菱脉冲定时器参数设置 51单片机定时器参数计算

51单片机定时器参数计算

2024-07-09 12:04| 来源: 网络整理| 查看: 265

文章目录 计算相关文档寄存器TCONTMOD模式0模式1模式2模式3 15系列单片机计算

计算

晶振为:12MHz 定时器0,16位定时器模式 TMOD & = 0xF0; TMOD |= 0x01; 如果是1ms定时,那么TH0和TL0如何算呢? 其中一个脉冲得时间 t = 1 ∗ 12 / 12 M = 1 u s t = 1*12/12M = 1us t=1∗12/12M=1us

1 u s ∗ 1000 = 1 m s 1us*1000 = 1ms 1us∗1000=1ms

为什么要乘以12呢?因为51单片机12T得,所以16位定时器得初值要设置为(65536-1000) 所以TH0高8位为(65536-1000)/256,低八位为(65536-x)%256 (注:2^8=256) 所以: TH0 = (65536-1000)/256; TL0 = (65536-1000)%256; 因此定时器初始化得配置为: (注意,因为16位模式不是自动重装,因此要在中断程序中,重装初值!)

#include "reg51.h" #define uchar unsigned char #define uint unsigned int sbit LED = P2^0; void Timer0Init() //1ms定时器 { TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TH0 = (65536-1000)/256; //设置定时初值 TL0 = (65536-1000)%256; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计 ET0 = 1; EA = 1; } void Timer0Handle() interrupt 1 { TH0 = (65535-1000)/256; //设置定时初值 TL0 = (65535-1000)%256; //设置定时初值 LED = ~LED; } void main() { Timer0Init(); EA = 1; while(1) { } }

可以看一下下图得仿真结果,示波器接的是LED口。如果你要2ms得定时,将1000改为2000就行了

在这里插入图片描述

相关文档

参考stc89c52官方文档

寄存器

在这里插入图片描述

TCON

在这里插入图片描述

TMOD

在这里插入图片描述

模式0

在这里插入图片描述

模式1

在这里插入图片描述

模式2

在这里插入图片描述

模式3

在这里插入图片描述

在这里插入图片描述

15系列单片机计算

晶振为12M,并且为1t 所以定时器增加一加1/12M的时间。 那么5ms需要5ms*12M = 60000 所以65536-60000 = 5536 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3