汇编语言八路抢答器设计_第1页
汇编语言八路抢答器设计_第2页
汇编语言八路抢答器设计_第3页
汇编语言八路抢答器设计_第4页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术课程设计报告2015-2016 学年第二学期设计题目:_小组成员:所学专业:指导教师:_完成时间:_-1-/23目录一、课程设计目的 .4二、课程设计要求 .4三、系统功能 .4四、总体设计 .41.基本工作原理 .41.1可编程并行接口接口芯片8255A控制字要求 .41.2可编程定时器计数器8253 控制字要求 .52.硬件总体设计 .52.1系统总成方案 . .52.2内存单元编址 . .53.键盘、扬声器及显示功能的定义 .54.原理图 .54.1硬件原理框图 .64.2原理连线图 .65 软件总体设计 .6五、硬件设计 .错误!未定义书签。-2-/23六、软件设计8

2、七、调试过程21八、系统操作说明21九、总结22十、参考文献22-3-/23八路抢答器设计一、设计目的1、掌握微机系统的开发步骤;2、掌握抢答器控制编程方法和芯片8255、8253 的逻辑功能、 键盘中断及使用方法和数码管的用法;3、掌握一定的汇编语言知识,培养自己的动手操作能力。4、学习程序设计的基本思路和方法。因此,本次设计要求对微机原理的理论知识,8255A,8253,键盘显示区的工作方式、工作原理熟练掌握。二、设计要求当按开始键,绿灯亮后,选手抢答,1-8 号选手中先按下按键者,LED数码管显示其选手号码 ( 后按下无效 ), 并进行声光报警(黄灯亮)提示。当按开始键未按下时,如果有选

3、手抢答,LED数码管显示其选手号码,并进行声光报警(红灯亮)提示。三、系统功能一个具有 8 路抢答的抢答器,利用并行接口和开关键。键盘上数字键1-8代表抢答按钮,当某个逻辑开关闭合时(开始键按下未按起时) ,相当于抢答按钮按下,此时在七段数码管上将其号码显示出来, 并使喇叭响一声 (或者以发光二极管代替)。四、总体设计1. 基本工作原理当按开始键按下时, 绿灯亮后,选手才可抢答, 否则违规。若抢答成功, LED 显示器显示选手号码,黄灯亮,扬声器鸣叫;若抢答违规(未按下开始键) ,LED显示器显示违规选手号码,红灯亮,扬声器报警。1.1 可编程并行接口接口芯片8255A控制字要求( 1)、B

4、口工作在方式 0,做为输出端口,经驱动器1 连接 LED显示器( PB7PB0依次对应连接 LED显示器的 dp、g、f 、e、d、c、 b、 a 七段数码管管脚);-4-/23( 2)、C口也必须工作在方式0,高 4 位做输入端口(本次设计中只用PC4、PC5,分别用于连接复位键和开始键) ,低 4 位做输出端口( PC3PC0,经驱动器2 后PC1、 PC2、PC3分别用于连接黄、红、绿三个发光二极管,PC0 连接到 8253 的GATE1端,以控制方式1 的计数)。1.2 可编程定时器计数器8253 控制字要求( 1)、方式 0:操作类型为先读写低字节再读写高字节,工作在方式3 即方波发

5、生器,计数格式为 BCD码,计数初值为0。( 2)、方式 1:操作类型为先读写低字节再读写高字节,工作在方式1 即可重触发的单稳态触发器,计数格式为BCD码 , 计数初值为 0。( 3)、方式 2:操作类型为先读写低字节再读写高字节,工作在方式3 即方波发生器,计数格式为 BCD码,计数初值为0。2. 硬件总体设计2.1 系统总成方案该竞赛抢答器所要器件: 可编程并行接口接口芯片8255、可编程定时器计数器 8253,三个一样的驱动器,黄、红、绿三个发光二极管,十三个电阻,一个 8 输入与非门,一个非门,一个扬声器,一个LED显示器, 10 个按键。2.2 内存单元编址(1)可编程并行接口接口

6、芯片 8255A的端口地址为 60H、61H、62H、63H(2)可编程定时器计数器 8253 的端口地址为 40H、 41H、42H、43H(3)特殊键中断号为2A-36, 对应地址为 00A8-00DB本实验用到数字键 1-8 ,对应的 ASCII 为 31H-38H LED显示器 1-8 对应的十六进制是: 06H,5BH,4FH,66H,6DH,7CH,07H,7FH3. 键盘、扬声器及显示功能的定义一个开始键一个复位键,另外8 个数字键用做 8 位选手的抢答按键。扬声器用与黄、红、绿三个发光二极管配合使用,黄灯亮扬声器鸣叫表示抢答成功,红-5-/23灯亮扬声报警表示抢答违规报警,绿灯

