微型计算机系统程序设计实验报告.docx
- 文档编号:28461580
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:52
- 大小:24.13KB
微型计算机系统程序设计实验报告.docx
《微型计算机系统程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《微型计算机系统程序设计实验报告.docx(52页珍藏版)》请在冰豆网上搜索。
微型计算机系统程序设计实验报告
Part1.程序设计目求
Part2.程序设计要求
Part3.系统整体设计思路
Part4.程序框图设计
Part5.硬件电路设计
Part6.课程设计体会
Part7.程序设计的参考文献
Part8.程序设计代码附录(总共三题)
Part1:
程序设计的目的:
1.巩固和掌握对“微机原理”课程内容的认识和理解,提高应用水平.
2.掌握汇编语言程序的编制方法.
3.熟悉键盘控制和七段码管及74LS138芯片的使用.
Part2:
程序设计要求:
本课程设计内容包括两个方面
A.硬件设计:
显示器用6个八段数码段显示.键盘采用4*4矩阵形式.由8255控制
B.软件编程(上机编程内容)
题目一※显示器工作于查询方式.键盘工作于中断方式
※16个按键定位的键值为:
0~f,按任意键在显示器上现实对应的键值.lED显示器显示数值从右到左逐位显示
题目二※定义键盘按键:
10个数字键(0~9);
6个功能键:
+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)
※实现五位八进制数加法运算.可连续做加法.直接按"=号结束,显示结果
※实现五位八进制数乘法运算.可连续做乘法运算
Part3:
程序设计的整体设计思路:
A.物理构想思路:
1)微型计算机由微处理器,存储器,接口电路以及连接在这些部件上的总线组成.微处理器,存储器和所有I\O设备之间的信息交换都通过总线进行.总线包括地址总线,数据总线和控制总线,他们始于CPU或终于CPU,现代微机大部分都是这种以总线为中心的结构.
2)微型计算机及外围设备组成微型计算机系统的硬件,外围设备必须通过接口电路才能与系统总线相连,因此构建一个基于8255A的简单微型计算机系统,就是通过编译程序和物理连接让单片机拥有简单的计算器运算功能,因此系统总线上挂上一定规模的存储器和接口电路,然后在把合适的外围设备连接到接口电路上.
解决物理连线方面的构想思路.就轮到程序设置的构想思路:
B.软件构想思路:
1)首先.是建立一个蕴含所有段码的数据表(在程序中的体现是TABLE),作用是存储段码,为程序的相应调用提供对应的段码.避免在程序中实现调用显示功能的时候造成过多的赘余.因为这次实验套装的LED管是共阳极管.所以只有列出对应的16个(0~F)适用于共阳极管的段码,才能满足显示的要求
2)其次.是建立选通信号的输出存储.也就是.在数据部分建立一个表格,里面能够告诉CPU的输出端要输出低电平的时候对应的代码指令:
为什么是输出低电平?
因为本次选用的LED管是共阳极管.所以要在CPU的输出端与显示器的输入端对应借口接入CPU输出的低电平.从而告诉是哪一个显示器被选中.对应要输出怎么样的段码(信息).方能准确进行数据的显示
3)在DATA设置完以后.就是功能键的自定义设计.这部分将会在物理连线框图里面提出(Part5)
4)进行主程序的编写思路部分,首先是对应4*4的键盘程序.在按下对应的键位以后.为了能在显示器中正确显示出对应的数值.必须进行扫描,首先是判断是否有按键.如果按得是数字键.那么就要在LED显示管上面对应的位数以及对应的数值进行显示.并且判断数字键之前是否已经按了运算的功能键.从而判断是否要进行运算.如果确认在数字键之前按了运算的功能键.则应该进行运算功能,并且将运算结果存储在内存单元里面.等待下一步的指令.并且重复检测.等到有在物理键上面检测到有等号.则将最终的结果释放在LED管子上进行显示
5)在运算结束后要实行放键功能,并且自动将所有的存储器(这里指的是RAM)上面的数据复位.等待实行重新的运算
Part4:
程序框图的设计:
Part5.
硬件电路设置:
Part6.
课程设计体会:
一个星期的微机课程设计,在这个星期之中通过不断找资料解决问题,回顾了上学期所学的内容,给了我们很好一个机会将所学内容综合应用实践,温故而知新,对未来的学习也有很大帮助.
但在课程设计之中也还发现一些不足的地方,我发现我能通过设计找出不足,更好的学习.并且给将来的学习提供一个好的解决榜样.所以通过这次程序设计的学习.我觉得我并不仅仅只学习到如何的运用汇编程序按照要求解答问题.而更是学习到了要怎么去思考.怎么去解决问题的方法.并且希望能够将这个所得应用在日后的学习之中.我觉得这才是本次课程设计的核心内容
Part7:
参考文献:
微型计算机系统原理--(教材)
微型计算机系统程序设计指导书--(实验题目)
微型计算机系统程序设计例题A--(实验例题)
Part8:
实验程序:
※设计代码※
part1:
※显示器工作于查询方式,键盘工作于中断方式
※16个按键定义的键值:
0-F,安任意键在显示器上现实对应的键值,LED显示器现实数值从右到左逐位现实
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
VA1DB0DFH,0EFH,0F7H,0FBH,0FDH,0FEH;A端口的6根控制线(控制6个LED显示屏)
VB2DB3FH,3FH,3FH,3FH,3FH,3FH
VB3DB00H,00H,00H,00H,00H,00H
VB4DB00H,00H,00H,00H,00H,00H
TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
;0~F的显示段码
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0606H
MOVAL,88H
OUTDX,AL:
8255初始化
MOVBX,0000H:
BX清零
STT:
:
键盘测试
MOVAL,00H
MOVDX,0600H
OUTDX,AL
MOVDX,0604H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNZKEYABC
CALLDISP:
调用显示程序
JMPSTT
KEYABC:
CALLTIME:
延时去抖动
MOVDX,0604H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNZKEY
JMPSTT
KEY:
:
键盘扫描识别
MOVDX,0600H
MOVAL,0FEH
OUTDX,AL
MOVDX,0604H
INAL,DX
KEY_3:
TESTAL,10H
JNZKEY_7
CALLKEY3
JMPSTTK
KEY_7:
TESTAL,20H
JNZKEY_B
CALLKEY7
JMPSTTK
KEY_B:
TESTAL,40H
JNZKEY_F
CALLKEYB
JMPSTTK
KEY_F:
TESTAL,80H
JNZKEY_2
CALLKEYF
JMPSTTK
KEY_2:
MOVDX,0600H
MOVAL,0FDH
OUTDX,AL
MOVDX,0604H
INAL,DX
TESTAL,10H
JNZKEY_6
CALLKEY2
JMPSTTK
KEY_6:
TESTAL,20H
JNZKEY_A
CALLKEY6
JMPSTTK
KEY_A:
TESTAL,40H
JNZKEY_E
CALLKEYA
JMPSTTK
KEY_E:
TESTAL,80H
JNZKEY_1
CALLKEYE
JMPSTTK
KEY_1:
MOVDX,0600H
MOVAL,0FBH
OUTDX,AL
MOVDX,0604H
INAL,DX
TESTAL,10H
JNZKEY_5
CALLKEY1
JMPSTTK
KEY_5:
TESTAL,20H
JNZKEY_9
CALLKEY5
JNPSTTK
KEY_9:
TESTAL,40H
JNZKEY_D
CALLKEY9
JMPSTTK
KEY_D:
TESTAL,80H
JNZKEY_0
CALLKEYD
JMPSTTK
KEY_0:
MOVDX,0600H
MOVAL,0F7H
OUTDX,AL
MOVDX,0604H
INAL,DX
TESTAL,10H
JNZKEY_4
CALLKEY0
CALLSTTK
KEY_4:
TESTAL,20H
JNZKEY_8
CALLKEY4
JMPSTTK
KEY_8:
TESTAL,40H
JNZKEY_C
CALLKEY8
JMPSTTK
KEY_C:
TESTAL,80H
JNZKEY_G
CALLKEYC
KEY_G:
JMPSTTK
KEY0:
CALLLP1
MOVAL,3FH
MOV[SI+5],AL
MOVAL,00H
MOV[DI+5],AL
CALLDISP
RET
KEY1:
CALLLP1
MOVAL,06H
MOV[SI+5],AL
MOVAL,01H
MOV[DI+5],AL
CALLDISP
RET
KEY2:
CALLLP1
MOVAL,5BH
MOV[SI+5],AL
MOVAL,02H
MOV[DI+5],AL
CALLDISP
RET
KEY3:
CALLLP1
MOVAL,4FH
MOV[SI+5],AL
MOVAL,03H
MOV[DI+5],AL
CALLDISP
RET
KEY4:
CALLLP1
MOVAL,66H
MOV[SI+5],AL
MOVAL,04H
MOV[DI+5],AL
CALLDISP
RET
KEY5:
CALLLP1
MOVAL,6DH
MOV[SI+5],AL
MOVAL,05H
MOV[DI+5],AL
CALLDISP
RET
KEY6:
CALLLP1
MOVAL,7DH
MOV[SI+5],AL
MOVAL,06H
MOV[DI+5],AL
CALLDISP
RET
KEY7:
CALLLP1
MOVAL,07H
MOV[SI+5],AL
MOVAL,07H
MOV[DI+5],AL
CALLDISP
RET
KEY8:
CALLLP1
MOVAL,7FH
MOV[SI+5],AL
MOVAL,08H
MOV[DI+5],AL
CALLDISP
RET
KEY9:
CALLLP1
MOVAL,6FH
MOV[SI+5],AL
MOVAL,09H
MOV[DI+5],AL
CALLDISP
RET
KEYA:
CALLLP1
MOVAL,77H
MOV[SI+5],AL
MOVAL,0AH
MOV[DI+5],AL
CALLDISP
RET
KEYB:
CALLLP1
MOVAL,7CH
MOV[SI+5],AL
MOVAL,0BH
MOV[DI+5],AL
CALLDISP
RET
KEYC:
CALLLP1
MOVAL,39H
MOV[SI+5],AL
MOVAL,0CH
MOV[DI+5],AL
CALLDISP
RET
KEYD:
CALLLP1
MOVAL,5EH
MOV[SI+5],AL
MOVAL,0DH
MOV[DI+5],AL
CALLDISP
RET
KEYE:
CALLLP1
MOVAL,79H
MOV[SI+5],AL
MOVAL,0EH
MOV[DI+5],AL
CALLDISP
RET
KEYF:
CALLLP1
MOVAL,71H
MOV[SI+5],AL
MOVAL,0FH
MOV[DI+5],AL
CALLDISP
RET
;上面是键盘键位的设置以及对应子程序的编写
LP1:
(数据段以为保存子程序,前移6位)
MOVSI,0FFSETVA2
MOVDI,OFFSETVA3
MOVCX,0005H
LP2:
MOVAL,[SI+4]
MOV[SI+5],AL
MOVAL,[DI+4]
MOV[DI+5],AL
DECSI
DECDI
LOOPLP2
RET
DISP:
(6位显示程序)
MOVSI,OFFSETVA1
MOVDI,OFFSETVA2
MOVDL,[DI+5]
CMPDL,3FH
JNZDIR5
MOVDL,[DI+4]
CMPDL,3FH
JNZDIR4
MOVDL,[DI+3]
CMPDL,3FH
JNZDIR3
MOVDL,[DI+2]
CMPDL,3FH
JNZDIR2
MOVDL,[DI+1]
CMPDL,3FH
JNZDIR1
JMPDIR0
DIR5:
MOVCX,0006H
JMPDIR
DIR4:
MOVCX,0005H
JMPDIR
DIR3:
MOVCX,0004H
JMPDIR
DIR2:
MOVCX,0003H
JMPDIR
DIR1:
MOVCX,0002H
JMPDIR
DIR0:
MOVCX,0001H
DIR:
MOVDX,0600H
MOVAL,[SI]
OUTDX,AL
MOVDX,0602H
MOVAL,[DI]
OUTDX,AL
CALLTIME
INCSI
INCDI
LOOPDIR
RET
TIME:
(延时程序)
PUSHAX
PUSHCX
MOVCX,0005H
TIME1:
MOVAX,00F0H
TIME2:
DECAX
JNZTIME2
LOOPTIME1
POPCX
POPAX
RET
STTK:
(按键测试程序)
CALLDISP
MOVAL,00H
MOVDX,0600H
OUTDX,AL
MOVDX,0604H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNZSTTK
JMPSTT
CODEENDS
ENDSTART
Part2:
※显示器工作于查询方式,键盘工作于中断方式
※定义键盘按键:
10个数字键(0~9);
6个功能键:
+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)
※实现五位八进制数加法运算.可连续做加法.直接按"=号结束,显示结果
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
VA1DB0DFH,0EFH,0F7H,0FBH,0FDH,0FEH
VA2DB3FH,3FH,3FH,3FH,3FH,3FH
VA3DB00H,00H,00H,00H,00H,00H
VA4DB00H,00H,00H,00H,00H,00H
SUMDB00H,00H,00H,00H,00H,00H
TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0606H
MOVAL,88H
OUTDX,AL
MOVBX,0000H
STT:
MOVAL,00H
MOVDX,0600H
OUTDX,AL
MOVDX,0604H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNZKEYABC
CALLDISP
JMPSTT
KEYABC:
CALLDELAY
MOVDX,0604H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNZKEY
JMPSTT
KEY:
MOVDX,0600H
MOVAL,0FEH
OUTDX,AL
MOVDX,0604H
INAL,DX
KEY_0:
TESTAL,10H
JNZKEY_1
CALLKEY0
JMPSTTK
KEY_1:
TESTAL,20H
JNZKEY_4
CALLKEY1
JMPSTTK
KEY_4:
TESTAL,40H
JNZKEY_7
CALLKEY4
JMPSTTK
KEY_7:
TESTAL,80H
JNZKEY2C
CALLKEY7
JMPSTTK
KEY2C:
MOVDX,0600H
MOVAL,0FDH
OUTDX,AL
MOVDX,0604H
INAL,DX
KEY_CLEAR:
TESTAL,10H
JNZKEY_2
CALLKEYCLEAR
JMPSTTK
KEY_2:
TESTAL,20H
JNZKEY_5
CALLKEY2
JMPSTTK
KEY_5:
TESTAL,40H
JNZKEY_8
CALLKEY5
JMPSTTK
KEY_8:
TESTAL,80H
JNZKEY3C
CALLKEY8
JMPSTTK
KEY3C:
MOVDX,0600H
MOVAL,0FBH
OUTDX,AL
MOVDX,0604H
INAL,DX
KEY_QUAL:
TESTAL,10H
JNZKEY_3
CALLKEYEQUAL
JMPSTTK
KEY_3:
TESTAL,20H
JNZKEY_6
CALLKEY3
JMPSTTK
KEY_6:
TESTAL,40H
JNZKEY_9
CALLKEY6
JMPSTTK
KEY_9:
TESTAL,80H
JNZKEY4C
CALLKEY9
JMPSTTK
KEY4C:
MOVDX,0600H
MOVAL,0F7H
OUTDX,AL
MOVDX,0604H
INAL,DX
KEY_PLUS:
TESTAL,10H
JNZKEY_MINUS
CALLKEYPLUS
JMPSTTK
KEY_MINUS:
TESTAL,20H
JNZKEY_MUL
JMPSTTK
KEY_MUL:
TESTAL,40H
JNZKEY_DIV
JMPSTTK
KEY_DIV:
TESTAL,80H
KEY_G:
JMPSTTK
;结束按键扫描,下面是按键处理函数(与第一个程序不同的地方是功能键的设置问题)
KEY0:
CMPBH,00H
JZKEY0_1
CALLCLEAR
KEY0_1:
CALLLP1
MOVAL,3FH
MOV[SI+4],AL
MOVAL,00H
MOV[DI+4],AL
CALLDISP
RET
KEY1:
CMPBH,00H
JZKEY1_1
CALLCLEAR
KEY1_1:
CALLLP1
MOVAL,06H
MOV[SI+4],AL
MOVAL,01H
MOV[DI+4],AL
CALLDISP
RET
KEY2:
CMPBH,00H
JZKEY2_1
CALLCLEAR
KEY2_1:
CALLLP1
MOVAL,5BH
MOV[SI+4],AL
MOVAL,02H
MOV[DI+4],AL
CALLDISP
RET
KEY3:
CMPBH,00H
JZKEY3_1
CALLCLEAR
KEY3_1:
CALLLP1
MOVAL,4FH
MOV[SI+4],AL
MOVAL,03H
MOV[DI+4],AL
CALLDISP
RET
KEY4:
CMPBH,00H
JZKEY4_1
CALLCLEAR
KEY4_1:
CALLLP1
MOVAL,66H
MOV[SI+4],AL
MOVAL,04H
MOV[DI+4],AL
CALLDISP
RET
KEY5:
CMPBH,00H
JZKEY5_1
CALLCLEAR
KEY5_1:
CALLLP1
MOVAL,6DH
MOV[SI+4],AL
MOVAL,05H
MOV[DI+4],AL
CALLDISP
RET
KEY6:
CMPBH,00H
JZKEY6_1
CALLCLEAR
KEY6_1:
CALLLP1
MOVAL,7DH
MOV[SI+4],AL
MOVAL,06H
MOV[DI+4],AL
CALLDISP
RET
KEY7:
CMPBH,00H
JZKEY7_1
CALLCLEAR
KEY7_1:
CALLLP1
MOVAL,07H
MOV[SI+4],AL
MOVAL,07H
MOV[DI+4],AL
CALLDISP
RET
KEY8:
CMPBH,00H
JZKEY8_1
CALLCLEAR
KEY8_1:
CALLLP1
MOVAL,7FH
MOV[SI+4],AL
MOVAL,08H
MOV[DI+4],AL
CALLDISP
RET
KEY9:
CMPBH,00H
JZKEY9_1
CALLCLEAR
KEY9_1:
CALLLP1
MOVAL,6FH
MOV[SI+4],AL
MOVAL,09H
MOV[DI+4],AL
CALLDISP
RET
KE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机 系统 程序设计 实验 报告