微机课程设计计算器_第1页
微机课程设计计算器_第2页
微机课程设计计算器_第3页
微机课程设计计算器_第4页
微机课程设计计算器_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、课 程 设 计 课程名称 微机课程设计 题目名称_ 计算器(1) 学生学院_ _ 自动化_专业班级_ _学 号 学生姓名_ _ _指导教师_ 李传芳 _2008 年 12月 25日一、课程设计的目的1、巩固和加深对微机原理及应用课程内容的认识和理解,提高应用水平2、掌握汇编语言程序的编程方法3、熟悉键盘控制和七段数码管的使用二、课程设计的内容 1.把存储器单元中的0AH,02H,0FH,09H从四位七段LED数码管同时显示出来,要求做成循环程序,并使用XLAT来译码。2编写程序,实现以下键盘功能,按任意键在显示器上显示对应键值,要求显示值能够实现左移功能。5A7FB3C0 3.实现:a)定义键

2、盘按键,5个为数字键3、4、5、6、7,7个功能键:减号,除号÷,等号;b)可进行三位8进制减法运算;c)可进行两位10进制除法运算。三、课程设计应完成的工作1.搜集、整理和研究资料,可参考教材后的实例。2.按电路框图连接电路,编写程序完成各个程序设计要求,并完成调试。3.完成课程设计的报告书一一、源程序51程序一51.1 题目51.2 源程序52程序二62.1题目62.2 源程序63程序三103.1题目103.2 源程序10二、心得与体会19三、参考文献191.程序一1.1题目:把存储器单元中的0AH,02H,0FH,09H从四位七段LED数码管同时显示出来,要求做成循环程序,并使

3、用XLAT来译码。1.2源程序:STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSDATA SEGMENTTAB1 DB 0AH,02H,0FH,09H ;设置四位查询位TAB2 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;设置0F的十六位数码管段码 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,80H ;8255A初始化 OUT 63H,ALL1: M

4、OV DL,0FEH MOV SI,OFFSET TAB1 MOV CX,0004HL2: MOV AL,DL ;位码送给AL OUT 60H,AL MOV AL,SI MOV BX,OFFSET TAB2 ;查表取出数码管的段码 XLAT TAB2 OUT 61H,AL ;查表的段码送A口显示 INC SI ROL DL,01H ;下个要显示的数码管位码 CALL TIME LOOP L2 JMP L1TIME: PUSH AX ;延时程序 PUSH CX MOV CX,0002HTIME1: MOV AX,0300HTIME2: DEC AX JNZ TIME2 LOOP TIME1 PO

5、P CX POP AX RETCODE ENDS END START2.程序一2.1题目:2编写程序,实现以下键盘功能,按任意键在显示器上显示对应键值,要求显示值能够实现左移功能。5A7FB3C02.2源程序:STACK SEGMENT STACK DW 64 DUP (?)STACK ENDSDATA SEGMENTVAR1 DB 07H,0BH,0DH,0EHVAR2 DB 3FH,3FH,3FH,3FH,3FHVAR3 DB 00H,00H,00H,00H,00HTABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,

6、5EH,79H,71HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,88H OUT 63H,AL ;8255A初始化STT: MOV AL,00H ;键盘测试 OUT 60H,ALNEXT: IN AL,62H AND AL,60H CMP AL,60H JNZ KEYABC CALL DISP ;调用显示程序 JMP STT;-KEYABC: CALL TIME ;延时,去抖动 IN AL,62H AND AL,60H CMP AL,60H JNZ KEY JMP STTKEY:

7、 MOV AL,0FEH ;键盘扫描识别 OUT 60H,AL IN AL,62H TEST AL,40H JNZ KEY_B CALL KEY5 JMP STTKKEY_B: TEST AL,20H JNZ KEY_A CALL KEYB JMP STTKKEY_A: MOV AL,0FDH OUT 60H,AL IN AL,62H TEST AL,40H JNZ KEY_3 CALL KEYA JMP STTKKEY_3: TEST AL,20H JNZ KEY_7 CALL KEY3 JMP STTKKEY_7: MOV AL,0FBH OUT 60H,AL IN AL,62H TEST

8、 AL,40H JNZ KEY_C CALL KEY7 JMP STTKKEY_C: TEST AL,20H JNZ KEY_F CALL KEYC JMP STTKKEY_F: MOV AL,0F7H OUT 60H,AL IN AL,62H TEST AL,40H JNZ KEY_0 CALL KEYF JMP STTKKEY_0: TEST AL,20H JNZ KEY_01 CALL KEY0KEY_01: JMP STTK;- ;按键5处理子程序KEY5: CALL LP1 ;低4位字节前移 MOV AL,05H MOV DI+4,AL LEA BX,TABL ;查表取出要显示数字的

