兰州大学接口与通讯实验报告汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验6-6 8255并行接口(LED)实验

实验说明

8255工作于方式0,此时PA, PB, PC均为可独立输入输出的并行口。8255的各寄存器对应的端口地址为:

PA口:288H

PB口:289H

PC口:28AH

控制口:28BH

8255的片选信号为CS连138译码器的288H-28FH。由于各PC速度不同,为到达较好的实验效果,可以适当调节LED亮灭的延迟时间。

源代码:

data segment

ioport equ 0ff00h-0280h

io8255a equ ioport+288h ;PA口

io8255b equ ioport+289h ;PB口

io8255c equ ioport+28ah ;PC口

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 ;data段装填

mov ds,ax

mov ax,stack ;stack段装填

mov ss,ax

mov sp,top ;设置栈顶

mov sp,ax

mov dx,io8255d

mov al,80h;命令字10000000b,表示特征位为1,A组为0方式,A端口出,out dx,al ;PC4-PC7出,B组为0方式,B端口出,PC0-PC3出

bg: lea dx,mess1 ;显示提示信息mess1

mov ah,09h

int 21h

mov ah,08h ;输入字符,结果保存至al

int 21h

push ax ;保存输入的值

lea dx,mess3 ;显示提示信息mess3

mov ah,09h

int 21h

pop ax ;拿出保存的值

mov ah,al ;ah=al

cmp al,'1' ;输入为1,跳转到zxh

jz zxh

mov al,ah ;al=ah

cmp al,'2' ;输入2,跳转到yxh

jz yxh

mov al,ah ;al=ah

cmp al,'3' ;输入3,跳转到jgs

jz jgs

mov al,ah ;al=ah

cmp al,'4' ;输入4,跳转到wx

jnz wx

jmt qit

wx: lea dx,mess2 ;显示提示信息mess2

mov ah,09h

int 21h

jmp bg ;无条件跳转到bg

zxh: mov dx,io8255c

mov al,0feh ;al=11111110b

bb: out dx,al ;将al写入PC口

mov cx,0ffffh ;用于延迟一定的时间

l1: loop l1

rol al,1 ;al循环左移一位

push ax ;保存ax

push dx ;保存dx

mov dl,0ffh ;直接控制台IO,输入,输入的值在al中

mov ah,06h

int 21h

jnz bg ;flag的ZF标志位不为0跳转至bg

pop dx ;恢复dx,ax的值

pop ax

jmp bb ;跳转至bb

yxh mov dx,io8255c

mov al,0feh ;al=11111110b

ee: out dx,al ;将al写入PC口

mov cx,0fffh ;用于延迟一定的时间

l2: loop l2

ror al,1 ;al循环右移一位

push ax ;保存ax

push dx ;保存dx

mov dl,0ffh ;直接控制台IO,输入,输入的值在al中

mov ah,06h

int 21h

jnz bg ;flag的ZF标志位不为0跳转至bg

pop dx ;恢复dx,ax的值

pop ax

jmp ee ;无条件转移至ee

jgs: mov dx,io8255c

mov al,55h ;al=01010101b

hh: out dx,al ;将al写入PC口

mov cx,0fffh ;设置时延

l3: loop l3

not al ;对al按位取反

push ax ;保存ax

push dx ;保存dx

mov dl,0ffh ;直接控制台IO,输入,输入的值在al中

mov ah,06h

int 21h

jnz bg1 ;flag的ZF标志位不为0跳转至bg1

pop dx ;恢复dx,ax的值

pop ax

jmp hh ;无条件转移至hh

bg1: jmp bg ;无条件转移至bg

qit: mov ax,4c00h ;交还控制权给DOS

int 21h

code ends

end start

相关文档
最新文档