利用“春软微机原理虚拟实验系统”设计模拟抢答器

一、实验目的
1、了解微机化竞赛抢答器的基本原理。
2、进一步学习使用并行接口。
二、实验内容
逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。在七段数码管上将其组号(0~7)显示出来,并使微机扬声器响一下。
三、编程提示
设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。

四、电路连接

五、流程图

六、汇编程序
data segment
io8255a equ 508h
io8255b equ 509h
io8255ctrl equ 50bh
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;数码表
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,io8255ctrl ;设8255为A口输出,B口输入
mov ax,82h
out dx,al
mov bx,offset led ;使BX指向段码管首址
sss: mov dx,io8255b
in al,dx ;从8255的B口输入数据
or al,al ;比较是否为0
je sss ;若为0,则表明无键按下,转sss
mov cl,0ffh ;cl作计数器,初值为-1
rr: shr al,1
inc cl
jnc rr
mov al,cl
xlat
mov dx,io8255a
out dx,al
mov dl,7 ;响铃 ASCII码为07
mov ah,2
int 21h
wai: mov ah,01
int 21h
cmp al,20h ;是否为空格
jne eee ;不是,转eee
mov al,0 ;是,关灭灯
mov dx,io8255a
out dx,al
jmp sss
eee: mov ah,4ch ;返回
int 21h
code ends
end start

类似文章