求助一段简单的单片机编程(汇编语言)

来源:百度知道 编辑:UC知道 时间:2024/06/10 00:00:52
单片机P3.0口输出一定频率的脉冲,脉冲间隔为0.5秒,用普通的延时程序就行。晶振频率为6MH。

楼上的写的是10S的延时程序,而且不是很精准,用push和pop也占用了很多资源。
DELAY:
MOV R7,#250
DELAY1:
MOV R6,#248
DJNZ R6,$
DJNZ R7,DELAY1
RET
这个程序只有6个us的误差

输出脉冲程序:
TT:CPL P3.0
ACALL DELAY
SJMP TT
这个是死循环,就是一直输出脉冲,除非来中断,如果你只是调用这个程序,然后做别的事情,之需要设置一个寄存器,做了几次就结束就ok。

仿真调试一下具体参数
程序就 是这样

_DELAY:
PUSH 0
PUSH 1
PUSH 2

MOV R0,#50
_D1:
MOV R1,#200
_D2:
MOV R2,#250
DJNZ R2,$
DJNZ R1, _D2
DJNZ R0, _D1

POP 2
POP 1
POP 0
RET

ORG 0000H
AJMP START
ORG 0050H
START: ACALL KS0 ; 停止0.5S
CLR P1.0 ;输出
ACALL KSA ; 输出 0.5S
AJMP START
KS0: MOV R0,#008H
KS1: MOV R1,#0FFH
KS2: MOV