www.ysbm.net > 定时器方式2初值计算

定时器方式2初值计算

1、周期时间T=1/38K=26.3 us,半周期13us(电平翻转,占空比50%)2、使用定时公式计算或者定时器软件工具计算初值(TLx=0xF3,THx=0xF3,晶振12Mhz)

呵呵 正确为你解答:1 可以按定时时间的计算公式, 计算出定时器的时间常数X: 定时时间T=(2的N次方-X)12/单片机晶振频率2 N为定时器的工作方式: 方式0时,N=13 方式1时,N=16 方式2时,N=83 根据定时时间和工作方式,计算出时间常数X 把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了. 例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ 则 定时时间T=(2的16次方-X)12/12MHZ=1000 解出 X=64536=FC18H 呵呵 如满意 请选择满意回答

TMOD=05HTH0=TL0=256-50=206

256-35 =221 void Timer0Init(void) { TMOD = 0x02; //设置定时器模式 TL0 = 221; //设置定时初值 TH0 = 221; //设置定时重载值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 }

你是用什么芯片啊?如果使用的C51系列的话,定时器最大能定时65536us,我们可以定时50毫秒,循环40次,这样就可以完成量秒的定时了.具体算法就是 TH1=(65536-50000)/256; TL1=(65536-50000)%256; (65536-你想定时的时间)/256和%256目的是是给定时器复初值.你可以用中断方法来做,每进入一次中断变量加一,当变量加到40时就是你需要的两秒了. 希望能对您有一点点帮助

方式2是8位自动重装的;TH0=TL0=256-初值,这样就可以了

tmod=0x01;//t0做定时器,工作模式选择模式1:16位定时器,无预分频 由于51单片机1个机器周期等于12个时钟周期.t=1/6mhz*12=2us,即一个机器周期是2us.没有预分频如果要定时10ms则需要10ms/2us=5000次计数.所以可求得初值 th0=(65535-5000)/256; tl0=(65535-5000)%256; 初值就上面这样写就可以了,因为这样看起定时多久来更明了点,当然你也可以求出来.

定时器是通过设定初值,然后单片机在你设定的初值上每个指令周期加1,直到溢出,设置溢出标志位,而计数是对某个IO口的脉冲进行计数.两者最关键区别是定时器的计数脉冲是单片机内部的,计数器的计数脉冲来自输入引脚.定时器的初值的计算如下:在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数.若选择12M晶振,则定时器的计数频率为1MHZ.假设定时时间为T,机器周期为T1,即12/晶振频率.X为定时器初值.则 X=2^n-T/T1.方式0,n=13,方式1时,n=16,方式2和方式3,n=8

初值计算就是要算出一个数字,让加上这个数字后,和为65536的时候,触发定时中断.所以一般的计算方法是【65536-定时时长/时钟周期(12M主频时候,频率是1M的,周期1us)】,你这个方法不是单片机的定时方法,是微机原理中的定时赋初值方法.记得选择为最佳答案.顶下,为人民服务才有热情.

方式2是自动重装初值8位计数器,计数值 =2^8 -初值 =256 -156 =100定时时间 =计数值x输入脉冲周期 =100x1ms =100ms

网站地图

All rights reserved Powered by www.ysbm.net

copyright ©right 2010-2021。
www.ysbm.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com