八路抢答器(汇编程序) - 微机课程设计 - 图文 下载本文

内容发布更新时间 : 2024/12/28 6:36:04星期一 下面是文章的全部内容请认真阅读。

常熟理工学院课程设计报告

输出相应的信号。 ③8253的工作方式

方式0:减1计数到0,产生中断请求信号。 方式3:减1计数到初值的1/2,方波发生器。 ④8253方式控制字格式

表2 8253方式控制字

D7 D6 D5 D4 00 计数器锁存 01 只读写低8位 10 先读写高8位 11 先读写低8位 再读写高8位 D3 D2 D1 000 方式0 001 方式1 X10 方式2 X11 方式3 100 方式4 101 方式5 D0 00 选计数器0 01 选计数器1 10 选计数器2 0 二进制计数 1 BCD计数

3.2系统所选用各芯片的连接

3.2.1各芯片与CPU的连接

8255A、8253的数据总线D7~D0端、CS端、RD端、WR端、INTA端、INT端分别与CPU的D7~D0数据总线、片选端、IOR端、IOW端、INTA端、INTR端。8255A、8253的A1、A0端分别与CPU地址线的A1、A0端相连。 3.2.2各芯片之间的连接和与外设的连接

8255A的A口的PA7~PA0依次接“按键1”~“按键8”,B口的PB7~PB0通过驱动器1接到LED显示器,8253的GATE0端接PC7端口,CLK0接1MHz,OUT0的输出接入接扬声器。

4 软件设计

4.1程序流程

设定好8255、8253的方式控制字后,根据读取8255PA端口的状态值,获取选手的具体号码,从而转到相应程序,将号码所对应的段码输出到PB端口进行数码管显示。同时将PC7置1,使相连的GATE0门控信号为1,通道0进行计数,输出到扬声器进行鸣叫。

4.2子程序清单

10

常熟理工学院课程设计报告

4.2.1 芯片8255初始化:

PORT_A EQU 0FF28H PORT_B EQU 0FF29H PORT_C EQU 0FF2AH PORT_CTL EQU 0FF2BH

MOV AL,90H ;8255控制字 A组方式0输入 MOV DX,PORT_CTL ;B组方式0输出 C口输出 OUT DX,AL

4.2.2芯片8253初始化:

MOV AL,00110110B ;8253控制字 计数器0 读写字 MOV DX,43H ;工作方式方式3 OUT DX,AL

MOV AX,5000 ;计数器初值 MOV DX,40H OUT DX,AL MOV AL,AH OUT DX,AL

4.2.3获取选手号码子程序:

在硬件电路中,8255的PA端口连接开关按键,根据读取PA的状态可以判断出按下的是哪个键(按下为高电平),根据进行移位操作,可得出选手的具体号码。

MOV DX,PORT_A ;读取A口状态(按键状态)

IN AL,DX

CMP AL,00000000B ;无按键按下 返回LED1 JE LED1

CMP AL,00000001B ;按键1 JE LP1

CMP AL,00000010B ;按键2 JE LP2

CMP AL,00000100B ;按键3 JE LP3

CMP AL,00001000B ;按键4 JE LP4

CMP AL,00010000B ;按键5 JE LP5

CMP AL,00100000B ;按键6 JE LP6

CMP AL,01000000B ;按键7 JE LP7

CMP AL,10000000B ;按键8 JE LP8

JMP LED1 ;返回

11

常熟理工学院课程设计报告

4.2.4数码管显示子程序:

根据获取得到选手的号码,跳转相应程序,将段码输出给PB端口。

LP1: MOV DX,PORT_B ;数码管显示1 MOV AL,11111001B OUT DX,AL

LP2: MOV DX,PORT_B ;数码管显示2 MOV AL,10100100B OUT DX,AL

… LP8: …

LED的管脚 dp、g、f、e 、d、c、b、a 1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0

对应的字形 1 2 3 4 5 6 7 8 4.2.5扬声器鸣叫时间:

PUSH DX PUSH AX

MOV AL,00001111B ;8255 PC7口置1,使蜂鸣器工作 MOV DX,PORT_CTL OUT DX,AL POP AX POP DX

MOV BL,00000000B

MOV CX,0FFFFH ;延时一段时间 LPP2:LOOP LPP2 MOV CX,0FFFH LPP3:LOOP LPP3

PUSH DX PUSH AX

MOV AL,00001110B ;8255 PC7口置0,蜂鸣器停止工作 MOV DX,PORT_CTL OUT DX,AL

12

常熟理工学院课程设计报告

POP AX POP DX

5 结果分析

连接硬件电路后,控制程序输出得到相应结果:

图5 硬件显示结果

13

常熟理工学院课程设计报告

由上结果可看出,当按键3按下的时候,数码管显示数字3,扬声器进行鸣叫,在无按键按下时,LED数码管显示符号“-”,可得程序设计及硬件连接能达到题目要求。

结束语

转眼间一周微机课程设计转眼就结束了,通过这次课程设计,我学会了许多课本上学不到的东西,同时也加强了我的动手、思考和解决问题的能力,受益匪浅。课程设计过程中,我觉得是对课本知识的巩固和加强,由于课本上的知识太多,同时平时课间又没有好好的运用额理解个芯片的功能,而且考试的内容有限,所以在这次课程设计过程中,我们了解很多元件的功能,对其在电路中的使用有更多的认识。

从前的学习过程过于浮浅,只是流于表面的理解,而现在要做课程设计,就不得不要求我们对所用到的知识有更深层次的理解。因为课程设计的内容比及书本中的理论知识而言,更接近于现实生活,而理论到实践的转化往往是一个艰难的过程,它犹如一只拦路虎,横更在我们的面前。但是我们毫不畏惧,因为我们相信我们能行。

前几天的主要任务是设计程序。虽然在设计中会遇到这样那样的问题,有时认为是正确的,而在仿真中却出现了这样那样的问题。

软件部分做好了,下面就是接线啦,这可是一个比较麻烦的事。在接线的时候要细心和耐心、恒心,这样才能做好事情。同时接好了一步电路以后,最为重要的是检查这部分是不是接对了。

在做硬件测试的时候,八个数字基本能显示,但还是有点缺陷,比如显示数字1的时候,显示的不对,后来在老师帮助下解决了这个问题。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。

最后,我要感谢给予我们精心辅导的老师。

14