‘壹’ 单片机有“定时器”,有“计数器”,但是如何实现“计时”呢
你说的计时是想当时钟用吗?
精确一点的话可以用专门的时钟芯片,比如DS1302。
一般的可以用单片机的定时器加软件计数来实现计时,秒,分,时等。比如定时50ms,循环20次就是一秒
‘贰’ 单片机定时器怎么实现时间计时越细越好
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
•设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。
‘叁’ 51单片机怎么实现计时
嘿嘿 还是让俺来帮你解决吧
1 关于定时器定时时间的计算问题:
如果使用的是12M晶振计算,指令周期1uS,定时器是加1计数器,即是对内部时钟即指令周期脉冲计数 每当1uS到时,计数器加1。
假设 定时器的初始值=X,则每到1uS 计数器的值就加1 ,则计数器值=X+1+1+...+1 值越来越大,最后达到FFFFH+1 就会产生溢出 结果计数器值回0(FFFFH+1=65536)
可以推出 定时时间=计数的1的个数×1uS=(65536—X )1 uS
结论: 定时时间跟初始值即时间常数X有关。
如果要定时0.5毫秒=500uS 根据定时时间公式 500=(65536—X )
即X=(65536-500) 一般把高8位送TH0 即 (65536-500)/256
把 (65536-500)%256即除上256后的余数 即低8位数送给TL0
每当定时时间到 计数器值都回0 必须重新送时间常数X
2每条指令的时间怎么算? 答复:
可以查指令表 每一条指令的执行时间的周期数 都是固定的 如 NOP 为一个机器周期
MOV R6,#200; 为2个机器周期
机器周期=12/晶振频率 如果晶振频率=12MHZ 则机器周期=1 uS
就可以知道 ; 执行NOP指令的执行时间为 1 uS
执行MOV R6,#200指令的执行时间为 2 uS
因此 是可以精确计算出指令的延时时间的
呵呵 就介绍这些吧 满意就 给加分吧
‘肆’ 如何用单片机做一个简单的倒计时器
一般我们用定时器来做计时器,实现时间得加。每次中断发生,用一个变量自增来判断时间是否到1S,到了之后清零这个变量,另一个时间变量自增来作时间得增加。现在就是要把这个自增的时间变量改为自减,判断当小于0时,又赋初值,然后继续自减判断。
‘伍’ 单片机上的计时器是如何实现的
你说的太不详细了,单片机里边肯定不是都用时钟的,他的指针移动是要用的,用晶振的分频来实现。
‘陆’ 如何利用51单片机实现一个计时器
方法一:用定时器中断计时模式循环计时。
方法二:用CPU消耗时钟周期指令计时(浪费资源)。
思路:
用定时器中断计时,溢出时形成中断信号,标识为一个基本周期t,所定时间T/t=n为周期循环数,到时形成定时触发信号。
‘柒’ 如何用51单片机实现计时功能啊
程序查询方式吧,查询引脚状态来控制计时器的开停,比如从P1.0输入控制信号,mov c,p1.0 jc
‘捌’ 如何用单片机P0口同时控制两个不同时间(比如一个50秒一个40秒)的倒计时
只是用P0,显示四位数码,困难。