找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1693|回复: 1
打印 上一主题 下一主题
收起左侧

延时编码求助!!!如何添加??

[复制链接]
跳转到指定楼层
楼主
ID:211821 发表于 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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:149988 发表于 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表