9、数码管段码 XLAT TABL MOV SI+4,AL CALL DISP ;显示 RET ;返回;-KEYB: CALL LP1 ;按键B处理子程序 MOV AL,0BH MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET;-KEYA: CALL LP1 ;按键A处理子程序 MOV AL,0AH MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET;-KEY3: CALL LP1 ;按键3处理子程序 MOV AL,03H MOV DI+4,AL LEA BX,

10、TABL XLAT TABL MOV SI+4,AL CALL DISP RET;-KEY7: CALL LP1 ;按键7处理子程序 MOV AL,07H MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET;-KEYC: CALL LP1 ;按键C处理子程序 MOV AL,0CH MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET;-KEYF: CALL LP1 ;按键F处理子程序 MOV AL,0FH MOV DI+4,AL LEA BX,TABL XLAT

11、 TABL MOV SI+4,AL CALL DISP RET;-KEY0: CALL LP1 ;按键0处理子程序 MOV AL,00H MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET ;-LP1: MOV CX,0004H ;数据移位保存子程序(前移四位) MOV SI,OFFSET VAR2 MOV DI,OFFSET VAR3LP2: MOV AL,SI+3 MOV SI+4,AL MOV AL,DI+3 MOV DI+4,AL DEC SI DEC DI LOOP LP2 RET;-DISP: MOV SI,OFF

12、SET VAR1 ;显示子程序 MOV DI,OFFSET VAR2 MOV CX,0004HDIR: MOV AL,SI OUT 60H,AL MOV AL,DI OUT 61H,AL CALL TIME INC SI INC DI LOOP DIR RET;-TIME: PUSH AX ;延时程序 PUSH CX MOV CX,0002HTIME1: MOV AX,0300HTIME2: DEC AX JNZ TIME2 LOOP TIME1 POP CX POP AX RET;-STTK: CALL DISP ;放键测试程序 MOV AL,00H OUT 60H,AL IN AL,62H

13、 AND AL,60H CMP AL,60H JNZ STTK JMP STTCODE ENDS END START 3.程序一3.1题目:实现:a)定义键盘按键,5个为数字键3、4、5、6、7,7个功能键:减号,除号÷,等号;b)可进行三位8进制减法运算;c)可进行两位10进制除法运算。3.2源程序:STACK SEGMENT STACK DW 64 DUP (?)STACK ENDSDATA SEGMENTVAR1 DB 07H,0BH,0DH,0EH ;数码管位码VAR2 DB 3FH,3FH,3FH,3FH,3FHVAR3 DB 00H,00H,00H,00H,00H ;当前

14、值VAR4 DB 00H,00H,00H,00H,00H ;保存值TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,88H OUT 63H,AL ;8255A初始化 MOV BX,0000H ;BX清零STT: MOV AL,00H ;键盘测试 OUT 60H,ALNEXT: IN AL,62H AND AL,60H CMP AL,60H

15、JNZ KEYABC CALL DISP ;调用显示程序 JMP STT;-KEYABC: CALL TIME ;延时,去抖动 IN AL,62H AND AL,60H CMP AL,60H JNZ KEY JMP STTKEY: MOV AL,0FEH ;键盘扫描识别 OUT 60H,AL IN AL,62H TEST AL,40H JNZ KEY_4 CALL KEYDEN JMP STTKKEY_4: TEST AL,20H JNZ KEY_JIAN CALL KEY4 JMP STTKKEY_JIAN:MOV AL,0FDH OUT 60H,AL IN AL,62H TEST AL,4

16、0H JNZ KEY_5 CALL KEYJIAN JMP STTKKEY_5: TEST AL,20H JNZ KEY_CHU CALL KEY5 JMP STTKKEY_CHU: MOV AL,0FBH OUT 60H,AL IN AL,62H TEST AL,40H JNZ KEY_6 CALL KEYCHU JMP STTKKEY_6: TEST AL,20H JNZ KEY_3 CALL KEY6 JMP STTKKEY_3: MOV AL,0F7H OUT 60H,AL IN AL,62H TEST AL,40H JNZ KEY_7 CALL KEY3 JMP STTKKEY_7:

17、 TEST AL,20H JNZ KEY_71 CALL KEY7KEY_71: JMP STTK;-KEY3: CMP BH,00H ;按键3处理子程序 JZ KEY3_1 ;未按过符号键,不清零 CALL CLEAR ;已按过符号键,清零KEY3_1: CALL LP1 ;低4位字节前移 MOV AL,03H MOV DI+4,AL PUSH BX ;保护BX LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP ;显示 POP BX RET ;返回;-KEY4: CMP BH,00H ;按键4处理子程序 JZ KEY4_1 CALL CLEARKEY4_

