简易四则运算计算器(C51单片机实现)

【说明】

    这是嵌入式课程的一个小作业,用C51单片机,实现了0-255内的简易四则运算,暂不支持负数、溢出等特殊情况的处理。


【关键点】

    1、计算器用R5、R6、R7三位显示,段码为0,全暗,段码为0xff,全亮。

    2、R3用于保存运算符

    3、两数都用B压入栈中,最后取结果时可以分别弹出,并根据操作符计算。

    4、程序在两数的第一位默认都输入数字,其他位置皆可复位。

    5、一次计算完成后、按任意键复位。


【键盘位置】



代码:

;3位0-255计算器,支持四则运算
;按键有0-9、+、-、*、/、复位、=
;R5,R6,R7分别用于显示三位
;暂不支持负数、溢出处理
ORG		0000H
LJMP	START
	WC	EQU	 P0	 ;数码管位控
	DC	EQU	 P1  ;数码管段控
	KC	EQU	 P2  ;键盘检测

ORG		0030H
START:
     MOV 	R5,		#0
	 MOV 	R6,		#0
	 MOV 	R7,		#0
N1_B1:
	 ACALL		KEYDOWN
	 CJNE		R4,		#0x10,		PRO1		;检测到按键做相应处理						 
	 ACALL		DISPLAY
	 JMP		N1_B1							;否则继续检测
PRO1:
	 MOV		A,		R4
	 MOV		R0,		A
	 MOV		DPTR,	#DCODE
	 MOVC 		A,		@A+DPTR
	 MOV		R5,		A
N1_B2:
	 ACALL		DISPLAY
	 ACALL		KEYDOWN
	 CJNE	   	R4,		#0x10,		PRO2		 ;检测按键,有键按下做相应处理
	 JMP		N1_B2
PRO2:
	 MOV		A,		R4
	 ACALL		JUDGE_OPER						 ;检查是否为操作符
	 CJNE		R3,		#0x04,		CON1		 ;是清除键,直接复位
	 JMP		START
CON1:
	 CJNE		R3,		#0x06,		PRO3		 ;是操作符,跳转到PRO3	   											 											 
     MOV		A,		R4						 ;是数字
	 MOV		R1,		A
	 MOV		DPTR,	#DCODE
	 MOVC 		A,		@A+DPTR
	 MOV		R6,		A
	 MOV		R4,		#0x10
	 JMP		N1_B3
PRO3:
     MOV		B,		R0						 ;将num1的结果保存在B中
	 PUSH		B
	 JMP		N2_B1					
  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值