标题: 延时编码求助!!!如何添加?? [打印本页]

作者: 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