51单片机定时器的汇编语言程序编程,

51单片机定时器的汇编语言程序编程,,第1张

这么简单的要求,不用大动干戈。

看看下面的程序,是不是最简单:

ORG 0000H

SETB TR0 启动T0

MOV R2, #250 定时计数初值

LOOP:

MOV TH0, #(8192 - 8000) / 32 定时8ms

MOV TL0, #(8192 - 8000) MOD 32

JNB TF0, $ 等待8ms

CLR TF0

DJNZ R2, LOOP 每隔8ms,R2减一次一

CPL P1.0 R2为0则LED亮灭转换

LJMP 0000H

END

本程序,已经实验成功。

简单啊。

大致说来就是

你先开启个定时器,根据你选用的

晶振

,计算出你要用定时器定时的基准时间,

就假设是10毫秒吧。

然后给定时器的THx,TLx写入初值,开启中断,进行定时。

然后就等待中断。

在你响应中断的程序中,再次给单片机送入初值,

由于是10毫秒中断一次,因此我们设置几个“软件计数器

比如每此中断,软甲计数器+1,

例如“软件计数器1”在中断程序中计数100次,则是10ms*100=1s

而“软件计数器2”在1的基础上继续计数100次,则是1S*100=100S

而“软件计数器3”在2的基础上继续计数36次,则是100S*36=3600S=1小时。

简单啊。

大致说来就是

你先开启个定时器,根据你选用的晶振,计算出你要用定时器定时的基准时间,

就假设是10毫秒吧。

然后给定时器的THx,TLx写入初值,开启中断,进行定时。

然后就等待中断。

在你响应中断的程序中,再次给单片机送入初值,

由于是10毫秒中断一次,因此我们设置几个“软件计数器”

比如每此中断,软甲计数器+1,

例如“软件计数器1”在中断程序中计数100次,则是10ms*100=1s

而“软件计数器2”在1的基础上继续计数100次,则是1S*100=100S

而“软件计数器3”在2的基础上继续计数36次,则是100S*36=3600S=1小时。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11685459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存