汇编竞赛抢答器的设计与实现实验报告Word文档格式.docx
《汇编竞赛抢答器的设计与实现实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《汇编竞赛抢答器的设计与实现实验报告Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
一、设计目的
1.了解微机控制的竞赛抢答器的基本原理。
2.进一步熟练8255的使用。
二、设计内容
设计一个7路的智力竞赛抢答器。
要求:
1、在主持人侧,设置抢答指示电路和启动/复位开关。
选手侧各设置1个抢答按钮。
2、使用开关K7代表启动/复位开关,K7向上拨时,表示启动一次抢答,绿色发光二极管亮作允许抢答指示。
此时选手侧可以按动各自的抢答按钮。
3、使用实验仪的逻辑电平开关K0-K5来代表6个抢答按钮。
当开关向上拨时表示按下按钮。
4、收到第1个抢答信号后,主持人侧红色发光二极管亮(绿色发光二极管灭)作抢答指示,在单个LED灯上显示抢先一组的组别。
5、主持人向下拨K7,代表复位操作,红绿指示灯全灭,选手灯全灭。
6、主持人可以再次向上拨动K7,启动下一次抢答。
7、在数码管上显示选手编号。
8、通过8255完成设计。
三、设计方案
1.注意事项:
A.先关闭试验箱电源,再进行接线。
B.实验过程中,要改变错误接线,也必须先关闭电源,再进行改线。
2.实验连线
8255模块的RD、WR连到ISA总线接口模块的IOR#、IOW#,8255选通信号CS连到ISA总线接口模块的IOY0。
8255模块的数据线D7~D0、连到ISA总线接口模块的XD7~XD0。
地址线A1~A0连到XA2~XA1。
1)8255的端口A(PA0---PA7)和开关K0-K7相连。
2)8255的端口C(如PC7、PC6)分别和发光二极管(绿)、(红)连接。
3)8255的端口C(PC0---PC5)和发光二极管L0---L5相连。
4)8255的端口B(PB0---PB7)连接到LED数码管模块的a~h各段。
5)右下角LED的列端之一Xi接GND。
(LED为共阴极,故此其COM端接地)。
3、软件设计:
首先初始化8255,然后判断是启动还是复位操作,若是复位操作,则控制8255输出的数据使绿色和红色指示灯、LED灯全灭;
否则启动下一次抢答,使绿色发光二极管亮;
当8255的输入口PB有不为0的数据时,则使绿色发光二极管灭并使红色发光二极管点亮。
并判断先拨动开关的组号,在LED灯上显示出其组号。
最后使用LED8段数码管,显示选手编号。
试验箱IO端口地址
IOY0
IOY1
IOY2
IOY3
0600H
0640H
0680H
06C0H
4、程序清单:
1.硬件测试
DATASEGMENT
P8255ADW0600H
P8255BDW0602H
P8255CDW0604H
P8255MDW0606H
DATAENDS
;
-------------------------------------------------------------------------全亮
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,P8255M
MOVAL,XXH;
写8255控制字
OUTDX,AL;
PA输入、PB输出、PC输出
HARDTST:
MOVDX,P8255C
MOVAL,0FFH;
//page
OUTDX,AL
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
当将page位置的MOVAL,OFFH修改为MOVAL,0H时,LED灯全灭。
2.内部程序设计:
当选手按下按钮时,switch语句判断其是那一位并在数码管上显示其相应的位置;
Switch语句实现对应按钮的执行:
SWITCHPROCNEAR;
PUSHAX
PUSHDX
MOVDX,P8255A
INAL,DX
K0:
;
NOP//k0开关的执行
TESTAL,01H
JZK1
MOVDX,P8255C
OUTDX,AL
MOVDX,P8255B
MOVAL,3FH
MOVAL,00H
JMPDONE1
K1:
;
NOP//k1开关的执行
TESTAL,02H
JZK2
MOVAL,06H
K2:
NOP//k2开关的执行
TESTAL,04H
JZK3
MOVAL,5BH
K3:
NOP//k3开关的执行
TESTAL,08H
JZK4
MOVDX,P8255C
MOVAL,4FH
K4:
NOP//k4开关的执行
TESTAL,10H
JZK5
MOVAL,66H
K5:
NOP//k5开关的执行
TESTAL,20H
MOVAL,6DH
DONE1:
INT21H
POPDX
POPAX
RET
SWITCHENDP
3.实现程序:
DATASEGMENT
P8255ADW0600H
P8255BDW0602H
P8255CDW0604H
LEDCODEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
LCODEDB?
;
选手灯代码
DCODEDB3FH;
显示代码缓冲
DATAENDS
CODESEGMENT
DATA
MOVAX,DATA
MOVDS,AX
MAIN:
MOVDX,P8255M
MOVAL,90H;
写8255控制字。
OUTDX,AL;
PA输入、PB输出、PC输出。
MODE0
MOVDX,P8255B
MOVAL,00H;
OUTDX,AL
MOVDX,P8255C
----------------------------------------------------------------------------
NEW:
MOVDX,P8255A
INAL,DX
TESTAL,80H
JNZSECOND
FIRST:
MOVDX,P8255C;
K7=0
MOVAL,00H;
JMPNEW
SECOND:
NOP
MOVDX,P8255A
INAL,DX
TESTAL,7FH;
K0---K6=全0?
JNZTHIRD
MOVDX,P8255M
MOVAL,0EH
OUTDX,AL;
PC7=0
MOVAL,0DH;
PC6=1
OUTDX,AL
JMPNEW
THIRD:
NOP;
K0---K6=非全0
MOVAL,0FH;
PC7=1
OUTDX,AL
MOVAL,0CH;
PC6=0
FORTH:
FIFTH:
CALLSWITCH
DONE:
CALLLEDLAMP
CALLDISPLY
NOP
JMPDONE1
LEDLAMPPROCNEAR;
NOP
POPDX
LEDLAMPENDP
DISPLYPROCNEAR;
DISPLYENDP
ENDSTART
五.程序实现结果及现象
在主持人在使用开关K7代表启动/复位开关,K7向上拨时,表示启动一次抢答,绿色发光二极管亮作允许抢答指示。
选手侧可以按动各自的抢答按钮。
收到第1个抢答信号后,主持人侧红色发光二极管亮(绿色发光二极管灭)作抢答指示,数码管上显示选手编号。
当主持人向下拨K7,代表复位操作,红绿指示灯全灭,选手灯全灭。
主持人可以再次向上拨动K7,启动下一次抢答。
6.总结
在本次课程设计中,我熟悉了对竞赛抢答器的设计及其工作流程。
开始在实验中频繁遇到问题,但是在最终大家的讨论及其合作下,我们实现了其功能需求,当每一个子模块编写调试成功时,心里特别的开心。
同时也感觉总体设计有点小不足,对于软件编程虽然每个模块的程序编译没有错误,但与连接硬件时会出现一点小问题,例如:
在按键的执行显示模块。
在设计switch语句的结束后跳转问题商花费了好长时间,最终在老师的提醒下还是实现了功能。
通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正解决问题、更深刻的认识问题,此过程也提高了自己的实际动手能力和独立思考的能力,以后自身的发展也会因此而受益颇深。