标题:
延时编码求助!!!如何添加??
[打印本页]
作者:
137272190
时间:
2017-6-16 12:48
标题:
延时编码求助!!!如何添加??
IOCON EQU 8006H ;8255控制端口地址
IOA EQU 8000H ;8255端口A地址
IOB EQU 8002H ;8255端口B地址
IOC EQU 8004H ;8255端口C地址
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START:
MOV AL,90H ;写入8255A的控制字
MOV DX,IOCON
OUT DX,AL
NOP
START1:
NOP
NOP
MOV AL,0 ;从PA端口读入开关状态
MOV DX,IOA
IN AL,DX
NOP
NOP
MOV DX,IOB ;从PB端口输出,控制LED亮灭
OUT DX,AL
JMP START1
CODE ENDS
END START
作者:
不倒翁.WZT
时间:
2017-6-17 08:18
标题:
RE: 延时编码求助!!!如何添加??
程序中NOP都起延时作用,但是延时时间很短,下面一段子程序延时时间较长,R7和R6装载数据越大延时时间越长。哪里需要延时,将此子程序在哪里调用即可。具体延时时间计算和延时原理见课本。
......
delay: ;延时子程序
MOV R7,#30H ;设置R7=20H
L1: MOV R6,#0FFH ;设置R6=FFH
DJNZ R6,$ ;若R6-1≠0,执行本指令循环,若R6-1=0,执行下一指令
DJNZ R7,L1 ;若R7-1≠0,执行L2循环,若R7-1=0,执行下一指令
RET
......
如所列举程序中一段程序。
START1:
NOP
NOP
MOV AL,0 ;从PA端口读入开关状态
MOV DX,IOA
IN AL,DX
NOP
NOP
MOV DX,IOB ;从PB端口输出,控制LED亮灭
OUT DX,AL
如果延时时间很长,将两个NOP删除,换上ACALL delay 如:
START1:
ACALL delay
MOV AL,0 ;从PA端口读入开关状态
MOV DX,IOA
IN AL,DX
ACALL delay
MOV DX,IOB ;从PB端口输出,控制LED亮灭
OUT DX,AL
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1