7、亮扬声器不鸣则表示主持人已按下开始键。 LED显示器显示的内容与选手号对应,抢答成功或违规都要显示。4. 原理图4.1 硬件原理框图按键设置键 盘输入82558086LED 灯8255LED显 示 模CPU图 18253扬声器8254声光报警4.2原理连线图-6-/234.3 软件总体设计主程序流程图:开始设置设置LEDLED字形字码形初码值初、值标、志标初志值初值对 8259A对8255、8255、8253、8253进行进初行始初化始化设置抢答键中键断盘向中量断并向使量并 IF置 1 使开放IF中置断1 开放中断检测检开测始开键始是键否是按否下按下NYN检检测测开开始始键键是是否否弹弹起起Y

8、关闭 LED 显示器点亮绿灯置标志位值为FFH 使 IF=1开放中断检测复位键是否按下NYN检测复位键是否弹起Y关闭 LED 显示器、指示灯将标志位清零,使IF=1 开入中断结束-7-/23图 3五、硬件设计1. 可编程并行接口接口芯片 8255A的工作方式8255A具有三个独立的输入 / 输出端口,每个端口的并行数据宽度为 8 位。三个端口分别为 A 端口, B 端口, C 端口,可分别与不同的外设进行数据交换,也可联合使用, 在中断方式下实现 CPU与外设间的数据传递。 8255A 提供方式 0,方式 1,方式 2 三种工作方式供选择。2. 可编程定时器计数器8253 的工作方式(1)方式

9、 0:操作类型为先读写低字节再读写高字节,工作在方式3 即方波发生器,计数格式为BCD码,计数初值为0。(2)方式 1:操作类型为先读写低字节再读写高字节,工作在方式1 即可重触发的单稳态触发器,计数格式为BCD码, 计数初值为 0。(3)方式 2:操作类型为先读写低字节再读写高字节,工作在方式3 即方波发生器,计数格式为BCD码,计数初值为0。六、软件设计DATASEGMENTBZDB00HDATAENDSCODESEGMENTASSUME DS:DATA,CS:CODESTART:MOVAX,DATA-8-/23MOVDS,AX;8255A 初始化MOV AL,88H;置 8255A 工作

10、方式OUT 63H,ALXORAL,AL;B 口、 C 口初始化OUT 61H,ALOUT 62H,AL;8253 初始化MOV AL,37H;置 8253方式 0控制字OUT 43H,ALMOV AL,00H;置 8253方式 0计数初值为 4000OUT 40H,ALMOVAL,40HOUT 40H,ALMOV AL,73H;置 8253方式 1 控制字OUT 43H,ALMOVAL,00H;置 8253方式 1计数初值为 3000-9-/23OUT 41H,ALMOVAL,30HOUT 41H,ALMOV AL,0B7H;置 8253方式 2控制字OUT 43H,ALMOVAL,00HO

11、UT 42H,ALMOVAL,00H;置 8253方式 2计数初值为 0OUT 42H,AL;中断设置MOV AX,0000HMOV DS,AX;MOV BX,0457HMOV AL,31HMOV CX,8LOP4:MOV BX,ALINC BX-10-/23INC ALLOOP LOP4MOV AX, OFFSET KKK1MOV 00A8,AXMOV AX,0000HMOV 00AA,AXMOV AX, OFFSET KKK2MOV 00AC,AXMOV AX,0000HMOV 00AE,AXMOV AX, OFFSET KKK3MOV 00B0,AXMOV AX,0000HMOV 00B

12、2,AXMOV AX, OFFSET KKK4MOV 00B4,AXMOV AX,0000HMOV 00B6,AX-11-/23MOV AX, OFFSET KKK5MOV 00B8,AXMOV AX,0000HMOV 00BA,AXMOV AX, OFFSET KKK6MOV 00BC,AXMOV AX,0000HMOV 00BE,AXMOV AX, OFFSET KKK7MOV 00C0,AXMOV AX,0000HMOV 00C2,AXMOV AX, OFFSET KKK8MOV 00C4,AXMOV AX,0000HMOV 00C6,AXSTI;使 IF 置 1,开放可屏蔽中断;主循环

13、-12-/23LOPM:INAL,62H;检测开始键TESTAL,20H;检测 C 口的 PC5 端JZLOP2;开始键未按下即 PC5=0, 则跳转检测;复位键LOP1:INAL,62H;检测开始键是否已经弹起,即 PC5=0TESTAL,20HJNZLOP1;开始键没有弹起再重新检测MOVAL,00H;关 LED 显示器OUT61H,AL;送到 B 口MOVAL,08H;绿灯亮OUT 62H,AL;送到 C 口MOVBZ,0FFH;置标志STILOP2:INAL,62H;检测复位键TESTAL,10H;检测 C 口的 PC4 端JZLOPM;复位键未按下即PC4=0, 则跳转再检; 测开始

