微机原理课程设计抢答器.docx
- 文档编号:24823513
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:23
- 大小:63.48KB
微机原理课程设计抢答器.docx
《微机原理课程设计抢答器.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计抢答器.docx(23页珍藏版)》请在冰豆网上搜索。
微机原理课程设计抢答器
西安郵電大学
硬件课程设计报告
题目:
抢答器
院系名称:
计算机学院
专业名称:
班级:
学生姓名:
学号(8位):
指导教师:
设计起止时间
1.设计目的
用逻辑开关模拟竞赛抢答器按钮(共8个开关:
K0~K7)当某个逻辑开关置“1”时,相当某组抢答按钮按下。
在七段数码管上将其组号(0~7)显示出来,若为0表示无人抢答。
从键盘上按空格键开始下一轮抢答,按
二.设计内容
1.选用元器件:
(1)、并行接口8255:
通过编程来指定它要完成的功能,是并行数字设备与微机间的接口。
8255用于输入抢答信息,并输出正确的序号给数码管,以及控制LED灯的亮灭。
本设计中8255A的地址范围设置为1400H—1403H,其中控制口地址为1403H。
而且使用了8255A的A口,B口和C口。
它们均工作在方式0下,其中A口和C口为输出,B口为输入。
(2)、数码管:
指示先抢答的组号。
(3)、二极管:
指示抢答。
(4)、开关:
作为抢答者的按钮。
2.基础实验一:
8255基本输入输出
能够在自行设计的接口开发板上,实现拨动开关控制LED的亮灭。
(软件代码命名为:
8255.ASM,代码要求用小写字母,且必须经过优化,源代码小于<95行,每条指令算1行,伪指令也算1行)
3.基础实验二:
流水灯设计实现
能够在自行设计的接口开发板上,实现拨动不同开关控制LED灯的变化。
例如,K1从左往右,K2从右往左,K3从中间向两边,K4从两边向中间依次亮灭变化,按主机键盘任意键退出。
(软件代码命名为:
TEST2.ASM,代码要求用小写字母,且必须经过优化,源代码小于<85行,每条指令算1行,伪指令也算1行)
4.基础实验三:
数码管应用
能够在自行设计的接口开发板上,上电数码管显示0到7,实现拨动不同开关,数码管显示该开关位置值(1-8);若同时拨动两个以上开关,则数码管显示“E”。
(软件代码命名为:
8SEGMENT.ASM,代码要求用小写字母,且必须经过优化,源代码小于<100行,每条指令算1行,伪指令也算1行)
5.抢答器:
用逻辑开关模拟竞赛抢答器按钮(共8个开关:
K0~K7)当某个逻辑开关置“1”时,相当某组抢答按钮按下。
在七段数码管上将其组号(0~7)显示出来,若为0表示无人抢答。
从键盘上按空格键开始下一轮抢答,按
三.概要设计
1.功能模块图;
2.所用芯片8255引脚图
3.抢答器电路图
四.详细设计
1.实验步骤
(1)、在实验箱上连接8255的WR、CS、RD、D0-D7、A1A0以及8255输入输出端口A,B,C口连接到led灯、8段数码管、开关上。
硬件电路搭建完毕。
(2)、在TD—PIT上篇写汇编程序,进行测试。
(3)、在Proteus上按照需求连接电路,为验证电路正确性,为其加入输入,进行模拟。
模拟结果正确后,将电路图保存。
(4)、制作硬件电路
2、遇到的问题:
(1)、在8255的使用过程中,由于对控制字的使用错误,导致不能从A、B口输出信息,最后通过检查,改变控制字,实现了功能。
(2)、汇编语言的运用。
由于平时较少使用汇编语言,用汇编语言编写程序方面存在不小的障碍,通过知识回顾复习,对汇编进一步的了解后,熟练运用。
(3)、汇编语言要求短小精悍,由于程序过长,在使用jnz指令时,出现错误:
RelativejumpoutofrangebyteXXXXhbytes。
通过二度跳转,解决了这个问题。
五.调试情况,设计技巧及体会
通过对抢答器这一课题的设计和实现,使我更好的将理论与实践相结合,我更加深入地理解了微机原理课程上讲到的并行芯片8255的功能,以及引脚的作用,同时加深了对于该芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程。
更重要的是通过这个实验,进一步掌握了程序设计的合理结构。
但要达到这样的程度其首要条件还是要学好课本上的基础知识,理解每一条指令的意义。
让我感到很欣慰的是,与搭档的合作下高效地、顺利地完成本次实验。
六.参考文献
《微机接口技术及其应用》---李育贤
《微型计算机原理》---王忠民
七.附录:
源代码(电子版)
一、8255基本输入输出
datasegment
dataends
codesegment
assumecs:
code,ds:
data
start:
movdx,1403h
moval,10010000b
outdx,al
read:
movdx,1400h
inal,dx
movdx,1401h
outdx,al
movah,1
int16h
jzread
movah,4ch
int21h
codeends
endstart
二、流水灯设计实现
datasegment
my8255_aequ1400h;8255的A口地址
my8255_bequ1401h;8255的B口地址
my8255_cequ1402h;8255的C口地址
my8255_modeequ1403h;8255的控制寄存器地址
mode_adb10001001b;控制字
leftdb0feh
dataends
codesegment
assumecs:
code,ds:
data
start:
MOVDX,1406H;写控制口
MOVAL,90H
OUTDX,AL
READ:
MOVDX,1400H;写A端口
INAL,DX
MOVDX,1402H;写B端口
ANDAL,01H
JZkey1
ANDAL,02H
JZkey2
ANDAL,04H
JZkey3
ANDAL,08H
JZkey4
JMPREAD
key1:
;for(i=0;i<5;i++)
;for(al=0x08;al!
=0;al>>1)
MOVCX,5
MOVAL,08H
L_TO_RCNT:
PUSHCX
L_TO_R:
MOVCX,8
OUTDX,AL
SHLAL,1
LOOPL_TO_R
POPCX
LOOPL_TO_RCNT
JMPREAD
key2:
;for(i=0;i<5;i++)
;for(al=0x01;al!
=0;al<<1)
MOVCX,5
MOVAL,01H
R_TO_LCNT:
PUSHCX
R_TO_L:
MOVCX,8
OUTDX,AL
SHRAL,1
LOOPR_TO_L
POPCX
LOOPR_TO_LCNT
JMPREAD
key3:
MOVCX,5
M_TO_OCNT:
MOVSI,4
M_TO_O:
MOVAL,TABLE[4-SI]
OUTDX,AL
DECSI
JNZM_TO_O
LOOPM_TO_OCNT
JMPREAD
key4:
MOVCX,5
CNT:
MOVSI,4
O_TO_M:
MOVAL,TABLE[SI]
OUTDX,AL
DECSI
JNZO_TO_M
LOOPCNT
JMPREAD
;OUTDX,AL
;JMPREAD
movax,4c00h
int21h
CODEENDS
endstart三、数码管应用
datasegment
my8255_aequ1400h;8255的A口地址
my8255_bequ1401h;8255的B口地址
my8255_cequ1402h;8255的C口地址
my8255_modeequ1403h;8255的控制寄存器地址
mode_adb10001001b;控制字
dataends
codesegment
assumecs:
code,ds:
data
start:
MOVDX,1406H;写控制口
MOVAL,90H
OUTDX,AL
READ:
MOVDX,1400H;写A端口
INAL,DX
MOVDX,1402H;写B端口
MOVBL,AL;保存端口读到的值
A1:
TESTAL,01H
JNZA2
ORAL,01H
CMPAL,0FFH
JZkey1
JMPkeyE
A2:
MOVAL,BL
TESTAL,02H
JNZA3
ORAL,02H
CMPAL,0FFH
JZkey2
JMPkeyE
A3:
MOVAL,BL
TESTAL,04H
JNZA4
ORAL,04H
CMPAL,0FFH
JZkey3
JMPkeyE
A4:
MOVAL,BL
TESTAL,08H
JNZA5
ORAL,08H
CMPAL,0FFH
JZkey4
JMPkeyE
A5:
MOVAL,BL
TESTAL,10H
JNZA6
ORAL,10H
CMPAL,0FFH
JZkey5
JMPkeyE
A6:
MOVAL,BL
TESTAL,20H
JNZA7
ORAL,20H
CMPAL,0FFH
JZkey6
JMPkeyE
A7:
MOVAL,BL
TESTAL,40H
JNZA8
ORAL,40H
CMPAL,0FFH
JZkey7
JMPkeyE
A8:
MOVAL,BL
TESTAL,80H
JNZREAD
ORAL,80H
CMPAL,0FFH
JZkey8
JMPkeyE
key1:
MOVAL,TABLE[0]
OUTDX,AL
JMPREAD
key2:
MOVAL,TABLE[1]
OUTDX,AL
JMPREAD
key3:
MOVAL,TABLE[2]
OUTDX,AL
JMPREAD
key4:
MOVAL,TABLE[3]
OUTDX,AL
JMPREAD
key5:
MOVAL,TABLE[4]
OUTDX,AL
JMPREAD
key6:
MOVAL,TABLE[5]
OUTDX,AL
JMPREAD
key7:
MOVAL,TABLE[6]
OUTDX,AL
JMPREAD
key8:
MOVAL,TABLE[7]
OUTDX,AL
JMPREAD
keyE:
MOVAL,TABLE[8]
OUTDX,AL
JMPREAD
;OUTDX,AL
;JMPREAD
movax,4c00h
int21h
CODEENDS
endstart
四、抢答器
datasegment
my8255_aequ1400h;8255的A口地址
my8255_bequ1401h;8255的B口地址
my8255_cequ1402h;8255的C口地址
my8255_modeequ1403h;8255的控制寄存器地址
mode_adb10001001b;控制字
dataends
codesegment
assumecs:
code,ds:
data
start:
MOVDX,1406H;写控制口
MOVAL,90H
OUTDX,AL
READ:
MOVDX,1400H;写A端口
INAL,DX
MOVDX,1402H;写B端口
;倒计时过程到了0开始抢答
MOVSI,5
TIME:
;延时等待
MOVCX,0FFFFH
delay:
LOOPdelay
MOVAL,TABLE[SI]
OUTDX,AL
DECSI
JNZTIME
MOVBL,AL
A1:
TESTAL,01H
JZkey1
A2:
TESTAL,02H
JZkey2
A3:
TESTAL,04H
CMPAL,0FFH
A4:
TESTAL,08H
JZkey4
A5:
TESTAL,10H
JZkey5
A6:
TESTAL,20H
JZkey6
A7:
TESTAL,40H
JZkey7
A8:
TESTAL,80H
JZkey8
;无人抢答
MOVAL,TABLE[0]
OUTDX,AL
NEXT:
;等待输入空格键或者Esc到下一轮抢答或者退出程序
MOVAH,1
INT21H;
CMPAL,32;是否为空格
JZREAD
CMPAL,27;是否为Esc
JZEND
key1:
MOVAL,TABLE[1]
OUTDX,AL
JMPNEXT
key2:
MOVAL,TABLE[2]
OUTDX,AL
JMPNEXT
key3:
MOVAL,TABLE[3]
OUTDX,AL
JMPNEXT
key4:
MOVAL,TABLE[4]
OUTDX,AL
JMPNEXT
key5:
MOVAL,TABLE[5]
OUTDX,AL
JMPNEXT
key6:
MOVAL,TABLE[6]
OUTDX,AL
JMPNEXT
key7:
MOVAL,TABLE[7]
OUTDX,AL
JMPNEXT
key8:
MOVAL,TABLE[8]
OUTDX,AL
JMPNEXT
;OUTDX,AL
;JMPREAD
END:
movax,4c00h
int21h
CODEENDS
endstart
Welcome!
!
!
欢迎您的下载,
资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计 抢答