这是调用一个延时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的延时程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)