汇编语言与微机接口小设计——>抢答器(6路)

随着电子技术的发展,计算机在现代科学技术的发展中起着更加重要的作用。各种技术都离不开计算机,计算机已经在人们生活的各个方面普及了。本课程设计是微机原理及接口技术的应用。运用所学的微机原理和接口技术知识完成六路竞赛抢答器。通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了六路抢答器出现的各种情况。该抢答器以主持人为中心,操作抢答器的开始与复位,选手们可以根据主持人的提示进行抢答,该抢答器基本能满足现在市场所需抢答器的需要,设计简单,成本低,适合小型抢答场合。

功能如下:
硬件测试通过。8259能够实现中断。8254能够实现呼吸灯。8255能够控制L8—L15的亮与灭。
启动与复位。主持人按KK1+键表示表示启动一次抢答,绿色发光二极管亮作允许抢答指示。此时选手侧可以按动各自的抢答按钮。主持人按KK2+表示复位。红绿指示灯全灭,选手灯全灭。主持人可以再次按KK1+键,启动下一次抢答。
抢答。使用实验仪的逻辑电平开关K0-K5来代表6个抢答按钮。当开关向上拨时表示按下按钮。收到第1个抢答信号后,主持人侧红色发光二极管亮(绿色发光二极管仍然亮)作已经有人抢答指示。
显示选手灯。在单个LED灯上显示抢先一组的组别。
在数码管上显示选手编号。
同时考虑抢答允许时间,10秒内有效。10秒之后无人抢答,本次抢答作废。

1、设计思路
首先初始化8255,然后判断是启动还是复位操作,若是复位操作,则控制8255输出的数据使绿色和红色指示灯、LED灯全灭;否则启动下一次抢答,使绿色发光二极管亮;当8255的输入口PB有不为0的数据时,则使绿色发光二极管灭并使红色发光二极管点亮。并判断先拨动开关的组号,在LED灯上显示出其组号。最后使用LED 8段数码管,显示选手编号。
2、使用的I/O设备
输入设备有:8个开关K0~K7。两个按键,KK1+和KK2+。
输出设备有:8个LED灯L0~L7。一位数码管显示器。
3、使用的芯片
8259芯片,8255芯片,8254芯片
4、芯片的作用
(1)8259芯片,实现中断控制。结合8254实现定时中断。启动和停止也由相应的中断服务程序实现。有三个中断源开放,MIR6、MIR7和SIR1。MIR6接OUT0,MIR7接KK1+,SIR1接KK2+。
(2)8255芯片,有PA、PB和PC三个并行口。PA口接8个开关的输入,让PB口去控制选手LED灯L0~L7。PC口自然去接数码管。
(3)8254芯片,实现硬件定时。定时10s。有两个通道CNT0和CNT1可用。选用CNT0和CNT1使用。
四、硬件线路设计
1、硬件接线图


1、程序流程图

