- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告
课程名称: 微机原理实验 指导老师: 成绩:
实验名称: 加法计算器及显示 实验类型: 同组学生姓名:
一、实验目的和要求(必填) 二、实验内容和原理(必填)
三、主要仪器设备(必填) 四、操作方法和实验步骤
五、实验数据记录和处理 六、实验结果与分析(必填)
七、讨论、心得
实验目的和要求
掌握基于状态机的编程方法
实现数字运算、键盘输入、LED显示的多任务协调编程
实验内容和原理
编写程序,输入两个两位十进制数并显示,按确认键后显示运算结果
基本功能:能够输入输入数字(非数字无效)并显示结果
附加功能:光标指示功能(通过LED闪烁实现)以及退格功能
程序代码
ORG 0000H
START: MOV 78H,#0 ;初始化:78H放0的段码,其余放熄灭码
MOV 79H,#10
MOV 7AH,#10
MOV 7BH,#10
MOV 7CH,#10
MOV R5,#0 ;R5是按键次数,初始置0
MOV R6,#0 ;将0置入R6中
MOV R7,#0 ;将0置入R7中
MOV 30H,#0 ;30H是功能键存放单元,置为0
MOV 31H,#0 ;31H单元初始置为0
MOV 40H,#0 ;40H单元初始置为0
MOV 41H,#0 ;41H单元初始置为0
LOOP: LCALL DIR ;调用显示子程序
LCALL KEY ;调用键盘检测程序
INC R5 ;按键次数加1
S1: CJNE A,#10,S2 ;不是"+"键,跳到S2
LJMP FUN ;是"+"键,跳到FUN
S2: CJNE A,#11,S3 ;不是"-"键,跳到S3
LJMP FUN ;是"-"键,跳到FUN
S3: CJNE A,#12,S4 ; 不是"*"键,跳到S4
LJMP FUN ; 是"*"键,跳到FUN
S4: CJNE A,#13,S5 ; 不是"/"键,跳到S5
LJMP FUN ; 是"/"键,跳到FUN
S5: CJNE A,#14,S6 ; 不是"="键,跳到S6
LJMP FUN ;是"="键,跳到FUN
S6: CJNE A,#15,N1 ; 不是"CL"键,跳到N1
LJMP START ; 是"CL"键,跳到START
N1: CJNE R5,#1,N2 ;若按键次数不等于1,跳到N2
LJMP D11 ;跳到D11
N2: CJNE R5,#2,START;若按键次数不等于2,跳到START
LJMP T1 ;跳到T1
D11: MOV R4,A ;将A写入R4
MOV 78H,A ;输入值送显示个位缓存
MOV 79H,#10 ;将10送到79H单元
LJMP LOOP ;跳转到循环
T1: MOV 53H,A ;将A写入53H
MOV B,#10 ;将10置入B
MOV A,R4 ;将上一次输入的R4写进A
MUL AB ;A乘以10
ADD A,53H ;53H里面的值与A相加
MOV R4,A ;将新的值置入到R4
MOV 79H,78H ;个位到十位
MOV 78H,53H ;新数为个位
LJMP LOOP ;跳转到循环
FUN:MOV 78H,#10 ;将10置入到78H
MOV 79H,#10 ;将10置入到79H
MOV R0,30H ;与上次功能键交换
MOV 30H,A
MOV A,R0
CJNE A,#10,FUN1 ;判断功能键
LJMP ADDY ;"+"
FUN1: CJNE A,#11,FUN2
LJMP SUBT ;"-"
FUN2: CJNE A,#12,FUN3
LJMP MULT ;"*"
FUN3: CJNE A,#13,FUN4
LJMP DIVI ;"/"
FUN4: CJNE A,#14,FUN5 ;首次按功能键,即A=#0
LJMP EQUA
文档评论(0)