【说明】
这是嵌入式课程的一个小作业,用C51单片机,实现了0-255内的简易四则运算,暂不支持负数、溢出等特殊情况的处理。
【关键点】
1、计算器用R5、R6、R7三位显示,段码为0,全暗,段码为0xff,全亮。
2、R3用于保存运算符
3、两数都用B压入栈中,最后取结果时可以分别弹出,并根据操作符计算。
4、程序在两数的第一位默认都输入数字,其他位置皆可复位。
5、一次计算完成后、按任意键复位。
【键盘位置】
代码:
;3位0-255计算器,支持四则运算;按键有0-9、+、-、*、/、复位、=;R5,R6,R7分别用于显示三位;暂不支持负数、溢出处理ORG0000HLJMPSTARTWCEQU P0 ;数码管位控DCEQU P1 ;数码管段控KCEQU P2 ;键盘检测ORG0030HSTART: MOV R5,#0 MOV R6,#0 MOV R7,#0N1_B1: ACALLKEYDOWN CJNER4,#0x10,PRO1;检测到按键做相应处理 ACALLDISPLAY JMPN1_B1;否则继续检测PRO1: MOVA,R4 MOVR0,A MOVDPTR,#DCODE MOVC A,@A+DPTR MOVR5,AN1_B2: ACALLDISPLAY ACALLKEYDOWN CJNE R4,#0x10,PRO2 ;检测按键,有键按下做相应处理 JMPN1_B2PRO2: MOVA,R4 ACALLJUDGE_OPER ;检查是否为操作符 CJNER3,#0x04,CON1 ;是清除键,直接复位 JMPSTARTCON1: CJNER3,#0x06,PRO3 ;是操作符,跳转到PRO3 MOVA,R4 ;是数字 MOVR1,A MOVDPTR,#DCODE MOVC A,@A+DPTR MOVR6,A MOVR4,#0x10 JMPN1_B3PRO3: MOVB,R0 ;将num1的结果保存在B中 PUSHB JMPN2_B1