马世宽微机原理作业_第1页
马世宽微机原理作业_第2页
马世宽微机原理作业_第3页
马世宽微机原理作业_第4页
马世宽微机原理作业_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理作业 题 目: 基于微机总线的计算器设计 学 院: 机电工程学院 专 业: 机械电子 姓 名: 马世宽 学 号: 2014020274 指导老师: 杨杰 2015年1月5日基于微机总线的计算器设计1.设计要求 设计基于微机总线的计算器,要求能完成一位数位数的四则运算。硬件为基于ISA总线的接口板,包括键盘、LED或液晶显示。软件方面则需通过编程来实现运算功能。2.设计原理设计的思路是:首先对键盘进行扫描,如有按键按下,确定并判断键值,将该值储存并显示在LED屏上。如有“=”按下,则调取存储的数据进行相应的计算,并将结果显示在屏幕上。设计硬件如图2.1所示。图2.1电路图3.硬件功能3.

2、1可编程并行通信接口芯片8255A图3.1 8255内部原理图图3.2 8255引脚图3.1.1 并行输入/输出端口A,B,C 8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7PA0、PB7PB0、PC7PC0。端口都是8位,都可以作为输入或输出。通常将端口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。3.1.2 A组和B组控制部件端口A和端口C的高4位(PC7PC4)构成A组;由A组控制部件实现控制功能。 端口B和端口C的低4位(PC3PC0)构成B组;由B组控制部件实现控制功能

3、。 A组和B组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0D7)送来的控制字,并根据他们来定义各个端口的操作方式。3.1.3 数据总线缓冲存储器 三态双向8位缓冲器,是8255A与总线之间的数据接口。与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。3.1.4读/写控制部件 8255A完成读/写控制功能的部件。能接收CPU的控制命令,并根据控制命令向各个功能部件发出操作指令。CS 片选信号:由CPU输入,有效时表示该8255A被选中。 RD, WR 读、写控制信号:由CPU输入。RD有效表示CPU读8255A,WR有效表示CPU写8255A。RESET

4、复位信号:由CPU输入。RESET信号有效,清除8255A中所有控制字寄存器内容,并将各个端口置成输入方式。定义工作方式控制字:工作方式0:8255A中各端口的基本输入/输出方式。键盘输入模块图3.3 8255控制口3.2键盘下图是一个4x4键盘的结构图,因为4x4键盘有8个管脚,于是将键盘接8255A的PC口,进行键盘扫描一般要求有一部分的I/O口的工作方式是输入,另一部分I/O是输出,具体到4x4键盘则要求4个I/O引脚输入,另外4个输出,这一点PC口刚好符合,而PA、PB口要么全部输入或输出,所以只能是PC口接键盘。图3.4 键盘3.3 LED显示屏 因为要计算-99的四则运算,为了显示

5、更加清晰、明了,本次设计共使用了5块LED显示屏,这样就可以显示出输入的算式。电路图如下图所示。图3.5 LED显示屏4. 软件设计4.1 程序流程图8255初始化键盘扫描开始两次结果是否相同?记录并显示判断并计算显示结果结束开始有键按下?延时按键为“=”?开始有键按下?否延时是记录并显示否是否是图4.1 主程序流程图4.2 程序代码编程也可以主要分为三部分;键盘扫描、数据处理、数码管显示,另外还有译码电路,8255A口的地址是0040H,B口地址为0041H,C口地址为0042H,控制字寄存器地址0043H。8255A采用的是方式0,A、B口输出,C口的高低四位作为两个4位的端口。PORT_

6、A EQU 40H ;8255 A口地址PORT_B EQU 41H ;8255 B口地址PORT_C EQU 42H ;8255 C口地址PORT_CTL EQU 43H ;8255 控制口地址DATA SEGMENTZIFUCHUAN DB 80 DUP(?);保存输入的字符串NUMBER1 DB 0;保存第一个操作数NUMBER2 DB 0;保存第二个操作数NUMBER1SIGN DB '+'第一个数的符号 NUMBER2SIGN DB '+'第二个数的符号COMPUTESIGN DB '#'运算符号 H DB 0 ;键盘行号 L DB 0

7、 ;键盘列号 DISCODE  DB   3FH,06H,5BH,4FH, 66H,6DH,7DH,07H, 7FH,6FH, 4BH,03H,B4H,30H ;数字及运算符号段码表DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA MAIN PROC FARBEGIN:PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXSTART1:MOV NUMBER1SIGN,'+'MOV NUMBER2SIGN,'+'MOV COMPUTES

