6-6 8255并行接口(LED)

一、实验目的

(1) 学习pc扩展i/o接口的方法。

(2)学习编制数据输出程序的设计方法。

二、实验要求

以8255 c 口为输出口,控制8个单色LED。

三、实验说明

工作方式0;

pa、pb、pc为独立输入输出的并行口;

寄存器对应的端口地址:

pa:288h;

pb:289h;

pc:28ah;

控制口:28bh。

cs 连接288h~28fh。 适当调节LED亮灭的延迟时间。

四、汇编程序

data segment

 
  
ioport equ 0ff00h-0280h
io8255a equ ioport+288h
io8255b equ ioport+289h
io8255c equ ioport+28ah
io8255d equ ioport+28bh

mess1 db '左循环按1',0dh,0ah,'$'
db '右循环按2',0dh,0ah,'$'
db '间隔闪烁按3',0dh,0ah,'$'
db '退出按4',0dh,0ah,'$'
mess2 db '按无效键继续选择',0dh,0ah,'$'
mess3 db '按任意键退回主菜单',0dh,0ah,'$'
data ends

stack segment
sta db 20 dup(?)
top equ length sta
stack ends

code segment
assume cs:code,ds:data,ss:stack,es:data
start: mov ax,data
mov ds,ax ;初始化
mov ax,stack
mov ss,ax
mov sp,top
mov sp,ax
mov dx,io8255d
mov al,80h
out dx,al
bg: lea dx,mess1
mov ah,09h
int 21h
mov ah,08h ;等待有键按下
int 21h
push ax
lea dx,mess3
mov ah,09h
int 21h
pop ax
mov ah,al
cmp al,'1'
jz zxh ;进入各种循环
mov al,ah
cmp al,'2'
jz yxh
mov al,ah
cmp al,'3'
jz jgs
mov al,ah
cmp al,'4'
jnz wx
jmp qit
wx: lea dx,mess2 ;无效按键提示信息
mov ah,09h
int 21h
jmp bg
zxh: mov dx,io8255c ;左循环
mov al,0feh
bb: out dx,al
mov cx,01h
l1: loop l1
rol al,1
push ax
push dx
mov dl,0ffh
mov ah,06h
int 21h
jnz bg
pop dx
pop ax
jmp bb
yxh: mov dx,io8255c
mov al,80h
ee: out dx,al
mov cx,0fffh
l2: loop l2
ror al,1
push ax
push dx
mov dl,0ffh
mov ah,06h
int 21h
jnz bg
pop dx
pop ax
jmp ee
jgs: mov dx,io8255c
mov al,55h
hh: out dx,al
mov cx,0ffffh
l3: loop l3
not al
push ax
push dx
mov dl,0ffh
mov ah,06h
int 21h
jnz bg1
pop dx
pop ax
jmp hh
bg1: jmp bg
qit: mov ax,4c00h
int 21h
code ends
end start
说明:
左循环 改为: mov cx,01h
油循环 改为: mov al,80h

你可能感兴趣的:(接口,8255)