当前位置:文档之家› 汇编语言八路抢答器设计说明书

汇编语言八路抢答器设计说明书

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

六、软件设计 (8)七、调试过程 (21)八、系统操作说明 (21)九、总结 (22)十、参考文献 (22)八路抢答器设计一、设计目的1、掌握微机系统的开发步骤;2、掌握抢答器控制编程方法和芯片8255、8253的逻辑功能、键盘中断及使用方法和数码管的用法;3、掌握一定的汇编语言知识,培养自己的动手操作能力。

4、学习程序设计的基本思路和方法。

因此,本次设计要求对微机原理的理论知识,8255A,8253,键盘显示区的工作方式、工作原理熟练掌握。

二、设计要求当按开始键,绿灯亮后,选手抢答,1-8号选手中先按下按键者,LED数码管显示其选手号码(后按下无效),并进行声光报警(黄灯亮)提示。

当按开始键未按下时,如果有选手抢答,LED数码管显示其选手号码,并进行声光报警(红灯亮)提示。

三、系统功能一个具有8路抢答的抢答器,利用并行接口和开关键。

键盘上数字键1--8代表抢答按钮,当某个逻辑开关闭合时(开始键按下未按起时),相当于抢答按钮按下,此时在七段数码管上将其号码显示出来,并使喇叭响一声(或者以发光二极管代替)。

四、总体设计1. 基本工作原理当按开始键按下时,绿灯亮后,选手才可抢答,否则违规。

若抢答成功,LED 显示器显示选手号码,黄灯亮,扬声器鸣叫;若抢答违规(未按下开始键),LED 显示器显示违规选手号码,红灯亮,扬声器报警。

1.1可编程并行接口接口芯片8255A控制字要求(1)、B口工作在方式0,做为输出端口,经驱动器1连接LED显示器(PB7~PB0依次对应连接LED显示器的dp、g、f、e、d、c、b、a七段数码管管脚);(2)、C口也必须工作在方式0,高4 位做输入端口(本次设计中只用PC4、PC5,分别用于连接复位键和开始键),低4位做输出端口(PC3~PC0,经驱动器2后PC1、PC2、PC3分别用于连接黄、红、绿三个发光二极管,PC0连接到8253的GATE1端,以控制方式1的计数)。

1.2可编程定时器/计数器8253控制字要求(1)、方式0:操作类型为先读写低字节再读写高字节,工作在方式3即方波发生器,计数格式为BCD码,计数初值为0。

(2)、方式1:操作类型为先读写低字节再读写高字节,工作在方式1即可重触发的单稳态触发器,计数格式为BCD码,计数初值为0。

(3)、方式2:操作类型为先读写低字节再读写高字节,工作在方式3即方波发生器,计数格式为BCD码,计数初值为0。

2.硬件总体设计2.1系统总成方案该竞赛抢答器所要器件:可编程并行接口接口芯片8255、可编程定时器/计数器8253,三个一样的驱动器,黄、红、绿三个发光二极管,十三个电阻,一个8输入与非门,一个非门,一个扬声器,一个LED显示器,10个按键。

2.2内存单元编址(1)可编程并行接口接口芯片8255A的端口地址为60H、61H、62H、63H(2)可编程定时器/计数器8253的端口地址为40H、41H、42H、43H(3)特殊键中断号为2A---36,对应地址为00A8---00DB本实验用到数字键1--8,对应的ASCII为31H---38HLED显示器1--8对应的十六进制是:06H,5BH,4FH,66H,6DH,7CH,07H,7FH3.键盘、扬声器及显示功能的定义一个开始键一个复位键,另外8个数字键用做8位选手的抢答按键。

扬声器用与黄、红、绿三个发光二极管配合使用,黄灯亮扬声器鸣叫表示抢答成功,红灯亮扬声报警表示抢答违规报警,绿灯亮扬声器不鸣则表示主持人已按下开始键。

LED 显示器显示的内容与选手号对应,抢答成功或违规都要显示。

4.原理图4.1硬件原理框图图14.2 原理连线图按键设置82558 2 5 5 8086 CPU82538 2 5 4LED 灯 LED 显 示 模扬声器声光报警键盘输入4.3软件总体设计 主程序流程图:N YNYNYNY检测开始键是否弹起置标志位值为FFH 使IF=1开放中断对8255、8253进行初始化 开始检测复位键是否按下 检测开始键是否按下设置抢答键键盘中断向量并使IF 置1开放中断 关闭LED 显示器设置LED 字形码初值、标志初值设置设置抢答键中断向量并使检测开始键是否弹起LED 字形码初值、标志初值 对8259A 、8255、8253进行初始化 IF 置1开放中断 检测开始键是否按下 点亮绿灯关闭LED 显示器、指示灯将标志位清零,使IF=1开入中断检测复位键是否弹起结束图3五、硬件设计1.可编程并行接口接口芯片8255A的工作方式8255A具有三个独立的输入/输出端口,每个端口的并行数据宽度为8位。

三个端口分别为A端口,B端口,C端口,可分别与不同的外设进行数据交换,也可联合使用,在中断方式下实现CPU与外设间的数据传递。

8255A提供方式0,方式1,方式2三种工作方式供选择。

2.可编程定时器/计数器8253的工作方式(1)方式0:操作类型为先读写低字节再读写高字节,工作在方式3即方波发生器,计数格式为BCD码,计数初值为0。

(2)方式1:操作类型为先读写低字节再读写高字节,工作在方式1即可重触发的单稳态触发器,计数格式为BCD码,计数初值为0。

(3)方式2:操作类型为先读写低字节再读写高字节,工作在方式3即方波发生器,计数格式为BCD码,计数初值为0。

