这个单片机汇编语言延时时间怎么算

这个单片机汇编语言延时时间怎么算,第1张

第一个延时,mov指令一个时钟,第二个DJNZ跳转是三个时钟,不跳转两个时钟,从255(0FFH)开始每次减一,255次,共2553-1=764次,最后一次不跳转,只有两个时钟,所以减一,再加上第一条指令的一个时钟,结果是255个时钟,如果时钟周期是一微秒,那么延时了255微秒。第二个延时程序有两个循环,结果是(765+3)765个时钟,再乘以时钟周期就是延时时间了。自己分析吧。

你可以采用单片机中的定时器/计时器,一般都是8位的,也有16位的,采用中断方式。

8位定时器中断间隔的计算:1/晶振频率x256,比如单片机采用1M频率的晶振,1/1000000x256,那么这个定时器中断2次间的间隔时间为256us(微秒)。

你只要在中断程序中用个寄存器计数,每+1就是256us,1秒约为3906个中断间隔

DELAY: MOV R7,#10 ;1

D1: MOV R6,#200 ;101

D2: MOV R5,#250 ;102001

DJNZ R5,$ ;102002502

DJNZ R6,D2 ;102002

DJNZ R7,D1 ;102

RET ;2

Total=1+103+20003+20002502+2=1006035,如果晶振为12M的话,约1秒

4只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。

;用最直接的方式实现流水灯

ORG 0000H

START:MOV P1,#01111111B ;最下面的LED点亮

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

MOV P1,#10111111B ;最下面第二个的LED点亮

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略)

LCALL DELAY

LCALL DELAY ;延时60秒

MOV P1,#11101111B

LCALL DELAY

LCALL DELAY ;延时60秒

MOV P1,#11110111B

LCALL DELAY

LCALL DELAY ;延时60秒

MOV P1,#11111011B

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

LCALL DELAY ;完成第一次循环点亮,延时约025秒

AJMP START ;反复循环

;延时子程序,12M晶振延时约250毫秒

DELAY: ;大约值:2us2562562=260ms,也可以认为为250ms

PUSH PSW ;现场保护指令(有时可以不加)

MOV R4,#240

L3: MOV R2 ,#00H

L1: MOV R3 ,#00H

L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)

DJNZ R2 ,L1 ; 中层循环:256次

DJNZ R4 ,L3 ;外层循环:240次

POP PSW

RET

END

以上就是关于这个单片机汇编语言延时时间怎么算全部的内容,包括:这个单片机汇编语言延时时间怎么算、单片机汇编语言怎么计算延时程序的、单片机汇编语言延时程序时间问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9289537.html

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

发表评论

登录后才能评论

评论列表(0条)

保存