微机原理与应用实验报告-实验四 竞赛抢答器实验

1. 实验目的
1) 了解微机化竞赛抢答器的基本原理。
2) 进一步学习使用并行接口。
2. 实验内容
图9为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当于某组抢答按钮按下。在七段数码管上将其组号(0~7)显示出来。

3. 编程提示
1) 设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。
2) 参考流程图(见图10)

程序清单(注意中英文标点)

data segment
ioport equ 280h
io8255k equ 283h
io8255a equ 280h
io8255c equ 282h

led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
data ends
code segment
assume cs:code,ds:data

start:
mov ax,data
mov ds,ax
mov dx,io8255k ;8255C口输入,A口输出
mov al,89h
out dx,al
lea bx,led ;bx指向段码首址

L1:
mov dx,io8255c ;C口输入
In al,dx
Or al,al ;判断是否为0
Je L1
Mov cl,0ffh

L2:
shr al,1
Inc cl ;求出先抢答的组号
Jnc L2
Mov al,cl ;将组号存进al
Xlat ;查表求段码
Mov dx,io8255a ;将段码自A口输出
Out dx,al
Mov dl,07h ;响铃
Mov ah,02h
Int 21h

Wait:
mov ah,01h ;键盘输入
Int 21h
Cmp al,20h ;判断是否为空格,不是则关闭显示并循环,是则关灯
Jne exit
Mov al,0
Mov dx,io8255a
Out dx,al
Jmp L1

Exit:
mov ah,4ch
Int 21h
Code ends
End start

发表回复