14、键-13-/23LOP3:IN AL,62H;检测复位键是否弹起 ,即 PC4=0TEST AL,10HJNZ LOP3;位键没有弹起 ,则重新检测MOVAL,00H;关 LED 显示器、指标灯OUT 61H,ALOUT 62H,ALMOVBZ,00H;清标志STIJMPLOPM;中断服务子程序KKK1:PUSHAX;保护现场PUSHBXPUSHDXPUSHDSCLI;并使本次中断压入堆栈中的 IF=0MOV AL,06HOUT 61H,ALCALL PUBLIC-14-/23POPDS;恢复现场POPDXPOPBXPOPAXIRETKKK2:PUSHAX;保护现场PUSHBXPUSHDXPU

15、SHDSCLI;并使本次中断压入堆栈中的 IF=0MOV AL,5BHOUT 61H,ALCALL PUBLICPOPDS;恢复现场POPDXPOPBXPOPAXIRET-15-/23KKK3:PUSHAX;保护现场PUSHBXPUSHDXPUSHDSCLI;并使本次中断压入堆栈中的IF=0MOV AL,4FHOUT 61H,ALCALL PUBLICPOPDS;恢复现场POPDXPOPBXPOPAXIRETKKK4:PUSHAX;保护现场PUSHBXPUSHDXPUSHDSCLI;并使本次中断压入堆栈中的IF=0-16-/23MOV AL,66HOUT 61H,ALCALL PUBLICPO

16、PDS;恢复现场POPDXPOPBXPOPAXIRETKKK5:PUSHAX;保护现场PUSHBXPUSHDXPUSHDSCLI;并使本次中断压入堆栈中的 IF=0MOV AL,6DHOUT 61H,ALCALL PUBLICPOPDS;恢复现场POPDX-17-/23POPBXPOPAXIRETKKK6:PUSHAX;保护现场PUSHBXPUSHDXPUSHDSCLI;并使本次中断压入堆栈中的 IF=0MOV AL,7CHOUT 61H,ALCALL PUBLICPOPDS;恢复现场POPDXPOPBXPOPAXIRETKKK7:PUSHAX;保护现场PUSHBX-18-/23PUSHDXP

17、USHDSCLI;并使本次中断压入堆栈中的IF=0MOV AL,07HOUT 61H,ALCALL PUBLICPOPDS;恢复现场POPDXPOPBXPOPAXIRETKKK8:PUSHAX;保护现场PUSHBXPUSHDXPUSHDSCLI;并使本次中断压入堆栈中的IF=0MOV AL,7FHOUT 61H,AL-19-/23CALL PUBLICPOPDS;恢复现场POPDXPOPBXPOPAXIRETPUBLIC:TESTBZ,0FFH;判断标志位是否为 FFHJZLOP5MOVAL,00H;置 8253方式 2 计数值OUT 42H,ALMOVAL,10HOUT 42H,ALMOVA

18、L,03H;黄灯亮,抢答成功OUT62H,ALJMPKKKLOP5: MOVAL,00H;置 8253方式 2 计数值OUT 42H,ALMOVAL,20H-20-/23OUT42H,ALMOVAL,05H;红灯亮,抢答违规OUT 62H,ALKKK:MOVAL,20H;中断结束;防止中断重复响应OUT 20H,ALCODEENDSENDSTART七、调试过程(1)在刚开始编程时,各种功能大部分是由主程序来完成的。由于主程序过于复杂,可读性不高。 使得在以后的程序的调试中遇到了很大的麻烦。 后来把主程序的部分功能转化成子程序来实现, 并在一些重要的地方增加了注释, 使的程序的可读性大大加强。调

19、试也变的比较简单了。到此基本解决了第一个问题。(2)在编程时,子程序的调试也是相当重要,由于子程序不可避免的使用AXBXCXDX通用寄存器一个或几个。使得原主程序中的通用寄存器的内容很容易被覆盖 , 对子程序中所有的通用寄存器出入栈即可以避免上诉的问题,不用考虑使用的是哪几个寄存器, 使用起来又比较简单方便。 所以至此这个问题也已基本解决。(3)调试是一个复杂烦琐而漫长的过程。在调试的过程中一定要耐下心来去做,否则一旦出现烦躁的心里,就会事倍功半,适得其反。在本次设计中出现的主要问题即如上所述, 解决方法也如上所述, 在今后的软件调试过程中更应注意如上问题。八、系统操作说明-21-/23比赛开

20、始,在主持人按下开始键, 绿灯亮后,选手才可开始抢答, 否则违规。若选手抢答成功, LED显示器显示选手号码,扬声器鸣叫。若选手抢答违规(主持人未按开始键),LED 显示器显示违规选手号码,红灯亮,扬声器报警。若系统提示某号选手抢答违规,主持人仍未按开始键,此时该号选手又按下抢答键,LED显示器显示该选手的号码。本系统开机后,若主持人既未按复位键又未按开始键,此时有选手按下抢答键,系统提示红灯亮,并报警。注:1、抢答成功,置8253 方式 2 计数值为1000,扬声器的鸣叫声音频率为1MHz/1000=1KHz。2、抢答失败,置8253 方式 2 计数值为2000,扬声器的鸣叫声音频率为1MHz/2000=0.5KHz。3、扬声器鸣叫或报

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论