如何利用单片机汇编指令编程实现延时10ms?利用汇编指令设计多重循环编程实现20ms延时?

如题所述

这是调用一个延时10毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了

DELAY10MS:
MOV R2,#20
DELAY10MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY10MS1
RET

这是调用一个延时20毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了

DELAY20MS:
MOV R2,#40
DELAY20MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY20MS1
RET

RETRET的作用是子程序返回。调用一个子程序,当单片机执行到RET语句的时候,单片机就会返回到调用的地方并继续向下执行。

下面给你一个例程:

闪烁灯

ORG 00H

AJMP START

ORG 30H

START:

MOV P0,#00H

LCALL DELY;调用延时子程序

MOV P0,#0FFH

LCALL DELY;调用延时子程序

AJMP START

DELY:

MOV R7,#250

DL1:MOV R6,#250

DJNZ R6,$

DJNZ R7,DL1

RET

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-02-09
延时时间,需要知道晶振频率的数值。
楼主也没有给出晶振频率,怎么可能设计出延时程序?

粗略的延时,可以使用软件延时;
精确的延时,则需要利用定时器。
楼主的要求,写的也太含糊了。

如何利用单片机汇编指令编程实现延时10ms?利用汇编指令设计多重循环编...
这是调用一个延时20毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了 DELAY20MS:MOV R2,#40DELAY20MS1:MOV R3,#250DJNZ R3,$DJNZ R3,DELAY20MS1RET RETRET的作用是子程序返回。调用一个子程序,当单片机执...

这个程序如何计算延时10ms
根据单片机的频率来计算的。这个Delay10ms转化成汇编之后:DELAY_10S:MOV R4,#1 L1:MOV R3,#381指令周期 L2:MOV R2,#1301指令周期 L3:DJNZ R2,L32指令周期 DJNZ R3,L2 同上 DJNZ R4,L1同上 RET同上 总耗时:[(130*2+1+2)*38+1+2]*1*12\/12M = 0.009997s≈10ms 至于是不是误差 0us...

单片机汇编语言怎么计算延时程序的?
延时的计算和实现如下:1. 将R2的值设为10,这是外层循环的次数。2. 将R3的值设为200,这是次层循环的次数。每次外层循环执行时,次层循环将会被执行200次。3. 将R4的值设为250,这是内层循环的次数。每次次层循环执行时,内层循环将会被执行250次。4. 每次内层循环执行完毕后,使用DJNZ指令检...

单片机的延时10ms是多长时间啊?
延时多长时间要看你单片机的频率和使用的语言种类,比如同一个延时程序,在8M晶振单片机跑就比在4M的快接近一倍,用汇编写的延时就比用c的要准些,一般都用c写,用不同软件转换相同延时程序时间也不同。由于软件将你编的程序转成汇编交给单片机识别,它所执行的时间为单片机一个周期*程序运行的条数 ...

单片机延时时间程序怎么编程
1、查看一下你的硬件环境,比如晶振大小,CPU型号,不用CPU指令的机器周期是不一样的。2、计算延时需要的机器周期。比如采用12M晶振,CPU采用通用8051,那么一个机器周期为1US,50毫秒为50*1000=50000US,需要的机器周期=50000\/1=50000。3、试编程,如下:程序代码 指令时间总共时间 DELAY50MS:;22 ...

怎么样用C语言实现精确延时
要自己构造,步骤1,检查单片机的说明书,知道执行一条指令要多少时钟周期,2, 12M的时钟频率就是一个始终周期83.3ns,3,你要1毫秒,就是要延迟12000个时钟周期,做一个For循环,在里面做4000次加法运算就可以了(假设你的单片机一个指令用一个时钟)...

单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12M...
delay1000ms:(HT46R65的单片机)(注意不要开启计时中断允许位)mov a,10000111b (设置频率和记数方式)(上升记数还是下降记数)mov tmr0c,a (tmr0c 计数器的控制寄存器)mov a,low(65536-31250) (设置的频率就是1S上升31250)因此是DELAY1S mov TMR0L,a (计数器的赋予初始值的...

51单片机使用汇编语言循环延迟时间怎么算?
第一步:在延时程序没行后边标注该指令执行的机器周期第二步:在机器周期后边乘以该指令循环的次数第三步:计算总共用的机器周期数第四步:计算总延时时间。 本回答由网友推荐 举报| 答案纠错 | 评论(4) 10 1 zhxiufan | 高级工程师 向TA咨询 擅长: IT ...

单片机 汇编语言有关延时函数时间的计算
1、DJNZ R7,$ :单句执行时间2us,100次就是2*100us,这个循环完成的时长是:200us 2、DJNZ R6,DELAY2 :此层每循环1次,实际时长为200us+2us,所以这一层执行完成的时间是100*(2 + 200)us = 20200us;这个循环判断的执行时长2*100us,与最内层是加的关系,不是乘!3、DJNZ R...

单片机C语言中,怎么通过循环次数计算延迟函数的延迟时间?
首先你要知道一个指令周期是几秒 算法是1\/(晶振频率除以12)然后你要知道循环究竟执行了几个指令周期 你可以用keil里在线反汇编命令看看你的循环编译成机器语言后到底是几个指令周期 这样就知道了延迟时间 当然你取近似值也可以的 比如 for(i=0,i<255,i++){x=2} 这里x=2是一个指令周期 而...

相似回答