六、软件设计DATA SEGMENTBZ DB 00HDATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AX;8255A初始化MOV AL,88H ;置8255A工作方式OUT 63H,ALXOR AL,AL ;B口、C口初始化专业资料OUT 61H,ALOUT 62H,AL;8253初始化MOV AL,37H ;置8253方式0控制字OUT 43H,ALMOV AL,00H ;置8253方式0计数初值为4000OUT 40H,ALMOV AL,40HOUT 40H,ALMOV AL,73H ;置8253 方式1控制字OUT 43H,ALMOV AL,00H ;置8253方式1计数初值为3000OUT 41H,ALMOV AL,30HOUT 41H,ALMOV AL,0B7H ;置8253方式2控制字OUT 43H,ALMOV AL,00HOUT 42H,ALMOV AL,00H ;置8253方式2计数初值为0OUT 42H,AL;中断设置MOV AX,0000HMOV DS,AX;MOV BX,0457HMOV AL,31HMOV CX,8LOP4:MOV [BX],AL专业资料INC BXINC 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 [00B2],AXMOV AX, OFFSET KKK4MOV [00B4],AXMOV AX,0000HMOV [00B6],AXMOV AX, OFFSET KKK5MOV [00B8],AXMOV AX,0000HMOV [00BA],AXMOV AX, OFFSET KKK6MOV [00BC],AXMOV AX,0000HMOV [00BE],AXMOV AX, OFFSET KKK7MOV [00C0],AXMOV AX,0000H专业资料MOV [00C2],AXMOV AX, OFFSET KKK8MOV [00C4],AXMOV AX,0000HMOV [00C6],AXSTI ;使IF置1,开放可屏蔽中断;主循环LOPM: IN AL,62H ;检测开始键TEST AL,20H ;检测C口的PC5端JZ LOP2 ;开始键未按下即PC5=0,则跳转检测;复位键LOP1: IN AL,62H ;检测开始键是否已经弹起,即PC5=0TEST AL,20HJNZ LOP1 ;开始键没有弹起再重新检测MOV AL,00H ;关LED显示器OUT 61H,AL ;送到B口MOV AL,08H ;绿灯亮OUT 62H,AL ;送到C口MOV BZ, 0FFH ;置标志STILOP2: IN AL,62H ;检测复位键TEST AL,10H ;检测C口的PC4端JZ LOPM ;复位键未按下即PC4=0,则跳转再检;测开始键LOP3: IN AL,62H ;检测复位键是否弹起,即PC4=0TEST AL,10HJNZ LOP3 ;位键没有弹起,则重新检测MOV AL,00H ;关LED显示器、指标灯OUT 61H,AL专业资料OUT 62H,ALMOV BZ,00H ;清标志STIJMP LOPM;中断服务子程序KKK1:PUSH AX ;保护现场PUSH BXPUSH DXPUSH DSCLI ;并使本次中断压入堆栈中的IF=0MOV AL,06HOUT 61H,ALCALL PUBLICPOP DS ;恢复现场POP DXPOP BXPOP AXIRETKKK2:PUSH AX ;保护现场PUSH BXPUSH DXPUSH DSCLI ;并使本次中断压入堆栈中的IF=0MOV AL,5BHOUT 61H,ALCALL PUBLICPOP DS ;恢复现场POP DXPOP BXPOP AXKKK3:PUSH AX ;保护现场PUSH BXPUSH DXPUSH DSCLI ;并使本次中断压入堆栈中的IF=0 MOV AL,4FHOUT 61H,ALCALL PUBLICPOP DS ;恢复现场POP DXPOP BXPOP AXIRETKKK4:PUSH AX ;保护现场PUSH BXPUSH DXPUSH DSCLI ;并使本次中断压入堆栈中的IF=0 MOV AL,66HOUT 61H,ALCALL PUBLICPOP DS ;恢复现场POP DXPOP BXPOP AXIRETKKK5:PUSH AX ;保护现场PUSH BXPUSH DXCLI ;并使本次中断压入堆栈中的IF=0 MOV AL,6DHOUT 61H,ALCALL PUBLICPOP DS ;恢复现场POP DXPOP BXPOP AXIRETKKK6:PUSH AX ;保护现场PUSH BXPUSH DXPUSH DSCLI ;并使本次中断压入堆栈中的IF=0 MOV AL,7CHOUT 61H,ALCALL PUBLICPOP DS ;恢复现场POP DXPOP BXPOP AXIRETKKK7:PUSH AX ;保护现场PUSH BXPUSH DXPUSH DSCLI ;并使本次中断压入堆栈中的IF=0 MOV AL,07HOUT 61H,AL专业资料CALL PUBLICPOP DS ;恢复现场POP DXPOP BXPOP AXIRETKKK8:PUSH AX ;保护现场PUSH BXPUSH DXPUSH DSCLI ;并使本次中断压入堆栈中的IF=0MOV AL,7FHOUT 61H,ALCALL PUBLICPOP DS ;恢复现场POP DXPOP BXPOP AXIRETPUBLIC:TEST BZ,0FFH ;判断标志位是否为FFHJZ LOP5MOV AL,00H ;置8253方式2计数值OUT 42H,ALMOV AL,10HOUT 42H,ALMOV AL,03H ;黄灯亮,抢答成功OUT 62H,ALJMP KKKLOP5: MOV AL,00H ;置8253方式2计数值OUT 42H,ALMOV AL,20HOUT 42H,ALMOV AL,05H ;红灯亮,抢答违规OUT 62H,ALKKK: MOV AL,20H ;中断结束;防止中断重复响应OUT 20H,ALCODE ENDSEND START七、调试过程(1)在刚开始编程时,各种功能大部分是由主程序来完成的。

相关主题