马世宽微机原理作业资料.docx

上传人:b****1 文档编号:14335635 上传时间:2023-06-22 格式:DOCX 页数:18 大小:319.40KB
下载 相关 举报
马世宽微机原理作业资料.docx_第1页
第1页 / 共18页
马世宽微机原理作业资料.docx_第2页
第2页 / 共18页
马世宽微机原理作业资料.docx_第3页
第3页 / 共18页
马世宽微机原理作业资料.docx_第4页
第4页 / 共18页
马世宽微机原理作业资料.docx_第5页
第5页 / 共18页
马世宽微机原理作业资料.docx_第6页
第6页 / 共18页
马世宽微机原理作业资料.docx_第7页
第7页 / 共18页
马世宽微机原理作业资料.docx_第8页
第8页 / 共18页
马世宽微机原理作业资料.docx_第9页
第9页 / 共18页
马世宽微机原理作业资料.docx_第10页
第10页 / 共18页
马世宽微机原理作业资料.docx_第11页
第11页 / 共18页
马世宽微机原理作业资料.docx_第12页
第12页 / 共18页
马世宽微机原理作业资料.docx_第13页
第13页 / 共18页
马世宽微机原理作业资料.docx_第14页
第14页 / 共18页
马世宽微机原理作业资料.docx_第15页
第15页 / 共18页
马世宽微机原理作业资料.docx_第16页
第16页 / 共18页
马世宽微机原理作业资料.docx_第17页
第17页 / 共18页
马世宽微机原理作业资料.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

马世宽微机原理作业资料.docx

《马世宽微机原理作业资料.docx》由会员分享,可在线阅读,更多相关《马世宽微机原理作业资料.docx(18页珍藏版)》请在冰点文库上搜索。

马世宽微机原理作业资料.docx

马世宽微机原理作业资料

 

微机原理作业

题目:

基于微机总线的计算器设计

学院:

机电工程学院

专业:

机械电子

姓名:

马世宽

学号:

2014020274

指导老师:

杨杰

 

2015年1月5日

基于微机总线的计算器设计

 

1.设计要求

设计基于微机总线的计算器,要求能完成一位数位数的四则运算。

硬件为基于ISA总线的接口板,包括键盘、LED或液晶显示。

软件方面则需通过编程来实现运算功能。

2.设计原理

设计的思路是:

首先对键盘进行扫描,如有按键按下,确定并判断键值,将该值储存并显示在LED屏上。

如有“=”按下,则调取存储的数据进行相应的计算,并将结果显示在屏幕上。

设计硬件如图2.1所示。

图2.1电路图

 

3.硬件功能

3.1可编程并行通信接口芯片8255A

图3.18255内部原理图

图3.28255引脚图

3.1.1并行输入/输出端口A,B,C

8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。

端口都是8位,都可以作为输入或输出。

通常将端口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。

3.1.2A组和B组控制部件

端口A和端口C的高4位(PC7~PC4)构成A组;由A组控制部件实现控制功能。

端口B和端口C的低4位(PC3~PC0)构成B组;由B组控制部件实现控制功能。

A组和B组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0~D7)送来的控制字,并根据他们来定义各个端口的操作方式。

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复位信号:

由CPU输入。

RESET信号有效,清除8255A中所有控制字寄存器内容,并将各个端口置成输入方式。

定义工作方式控制字:

工作方式0:

8255A中各端口的基本输入/输出方式。

 

键盘输入模块

图3.38255控制口

3.2键盘

下图是一个4x4键盘的结构图,因为4x4键盘有8个管脚,于是将键盘接8255A的PC口,进行键盘扫描一般要求有一部分的I/O口的工作方式是输入,另一部分I/O是输出,具体到4x4键盘则要求4个I/O引脚输入,另外4个输出,这一点PC口刚好符合,而PA、PB口要么全部输入或输出,所以只能是PC口接键盘。

图3.4键盘

3.3LED显示屏

因为要计算-9~9的四则运算,为了显示更加清晰、明了,本次设计共使用了5块LED显示屏,这样就可以显示出输入的算式。

电路图如下图所示。

图3.5LED显示屏

4.软件设计

4.1程序流程图

图4.1主程序流程图

4.2程序代码

编程也可以主要分为三部分;键盘扫描、数据处理、数码管显示,另外还有译码电路,8255A口的地址是0040H,B口地址为0041H,C口地址为0042H,

控制字寄存器地址0043H。

8255A采用的是方式0,A、B口输出,C口的高低四位作为两个4位的端口。

 

PORT_AEQU40H;8255A口地址

PORT_BEQU41H;8255B口地址

PORT_CEQU42H;8255C口地址

PORT_CTLEQU43H;8255控制口地址

DATASEGMENT

ZIFUCHUANDB80DUP(?

);保存输入的字符串

NUMBER1DB0;保存第一个操作数

NUMBER2DB0;保存第二个操作数

NUMBER1SIGNDB'+';第一个数的符号

NUMBER2SIGNDB'+';第二个数的符号

COMPUTESIGNDB'#';运算符号

HDB0;键盘行号

LDB0;键盘列号

DISCODE DB   

3FH,06H,5BH,4FH, 

66H,6DH,7DH,07H, 

7FH,6FH,4BH,03H,

B4H,30H;数字及运算符号段码表

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

MAINPROCFAR

BEGIN:

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

START1:

MOVNUMBER1SIGN,'+'

MOVNUMBER2SIGN,'+'

MOVCOMPUTESIGN,'#';对所有的数据进行初始化

MOVAX,0

MOVBX,0

MOVDI,0

MOVSI,0

MOVCX,0

MOVDX,0

MOVNUMBER1,0

MOVNUMBER2,0

