汇编语言延时程序

求一延时程序,波特率9600,晶振12M.(输入输出口自定)当输入为高电平时,每电平输出延时20uS.为低电平时,直接输出,输出有可能的全高不管.
希望高手帮忙编个程序.不胜感谢!
简单点吧,就是输出一个信号,当输出是高电平时,启动延时程序,低电平时,不延时,NEXT.
dshxxf有NEXT这指令吗?好象都没见过,要汇编语言的啊。再改下,谢谢

第1个回答  2008-08-31
应该是这样简单的吧:
mov c,p1.0
jnc next
mov r1,#9
yanshi:
djnz r1,yanshi
nop
next:....
延时1+18+1=20us
1ms=1000us
next是标号好不好,就是低电平跳过延时程序到这里,高电平延时后到这里本回答被提问者采纳
第2个回答  2008-08-29
汇编一般不考虑延时的!如果是延时的话,CPU的占用极高,这不是大定所想的,而且极大地浪费资源。一般采用中断的方式。

在BIOS中数中有一个例行中断,触发时间为15.2ns,你可以进行修改使用。

有点不明白us是什么单位?是毫秒吗?ms?还是纳秒?ns?教我一下us与他们的换算关系。
第3个回答  2008-09-02
;很简单的一个小程序,以P1.0为例,任意一个IO都可以

JNB P1.0,BACK;为低电平时不延时,直接去执行你想处理的事情
MOV R2,#9 ;为高则进入延时20us
DELAY:
DJNZ R2,DELAY

BACK:;判断为高低电平后(延时或不延时后)进行处理的程序
BACK是一个标号,程序跳转的地址。
普通单片机时钟为12分频上,12M晶振,所以机器周期为1us.
延时20us=2+18
如果你的延时精度很高的话,建议你用示波器去看下。
第4个回答  2008-09-02
in equ p1.0 //输入口
out equ p1.1
main:
mov a,in
jnz delay_20//输出低电平往下走,高电平跳到延时
//这里写你要继续的代码

delay_20://延时20MS
mov delay,#4
djnz delay,$
mov delay,#4
djnz delay,$
ret
第5个回答  2008-08-29
for i=1 to 100000
next for

汇编语言延时程序怎么解释?
在汇编代码中获取到当前的主频,那么就可以做成自适应的效果,自动按比例改变延时程序内部的计数量。若是高级语言,比如VS,就能用GetTickCount()来精确延时5s了。其实只要能读出当前时间的精确值,比如直接读BIOS时间,那么就能实现比较精确的5s延时了。不同的CPU在读精确时间的函数上是一样的。

2.汇编语言参考程序中的DELAY程序段延时多长时间?若想改变延时时间有何...
其一是设置多重循环,通过循环体执行花去的时钟周期数来估算delay时间。改变延时时间的方式是调整循环终值即可。(该方法不同性能的cpu,循环次数是不相同的)其二是利用时钟中断,反复读取系统时间,然后与第一次读取保存的时刻基数进行对比,差值达到预期值(延时时间)时终止。改变预期值即可改变delay时间。

求解释!!!汇编语言:延时程序
DEL1:MOV R6,#100 第二层循环100次 DEL2:MOV R5,#10 第三层循环10次 DJNZ:R5,$ 如果R5不等于0,则跳转到本行,也就是空转10次 DJNZ:R6,DL2 如果R6不等于0,则跳到DL2行,给R5赋值 DJNZ R7,DL1 如果R7不等于0,则跳到DL1行,给R6赋值 所以总的空转循环次数是250*1...

单片机的程序怎么延时1s?
单片机常用的编程语言有汇编语言、C语言等。以下是使用汇编语言实现延时1s的程序:以上程序中,使用了一个8位计数器来实现延时功能。由于单片机晶振频率为12MHz,每个指令需要执行12\/4=3个机器周期(其中4代表指令周期),因此可以通过调整计数器初值来实现不同的延时时间。具体计算过程如下:每个指令需要执行...

汇编语言延时程序,延时10毫秒的延时程序是什么?
首先明确机器执行一条指令耗时大概是1us那么延时10ms的程序如下:MOV AX,50L1:MOV BX,100L2:DEC BX JNZ L2DEC AXJNZ L1执行完之后时间大约为10ms多一点 根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。具体步骤如下:/导致这种情况的原因主要是??

单片机汇编语言中有没有将上一步所有状态保持一段时间的延时程序,而...
可以用定时器来实现延时比如:DELAY:MOV TL0,#LOW(65536-50000)MOV TH0,#HIGH(65536-50000) ;50毫米定时 SETB TR0 SETB ET0 CLR T0BIT JNB T0BIT,$ ;等待定时到 RET T0_ISR:CLR TR0 SETB T0BIT RETI

汇编语言如何延时2秒
使用INT 15H。MOV AH,86H是延迟。某资料上写参数CX:DX=千分秒,这十分令人费解,研究了一番,发现是是延时(CX*2^16+DX)个百万分之一秒,CXDX相当于作一个64位寄存器,CX高位,DX低位

单片机 汇编语言有关延时函数时间的计算
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...

汇编语言编写一段延时1000个指令周期的子程序
要求编写延时子程序,就不要使用定时器;也不要用C语言,因为C语言的执行时间,并不确定。用汇编语言,是最简单、准确的。51单片机的程序如下:DL1000:MOV R7,#248 DJNZ R7,MOV R7,#250 DJNZ R7,RET 正好1000个机器周期。R7,是8位寄存器,其最大数值是255,不能直接存入500。

用汇编语言,用指令延时的方式,编程序,实现P2.0输出频率约4Hz的方波...
用汇编语言,用指令延时的方式,实现P2.0输出频率约4Hz的方波。先计算一下方波的周期,Tf=250ms,半个周期为Td=125ms。这个延时,用指令延时方法实现,算是很长了,可以先写一个延时1ms的延时子程序,这个百度知道里可以找到,然后再循环125次调用延时1ms的子程序就实现了。每延时125ms,P2.0输出...

相似回答