导航:首页 > 编程知识 > 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汇编程序怎么加循环延时相关的资料

热点内容
ps入门必备文件 浏览:348
以前的相亲网站怎么没有了 浏览:15
苹果6耳机听歌有滋滋声 浏览:768
怎么彻底删除linux文件 浏览:379
编程中字体的颜色是什么意思 浏览:534
网站关键词多少个字符 浏览:917
汇川am系列用什么编程 浏览:41
笔记本win10我的电脑在哪里打开摄像头 浏览:827
医院单位基本工资去哪个app查询 浏览:18
css源码应该用什么文件 浏览:915
编程ts是什么意思呢 浏览:509
c盘cad占用空间的文件 浏览:89
不锈钢大小头模具如何编程 浏览:972
什么格式的配置文件比较主流 浏览:984
增加目录word 浏览:5
提取不相邻两列数据如何做图表 浏览:45
r9s支持的网络制式 浏览:633
什么是提交事务的编程 浏览:237
win10打字卡住 浏览:774
linux普通用户关机 浏览:114

友情链接