一、实验目的
(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
【接口|6-6 8255并行接口(LED)】
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