导航:首页 > 编程知识 > 51汇编程序怎么加循环延时

51汇编程序怎么加循环延时

发布时间:2024-10-16 20:31:21

❶ 求做个汇编编程,用双层循环实现100ms的延时

设主频12MHz的51单片机,编一个100ms二重循环的延时程序如下,供参考。其它汇编可以类似编程。
SSSS:MOV R0,#99;本指令是单周期指令,用时1us
KKKK0:DJNZ R0,KKKKK;2us
MOV R1,#125;1us
LLLL0:DJNZ R1,LLLLL;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
LLLLL:SJMP LLLL0;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
KKKKK:SJMP KKKK0;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
RET;2us
这段程序延时时间是
1+99*[2+1+125*(2+1+1+1+1+2)+1+1+1+1+1+2]+1+1+1+1+2=100000us=100ms
可以适当调整循环常数99、125以求减小NOP(空操作指令),使程序更加精练。
dshxxf程序不错,但延时时间是50301us,计算如下1+100*(1+2*250+3)

❷ 51单片机延时函数的问题。晶振是12MHz..需要延时1秒

很简单,for循环也是需要时间的.

当你使用仿真的时候,通常可以在编译器里面查看这段代码的汇编指令.

你可以看书它的用到了多少个汇编指令,然后在你的芯片手册上查询,每一个汇编指令执行需要多少个最小指令周期.最小指令周期才是你说的1um,全部加起来,你就知道你这句话用掉了多少个最小指令.

很明显远远超过了1个最小指令.9秒的的误差算少的了...

所以说,假如你要做1s的延迟,最好使用内部时钟中断来做,直接在程序内部delay延时的话,占用系统资源还算不准...

具体解释下上图,为了拿这5分还真不容易...

首先,进入函数就需要5个汇编指令,这些指令主要是入栈,备份指针的操作,不同的编译器指令不同,但都差不多....当然这5个指令是进入函数只跑一次,占用时间不多,消耗时间最多的是你for循环内部的指令,一个for循环需要8条汇编指令才能实现,而每个汇编指令通常都需要消耗1-2个最小指令循环,具体那个指令消耗几个循环我懒的查手册,不同的芯片不一样,你自己看看你用的芯片手册把....

以上...应该清楚了把..不明白追问,我要是再次无聊的话,会修改回答.

❸ 51单片机用汇编语言设计1S延时子程序,晶振为12MHz。 (麻烦附上详细计算过程以及详细说明,

DELAY1S:
MOV R2,#10 ;1
DELAY1:
MOV R3,#200 ;1*10
DELAY2:
MOV R4,#249 ;1*199*20
DJNZ R4,$ ;2*249*199*10
DJNZ R3,DELAY2 ;2*199*10
DJNZ R2,DELAY1 ;2*10
MOV R2,#250 ;1
DJNZ R2,$ ;2*250
MOV R2,#243 ;1
DJNZ R2,$ ;2*243
RET ;2
以上注释值之和就是延时总时间:T=1000001US约1S

阅读全文

与51汇编程序怎么加循环延时相关的资料

热点内容
给老师发图片压缩文件 浏览:684
html图片背景代码 浏览:763
fgets空文件 浏览:857
传奇物品文件夹 浏览:352
word插入excel图表 浏览:690
xp系统搜索不到本地文件 浏览:39
什么网站可以找到拼团去西藏 浏览:247
javatask 浏览:50
MFC的文件名 浏览:972
cad自动保存的文件怎么关闭 浏览:667
zip文件密码多少 浏览:486
编程培训哪些好 浏览:324
如何把文件夹内容变成文档 浏览:509
小火箭幼儿编程怎么拿积分 浏览:158
火车票时刻表及票价数据库 浏览:94
求平均值java 浏览:767
linux如何分屏显示 浏览:257
手机可以直接填写pdf文件么 浏览:554
linux虚拟光驱软件 浏览:836
米2s最好的版本 浏览:640

友情链接