初学者 关于定时器的疑惑

2019-07-16 05:15发布

我们只使用一个定时器,并工作于工作方式1

首先设定一个预置值,比如03CBOH (即 15536),等待其溢出,中间经历的是50000T

以24GHz为例,就是50ms

然后走20次,为1S

我的问题就是,那50ms是在什么过程中被执行掉的。。。。




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
xieshaobao228
1楼-- · 2019-07-16 08:57
防止一楼太长- -。。。

我刚开始接触延时,是这样的汇编

DY5MS:   MOV R6,#20   
DY5MS1:  MOV R7, #250  
DJNZ R7,$   
DJNZ R6,DY5MS1
RET
DY1S:    MOV R5,#200
DY1S1:   ACALL DY5MS
         DJNZ R5,DY1S1
         RET         
         END


这种延时精度不高,但是每次走程序我能明白,执行的时间花在哪里

但是关于定时器,我从ppt上引出一个例子。。。




start:(里面的初始化,不细写)
loop:ajmp loop
TIME0:    MOV  TL0,  #0B0H     
MOV  TH0,  #3CH
DJNZ  30H,  TIME1     ;
CRL:P1.0  
MOV  30H, #20 ;
TIME1:RETI
END



(排版可能不好。。见谅)。。。



xieshaobao228
2楼-- · 2019-07-16 14:30
 精彩回答 2  元偷偷看……
lstcspring
3楼-- · 2019-07-16 17:21
定时器一个相对独立的模块,定时器工作时,你的程序可以做其它事情!
thwin
4楼-- · 2019-07-16 19:03
不懂,观望中。
非法菜鸟
5楼-- · 2019-07-16 20:59
计时器是独立工作的
lovezjf234
6楼-- · 2019-07-17 02:05
定时器其实就是一个累加器或者累减器,当然你的是累加的过程,我们的定时器一般都是16位或者8位,你的是16位,那么累加的最大值就是65536,如果以冯诺依曼结构的话,一般还有一个12分之1的分频,所以以12M晶振计算的话,那么累加器加1就需要耗费1us,所以在开始的时候你给定时器赋值15536,如果累加到65536的时候需要50000us也就是50ms会溢出,TF0中断标志位就会置1,进入中断!也就是你进入中断需要耗费50个ms,进入20次累计1s.(注意进入中断需要给计数器重复赋值)

一周热门 更多>