18、1: CALL LP1 MOV AL,04H MOV DI+4,AL PUSH BX LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP POP BX RET;-KEY5: CMP BH,00H ;按键5处理子程序 JZ KEY5_1 CALL CLEARKEY5_1: CALL LP1 MOV AL,05H MOV DI+4,AL PUSH BX LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP POP BX RET;-KEY6: CMP BH,00H ;按键6处理子程序 JZ KEY6_1 CALL CLEARKEY

19、6_1: CALL LP1 MOV AL,06H MOV DI+4,AL PUSH BX LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP POP BX RET;-KEY7: CMP BH,00H ;按键7处理子程序 JZ KEY7_1 CALL CLEARKEY7_1: CALL LP1 MOV AL,07H MOV DI+4,AL PUSH BX LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP POP BX RET;.KEYJIAN: CMP BH,00H ;按键-处理子程序 JNZ KEYJIAN_1 CALL

20、 LP3KEYJIAN_1: CMP BX,0101H RET;-KEYCHU: CMP BH,00H ;按键/处理子程序 JNZ KEYCHU_1 CALL LP3KEYCHU_1: CMP BX,0102H RET;-KEYDEN: CMP BL,00H ;按键=处理子程序 JNZ KEYDEN_1 CALL CLEAR CALL DISPKEYDEN_1: MOV BH,01H CMP BL,01H ;是-号? JZ K1 ;进行减法运算 CMP BL,02H ;是/号? JZ K2 ;进行除法运算STTE: RETK1: CALL JIAN JMP STTEK2: CALL CHU J

21、MP STTE ;-JIAN: MOV SI,OFFSET VAR3 ;三位8进制减法子程序 MOV DI,OFFSET VAR4 CLC MOV CX,0004H JIAN_1: MOV AL,DI SBB AL,SI CMP AL,08H JB B1 AND AL,07H STC JMP B2B1: CLCB2: MOV DI,AL INC SI INC DI LOOP JIAN_1 CALL CHANGE CALL DISP MOV BL,00H ;运算完毕符号位清零 RET;-CHU: MOV SI,OFFSET VAR3 ;两位10进制除法子程序 MOV DI,OFFSET VAR4

22、 CLC MOV DL,DI ;调整VAR4,10进制转换成16进制,保存在DX MOV DH,00H MOV BX,10 MOV AL,DI+1 AND AX,000FH PUSH DX MUL BX POP DX ADD DX,AX MOV BX,100 MOV AL,DI+2 AND AX,000FH PUSH DX MUL BX POP DX ADD DX,AX MOV BX,1000 MOV AL,DI+3 AND AX,000FH PUSH DX MUL BX POP DX ADD DX,AX PUSH DX MOV CL,SI ;调整VAR3,10进制转换成16进制,保存在CX

23、MOV CH,00H MOV AL,SI+1 AND AX,000FH MOV BX,10 MUL BX ADD CX,AX MOV AL,SI+2 AND AX,000FH MOV BX,100 MUL BX ADD CX,AX MOV AL,SI+3 AND AX,000FH MOV BX,1000 MUL BX ADD CX,AX POP AX ;以16进制进行除法运算 MOV DX,0000H MOV CH,00H DIV CX ;调整结果为10进制 MOV CX,10 MOV DX,0000H DIV CX MOV DI,DL MOV DX,0000H DIV CX MOV DI+1

24、, DL MOV DX,0000H DIV CX MOV DI+2,DL MOV DX,0000H DIV CX MOV DI+3,DL CALL CHANGE CALL DISP MOV BL, 00H RET;-LP1: MOV CX,0004H ;数据移位保存子程序(前移四位) MOV SI,OFFSET VAR2 MOV DI,OFFSET VAR3LP2: MOV AL,SI+3 MOV SI+4,AL MOV AL,DI+3 MOV DI+4,AL DEC SI DEC DI LOOP LP2 RET;-LP3: MOV CX,0004H ;保存上一次数据子程序 MOV SI,OF

25、FSET VAR3 MOV DI,OFFSET VAR4LP4: MOV AL,SI MOV DI,AL INC SI INC DI LOOP LP4 RET;.CHANGE: MOV SI,OFFSET VAR2 MOV DI,OFFSET VAR4 MOV BX,OFFSET TABL MOV CX,0004HCOMP0: MOV AL,DI XLAT TABL MOV SI,AL INC SI INC DI LOOP COMP0 RET;-DISP: MOV SI,OFFSET VAR1 ;显示子程序 MOV DI,OFFSET VAR2 MOV DL,DI+3 CMP DL,3FH JNZ DIR3 MOV DL,DI+2 CMP DL,3FH JNZ DIR2 MOV DL,DI+1 CMP DL,3FH JNZ DIR1 JMP DIR0DIR3: MOV CX,0004H JMP DIRDIR2: MOV CX,0003H JMP DIRDIR1: MOV CX,0002H JMP DIRDIR0: MOV CX,0001HDIR: MOV AL,SI OUT 60H,AL MOV AL,DI

温馨提示

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

评论

0/150

提交评论