8、IGN,'#'对所有的数据进行初始化 MOV AX,0MOV BX,0MOV DI,0MOV SI,0MOV CX,0MOV DX,0MOV NUMBER1,0MOV NUMBER2,0 MOV DI,OFFSET ZIFUCHUAN CALL KEYKEY PROC NEAR ;键盘扫描子程序MOV DX, PORT_CTLMOV AL, 10000001BOUT DX,AL ;送控制字KS: ;检查有无按键按下MOV DX, PORT_CMOV AL,00H ;低四行送0OUT DX,ALIN AL,DXAND AL,0FH ;检查高四列CAM AL,0FHJNE XSH1

9、 ;无键按下,跳转MOV CX,50 LOOP $             ;延时消抖 IN  AL,DX        ;重读列值 AND AL,0FH CAM AL,0FHJNE XSH1       MOV H,0    &

10、#160;      ;有键按下,先把行列号变量清0 MOV L,0 MOV BH,0EH     ; 扫描法读键值:NEXT: MOV AL,BH OUT   PORT_C,AL NEXTH:IN  AL,PORT_C      读列值,判断是第几列有键按下 AND AL,0FHCMP AL,0F

11、HJNE NEXTLROL BH,01INC H ;每读一列,H加1JMP NEXTNEXTL: ;读行值MOV DX, PORT_CTLMOV AL, 10010000B OUT DX,ALMOV BH,E0HNEXTL1:MOV AL,BHIN  AL,PORT_C      读行值,判断是第几行有键按下 AND AL,0FHCMP AL,0FHJNE DONEROL BH,01INC L ;JMP NEXTL1DONE: CALL KEYCHECK JMP EXITXSH1: CALL XIANSH

12、I JMP EXITEXIT: RETKEY ENDPKEYCHECK PROC NEAR ;键值计算子程序MOV DL,L MOV DH,H SHL DL,1 SHL DL,1            列号乘4 ADD DL,DH CMP DL,9          &

13、#160; 按下的是数字键 JNG NUM_CALL CMP DL,14 JL  CONT_CALL    按下的是运算键 CMP DL,14 JZ  OUTP_CALL     按下的是等于键NUM_CALL:  MOV ZIFUCHUANSI, DLINC SICALL XIANSHICONT_CALL:  MOV ZIFUCHUAN

14、SI, DL           存放运算键的键值   INC SI CALL XIANSHIJMP EXIT1 OUTP_CALL:CALL CHECKJAMP EXIT1EXIT1:    RET KEYVALUE  ENDPXIANSHI PROC NEAR ;显示子程序MOV SI,0KSH:MOV AL,ZIFUCHUANSIMOV BX,OFSET DISCODEXLAT D

15、ISCODE ;查表,取段码 MOV DX, PORT_A OUT DX,AL ;段码送PA口 MOV DX, PORT_B OUT DX,SI MOV CX,50  LOOP $  ;延时 INC SI CMP SI,2 JBE KSH RETXIANSHI ENDP MAIN ENDPCHECK PROC NEAR ;第一个数的识别 MOV SI,0 MOV AL,ZIFUCHUANSI MOV NUMBER1,AL INC SI CALL CHECK1 JMP EXIT1EXIT1:RETCHECK ENDPCHECK1 PROC NEAR ;运算

16、符的识别 MOV AL,ZIFUCHUANSI CMP AL,0AHJZ COMPUTE1 ;将运算符保存CMP AL,0BJZ COMPUTE1CMP AL,0CHJZ COMPUTE1CMP AL,0DHJZ COMPUTE1COMPUTE1: MOV COMPUTESIGN,AL;记录为运算符号INC SI CALL CHECK2CHECK1 ENDP CHECK2 PROC NEAR ;检验第二个数字 MOV AL,ZIFUCHUANSI MOV NUMBER2,AL INC SI CALL CHECK3 JMP EXIT2EXIT2:RET CHECK2 ENDPCHECK3 PRO

17、C NEAR ;比较运算符 CMP COMPUTESIGN,0CH ;12为乘法JZ MULTIPLY1CMP COMPUTESIGN,0DH ;13为除法JZ DEVIDE11CMP COMPUTESIGN,0AH ;10为加法JZ PLUS1CMP COMPUTESIGN,0BH ;11为减法JZ MINUS1JMP EXIT3MULTIPLY1:CALL MULTIPLYJMP EXIT3DEVIDE11:CALL DIVIDEJMP EXIT3PLUS1:CALL PLUSJMP EXIT3MINUS1:CALL MINUS EXIT3:RETCHECK3 ENDPMULTIPLY PROC NEAR;两个数的乘法运算MOV AL,NUMBER1MOV CL,NUMBER2; MUL CL MOV SI,0 MOV ZIFUCHUANSI,AH INC SI MOV ZIFUCHUANSI,AL CALL XIANSHIRETMULTIPLY ENDPDIVIDE PROC NEAR ;除法运算 MOV AL,NUMBER1MOV BL,NUMBER2DIV B

温馨提示

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

评论

0/150

提交评论