MOVDI,OFFSETZIFUCHUAN

CALLKEY

KEYPROCNEAR;键盘扫描子程序

MOVDX,PORT_CTL

MOVAL,10000001B

OUTDX,AL;送控制字

KS:

;检查有无按键按下

MOVDX,PORT_C

MOVAL,00H;低四行送0

OUTDX,AL

INAL,DX

ANDAL,0FH;检查高四列

CAMAL,0FH

JNEXSH1;无键按下,跳转

MOV CX,50 

LOOP $            ;延时消抖 

IN  AL,DX       ;重读列值 

ANDAL,0FH

CAMAL,0FH

JNEXSH1      

MOV H,0          ;有键按下,先把行列号变量清0 

MOV L,0 

MOV BH,0EH    ; 扫描法读键值:

NEXT:

 

MOV AL,BH 

OUT   PORT_C,AL 

NEXTH:

IN  AL,PORT_C      ;读列值,判断是第几列有键按下 

ANDAL,0FH

CMPAL,0FH

JNENEXTL

ROLBH,01

INCH;每读一列,H加1

JMPNEXT

NEXTL:

;读行值

MOVDX,PORT_CTL

MOVAL,10010000B

OUTDX,AL

MOVBH,E0H

NEXTL1:

MOVAL,BH

IN  AL,PORT_C      ;读行值,判断是第几行有键按下 

ANDAL,0FH

CMPAL,0FH

JNEDONE

ROLBH,01

INCL;

JMPNEXTL1

DONE:

CALLKEYCHECK

JMPEXIT

XSH1:

CALLXIANSHI

JMPEXIT

EXIT:

RET

KEYENDP

KEYCHECKPROCNEAR;键值计算子程序

MOV DL,L 

MOV DH,H 

SHL DL,1 

SHL DL,1            ;列号乘4 

ADD DL,DH 

CMP DL,9            ;按下的是数字键 

JNG NUM_CALL 

CMP DL,14 

JL  CONT_CALL    ;按下的是运算键 

CMP DL,14 

JZ  OUTP_CALL     ;按下的是等于键

NUM_CALL:

 

 MOVZIFUCHUAN[SI],DL

INCSI

CALLXIANSHI

CONT_CALL:

 

MOV ZIFUCHUAN[SI],DL           ;存放运算键的键值  

INCSI

CALLXIANSHI

JMP EXIT1 

OUTP_CALL:

CALLCHECK

JAMPEXIT1

EXIT1:

   

RET 

KEYVALUE  ENDP

XIANSHIPROCNEAR;显示子程序

MOVSI,0

KSH:

MOVAL,ZIFUCHUAN[SI]

MOVBX,OFSETDISCODE

XLATDISCODE;查表,取段码

MOVDX,PORT_A

OUTDX,AL;段码送PA口

MOVDX,PORT_B

OUTDX,SI

MOV CX,50 

LOOP $ ;延时

INCSI

CMPSI,2

JBEKSH

RET

XIANSHIENDP

MAINENDP

CHECKPROCNEAR;第一个数的识别

MOVSI,0

MOVAL,ZIFUCHUAN[SI]

MOVNUMBER1,AL

INCSI

CALLCHECK1

JMPEXIT1

EXIT1:

RET

CHECKENDP

CHECK1PROCNEAR;运算符的识别

MOVAL,ZIFUCHUAN[SI]

CMPAL,0AH

JZCOMPUTE1;将运算符保存

CMPAL,0B

JZCOMPUTE1

CMPAL,0CH

JZCOMPUTE1

CMPAL,0DH

JZCOMPUTE1

COMPUTE1:

MOVCOMPUTESIGN,AL;记录为运算符号

INCSI

CALLCHECK2

CHECK1ENDP

CHECK2PROCNEAR;检验第二个数字

MOVAL,ZIFUCHUAN[SI]

MOVNUMBER2,AL

INCSI

CALLCHECK3

JMPEXIT2

EXIT2:

RET

CHECK2ENDP

CHECK3PROCNEAR;比较运算符

CMPCOMPUTESIGN,0CH;12为乘法

JZMULTIPLY1

CMPCOMPUTESIGN,0DH;13为除法

JZDEVIDE11

CMPCOMPUTESIGN,0AH;10为加法

JZPLUS1

CMPCOMPUTESIGN,0BH;11为减法

JZMINUS1

JMPEXIT3

MULTIPLY1:

CALLMULTIPLY

JMPEXIT3

DEVIDE11:

CALLDIVIDE

JMPEXIT3

PLUS1:

CALLPLUS

JMPEXIT3

MINUS1:

CALLMINUS

EXIT3:

RET

CHECK3ENDP

MULTIPLYPROCNEAR;两个数的乘法运算

MOVAL,NUMBER1

MOVCL,NUMBER2;

MULCL

MOVSI,0

MOVZIFUCHUAN[SI],AH

INCSI

MOVZIFUCHUAN[SI],AL

CALLXIANSHI

RET

MULTIPLYENDP

DIVIDEPROCNEAR;除法运算

MOVAL,NUMBER1

MOVBL,NUMBER2

DIVBL

MOVSI,0

MOVZIFUCHUAN[SI],AL;除法只显示商

CALLXIANSHI

RET

DIVIDEENDP

PLUSPROCNEAR;加法运算

MOVAL,NUMBER1

MOVBL,NUMBER2

ADDAL,BL

MOVSI,0

MOVZIFUCHUAN[SI],AL;

CALLXIANSH

RET

PLUSENDP

MINUSPROCNEAR;减法运算

MOVAL,NUMBER1

MOVBL,NUMBER2

SUBAL,BL

MOVSI,0

MOVZIFUCHUAN[SI],AL

RET

MINUSENDP

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2