TIMER0      EQU     0600H       ;IOY0
TIMER1      EQU     0602H
TIMER2      EQU     0604H
TIMERM     EQU     0606H
P8255A      EQU     0640H       ;IOY1
P8255B      EQU     0642H
P8255C      EQU     0644H
P8255M      EQU     0646H
;---------------------------------------------------------------
DATA        SEGMENT
DISCODE     DB      3FH,06H,5BH,4FH,66H,6DH,7DH,07H     ;0--7的显示代码DB      7FH,6FH,77H,7CH,39H,5EH,79H,71H     ;8--F的显示代码
STA          DB      00H
TIME         DW      500
COUNT       DB      100
DATA         ENDS
SSTACK      SEGMENT PARA    STACK   'STACK'DW      32  DUP(?)
SSTACK      ENDS
CODE        SEGMENT ASSUME  CS:CODE, DS:DATA,SS: SSTACK
START:       MOV     AX,DATA    MOV     DS,AX
;--------------------------------------------------------------- 8255初始化
INITA:      MOV     DX, P8255M MOV     AL, 90H OUT     DX, AL MOV     DX, P8255B MOV     AL, 0FFH OUT     DX, AL
;--------------------------------------------------------------- 中断芯片
INITB:      PUSH     DSMOV     AX,0000H MOV     DS,AX       MOV     AX,OFFSET    MIR7MOV     SI,003CHMOV     [SI],AXMOV     AX,CSMOV     SI,003EHMOV     [SI],AXMOV     AX,OFFSET    MIR6MOV     SI,0038HMOV     [SI],AXMOV     AX,CSMOV     SI,003AHMOV     [SI],AXMOV     AX, OFFSET   SIR1 MOV     SI, 00C4H MOV     [SI], AX MOV     AX, CS MOV     SI, 00C6H MOV     [SI], AX CLI  POP     DS
;---------------------------------------------------------------主片MOV     AL,11HOUT     20H,AL          ;ICW1MOV     AL,08HOUT     21H,AL          ;ICW2MOV     AL,04HOUT     21H,AL          ;ICW3MOV     AL,01HOUT     21H,AL          ;ICW4
;-------------------------------------------------------------初始化从片8259 MOV     AL, 11H OUT     0A0H, AL        ;ICW1 MOV     AL, 30H OUT     0A1H, AL        ;ICW2 MOV     AL, 02H OUT     0A1H, AL        ;ICW3 MOV     AL, 01H OUT     0A1H, AL        ;ICW4
;--------------------------------------------------------------- MOV     AL, 0FDH        ;OCW1 = 1111 1101BOUT     0A1H,AL         MOV     AL,2BH          ;OCW1 = 00101011BOUT     21H,AL    STI
;--------------------------------------------------------------- 定时器芯片
INITC:      MOV     DX, TIMERM      ;8254控制字 MOV     AL, 36H         ;计数器0,方式3 OUT     DX, AL MOV     DX, TIMER0MOV     AX, 20000 OUT     DX, AL MOV     AL, AHOUT     DX, AL MOV     DX, TIMERM      ;8254控制字 MOV     AL, 76H         ;计数器1,方式3 OUT     DX, ALMOV     DX, TIMER1MOV     AX, 1000 OUT     DX, AL MOV     AL, AH OUT     DX, AL
;--------------------------------------------------------------- 8255初始化
INITD:      NOP
;---------------------------------------------------------------
BEGIN:      NOP
AA2:        JMP     AA2
;---------------------------------------------------------------
MIR7        PROC    NEARPUSH    AXPUSH    DXMOV     AX,0137HINT     10H             ;显示字符7MOV     AX,0120HINT     10HMOV AL,STACMP AL,01HJNZ M7END;状态位不是01的话就结束  可能存在一个刚按下start就来中断的情况  需要在start里面重新初始化8254MOV  DX,21HIN    AL,DXOR   AL,11000000B;关中断OUT  DX,AL;----------选手灯全灭MOV  DX,  P8255CMOV  AL,  10000000B;状态灯pc7 pc6    1  0 代表无人抢答       OUT   DX,  ALMOV   DX,  P8255BMOV   AL,  0;全灭代表8.亮OUT   DX,  ALMOV  AL,   10HMOV  STA,  ALM7END:   MOV     AL,20HOUT     20H,ALPOP     DXPOP     AX         RET
MIR7        ENDP
;---------------------------------------------------------------
MIR6        PROC    NEARPUSH    AXPUSH    DXMOV     AX,0136HINT     10H             ;显示字符6MOV     AX,0120HINT     10HMOV  BX,  TIMEDEC  BXMOV  TIME,  BXJNZ   SWAPCALL  MIR7SWAP:   MOV  DX,  P8255AIN   AL,  DXCK_STA: MOV  AH,  STACMP   AH,  01HJNZ   M6END;检测状态位是否为01HCK_K:   TEST  AL,  0FFHJZ  M6END  MOV  DX,  21H;想读中断控制字,屏蔽MIR7MIR6和IN  AL,  DXOR  AL,  11000000B;开中断交给SIR1OUT  DX,  ALCALL  SWITCH;今晚调通MOV  STA,11H;转换状态M6END:   MOV     AL,20HOUT     20H,AL  POP     DXPOP     AX            IRET
MIR6        ENDP
SIR1        PROC    NEARPUSH    AXPUSH    DXMOV     AX,0131HINT     10H             ;显示字符1MOV     AX,0120HINT     10HMOV  DX, 21HIN  AL, DXMOV  TIME,500;这里重新对time进行处理CALL  ALTER   ;调用状态转换函数MOV     AL, 20H OUT     0A0H, AL OUT     20H, ALPOP     DXPOP     AX           IRET
SIR1        ENDP;---------------------------------------------------以下为子程序
DELAY:      PUSH    SIPUSH    CXMOV     SI, 00FFH
D11:        MOV     CX, 00FFH
D22:        LOOP    D22DEC     SIJNZ     D11             ;延时结束POP     CX              POP     SIRET
;---------------------------------------------------------------
ALTER       PROC    NEARPUSH    AXMOV     AL,STATEST    AL,01HJZ      EVEN1
ODD1:       MOV     STA,0CALL    SUBR1JMP     DONE2
EVEN1:      MOV     STA,01HCALL    SUBR2
DONE2:      POP     AXRET
ALTER       ENDP
SUBR1       PROC    NEARPUSH    AXPUSH    DX;---------选手灯,数码管全灭,状态转换为00H PC7 PC6灯的问题MOV DX,P8255CMOV AL,00HOUT DX,ALMOV DX,P8255BMOV AL,0FFHOUT DX,ALPOP     DXPOP     AXRET
SUBR1       ENDP
SUBR2       PROC    NEARPUSH    AXPUSH    DX;-----------------准备干活了  确保10s中断不会被打断MOV DX,P8255CIN AL,DXMOV AL,01000000B;01H红绿灯OUT DX,AL;----------------------------------重新初始化8254 防止出现不到十秒就中断的情况MOV     DX, TIMER0MOV     AX, 20000OUT     DX, AL MOV     AL, AHOUT     DX, ALMOV     DX, TIMER1MOV     AX, 1000 OUT     DX, AL MOV     AL, AH OUT     DX, AL  ;--------------------------------IN AL,21HAND AL,00111111B;允许中断OUT 21H,AL;-------------------------------POP     DXPOP     AXRET
SUBR2       ENDP
SWITCH      PROC        NEAR                ; PUSH  AXPUSH  DXMOV     DX,P8255A  ;判断A口开关状态IN        AL,DXMOV DX,P8255COR AL,0C0HOUT DX,ALMOV     DX,P8255ATEST  AL,01HJNZ       K1TEST  AL,02HJNZ       K2TEST  AL,04HJNZ       K3TEST  AL,08HJNZ       K4TEST  AL,10HJNZ       K5TEST  AL,20HJNZ       K6JMP       DOWN4;利用分支实现选手灯亮,以及状态从01H-->11HK1:    MOV     AL,06HMOV    STA,11HJMP     DONEK2:MOV      AL,5BHMOV    STA,11HJMP     DONEK3: MOV     AL,4FHMOV    STA,11HJMP     DONEK4: MOV     AL,66HMOV    STA,11HJMP     DONEK5: MOV     AL,6DHMOV    STA,11HJMP     DONEK6:MOV      AL,7DHMOV    STA,11HJMP     DONE
DONE:      MOV      DX,P8255BOUT        DX,AL
DOWN4:      POP     DXPOP       AXRET
SWITCH      ENDP
;---------------------------------------------------------------
CODE        ENDSEND     START
;---------------------------------------------------------------
CODE        ENDSEND     START

