51单片机定时器参数计算 |
您所在的位置:网站首页 › 三菱脉冲定时器参数设置 › 51单片机定时器参数计算 |
文章目录
计算相关文档寄存器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 |