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

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

这是调用一个延时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

延时函数很常见:

delay1ms(unsigned

int

tt)

//延时1ms

{

unsigned

char

i;

while(tt--)

for(i

=

113;

i

>

0;

i--);

}

反复多次调用即可。

但是,用软件延时,观察起来,就像死机一样,经常会误事的。

若采用12M晶振则

51单片机如89C51的一个机器周期为12个时钟周期,即1uS

DJNZ指令为两个机器周期,你可以自己查

DL10MS: MOV R6,#0C8H ;循环200次,20050uS=10ms

DL1: MOV R7,#19H ;252个机器周期

DL2: DJNZ R7,DL2

DJNZ R6,DL1

RET

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

加一个定时器T0,在梯形图中表示为T0 K60。T0计时器为100ms计时器,所以延时时间为100ms60=6s,

(1)基本延时环节,下图中当线圈得电后T0延时6s后其触点导通

(2)延时断开电路,下图中T0延时6s后断开,Y0失电。

扩展资料

1、PLC中的定时器相当于继电器系统中的时间继电器。它有一个设定值寄存器(一个字长)、一个当前值寄存器(一个字长)和一个用来储存其输出触点状态的映像寄存器(占二进制的一位),这三个存储单元使用同一个元件号。FX系列PLC的定时器分为通用定时器和积算定时器。

2、常数K可以作为定时器的设定值,也可以用数据寄存器(D)的内容来设置定时器。例如外部数字开关输入的数据可以存入数据寄存器,作为定时器的设定值。通常使用有电池后备的数据寄存器,这样在断电时不会丢失数据。

以上就是关于如何利用单片机汇编指令编程实现延时10ms利用汇编指令设计多重循环编程实现20ms延时全部的内容,包括:如何利用单片机汇编指令编程实现延时10ms利用汇编指令设计多重循环编程实现20ms延时、51单片机的10ms延时C语言程序~~~急啊!!!、10ms的延时程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9349607.html

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

发表评论

登录后才能评论

评论列表(0条)

保存