下面送上实验结果图何连线图——>

汇编语言小设计——抢答器相关推荐

  1. 微型计算机原理课设抢答器,微机原理课程设计抢答器.doc

    西安郵電大学 硬件课程设计报告 题 目: 抢 答 器 院系名称:计算机学院 专业名称:班 级: 学生姓名:学号(8位):指导教师:设计起止时间 设计目的 用逻辑开关模拟竞赛抢答器按钮(共8个开关:K0 ...

  2. 数电课程设计--抢答器系统概述

    一.题目: 1.基本要求 ①主持人利用开关控制系统的清零和抢答开始. ②电路具有第一抢答信号的鉴别和锁存功能,并显示抢中的选手编号. ③在主持人将系统复位并发出抢答指令后,开始抢答,定时器开始工作,数 ...

  3. verilog设计抢答器【附源码】

    抢答器设计 1.实验平台 2.实验目的 2.1.实验内容 3.实验流程 3.1.实验原理 3.2.系统架构 3.3.子功能模块设计 3.3.1.中央控制模块 模块框图 信号定义 设计文件 3.3.2. ...

  4. c51抢答器程序汇编语言,单片机课程设计抢答器word 含汇编语言源程序,仿真

    OK EQU 20H;抢答开始标志位 RING EQU 22H;响铃标志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0IN ...

  5. c51抢答器程序汇编语言,c51单片机汇编语言单片机八位抢答器程序

    OK EQU 20H RING EQU 22H ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJ ...

  6. c51抢答器程序汇编语言,单片机八路抢答器proteus仿真带汇编语言源程序 原理图...

    OK EQU 20H                       ;抢答开始标志位 RING EQU 22H                     ;响铃标志位 DATA0 EQU 36H     ...

  7. 51单片机八位抢答器c语言设计,基于51单片机八路抢答器的设计

    基于51单片机八路抢答器的设计 毕业设计(论文)题 目:基于 51 单片机八路抢答器的设计 系 部: 专 业: 学 号: 学生姓名: 指导教师姓名: 指导教师职称: 2013 年 xx 月 xx 日X ...

  8. 51单片机抢答器c语言代码,使用51单片机实现抢答器的设计资料和代码说明

    在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务.如果在抢答中,靠视觉是很难判断出哪组先答题.利用单片机系统来设计抢答器,使以 ...

  9. 用c语言设计八路抢答器的犯规程序,八路抢答器电子线路设计(附C语言程序) - 图文...

    电子系统课程设计 第三章 硬件电路设计 3.1总体设计 根据抢答器的基本功能,可以设计出如下: 3.1总体设计 图3-1 总体设计 8 电子系统课程设计 3.2 外部振荡电路的设计 图3-2 外部振荡 ...

最新文章

  1. 暑期集训1:C++STL 例2:UVA-10935
  2. 请编写出一个html页面 令其输出,javaweb程序设计案例教程_课后习题1.pdf
  3. 网页加载报错——URL网页连接错误
  4. __proto__(隐式原型)与prototype(显式原型)
  5. JavaXml教程(二)使用DOM方式解析XML文件
  6. 【转】两种方法教你在Ubuntu下轻松关闭触摸板(TinkPad)
  7. 2019-03-11-算法-进化(求众数)
  8. 还有那个bspider不知道哪里的飞鸽传书
  9. ss模型复模态的物理意义及adams复模态振型求解
  10. 四种方式话Equal
  11. python数据结构之列表(list)——超详细
  12. js 数字格式化,只能输入正负整数,小数
  13. 支持向量机(SVM)凸二次规划的求解——序列最小最优化算法(SMO)原理及python实现
  14. 【JAVA】Socket文件上传遇到的问题!~
  15. 如何使用hMailServer+云服务器搭建个人邮箱
  16. wifi 性能 测试 android,WiFi性能测试app下载
  17. Java中的控制(耦合)反转
  18. 【操作系统】知识梳理(八)磁盘存储器的管理
  19. datagrip 设置查询结果显示行数
  20. 优秀的朋友圈,到底有多重要!(深度好文)

热门文章

  1. 基于matlab的电机运行分析,电机模型分析及拖动仿真:基于MATLAB的现代方法
  2. Qt界面优化:鼠标双击特效
  3. seqminopt matlab,smo算法matlab实现
  4. Chrome浏览器发送两次请求
  5. 关于PL2303用于STC单片机下载的讨论
  6. 工作总结与述职报告ppt模板
  7. 洛谷P1118 [USACO06FEB]数字三角形Backward Digit Su…
  8. android内容复制到剪贴板
  9. 实例介绍TensorFlow的输入流水线
  10. SpringBoot 定时任务的实现