给出AT89C51单片机实现以下功能的代码:1、支持3位数内(0~999)的包括加、减、乘、除的非负整数运算。2、通过矩阵按键输入0~9加减乘除以及等号。3、液晶1602显示。4、以及退格功能。
时间: 2023-03-08 18:29:50 浏览: 212
AT89C51单片机实现以上功能的代码如下:MOV R0,#00H ;初始化R0
MOV A,#00H ;初始化A
MOV P0,#FFH ;矩阵按键输入
MOV P1,#00H ;液晶1602显示MAIN: MOV A,P0 ;将矩阵按键的值读取到A中
CJNE A,#0AH,NUM ;判断A中的值是否为0AH,如果不是,则跳转到NUM
MOV P1,#AAH ;否则将AAH赋值给P1,即显示等号
JMP MAIN ;跳转到MAINNUM: MOV A,R0 ;将R0中的值读取到A中
ANL A,#0FH ;清除A中低4位的值,只保留高4位
JNZ NEXT ;如果低4位的值不为0,则跳转到NEXT
MOV A,R0 ;将R0中的值读取到A中
JMP ADD_SUB ;跳转到ADD_SUBNEXT: MOV A,R0 ;将R0中的值读取到A中
RL A ;将A中的值循环左移1位
MOV R0,A ;将A中的值赋值给R0
JMP MAIN ;跳转到MAINADD_SUB: MOV P1,A ;将A中的值赋值给P1,即液晶1602显示
MOV A,R0 ;将R0中的值读取到A中
ANL A,#0F0H ;清除A中高4位的值,只保留低4位
JNZ MUL_DIV ;如果低4位的值不为0,则跳转到MUL_DIV
MOV A,R0 ;将R0中的值读取到A中
JMP ADD_SUB_END ;跳转到ADD_SUB_ENDMUL_DIV: MOV A,R0 ;将R0中的值读取到A中
ANL A,#0FFH ;清除A中低8位的值,只保留高8位
JNZ MUL_DIV_END ;如果高8位的值不为0,则跳转到MUL_DIV_END
MOV A,R0 ;将R0中的值读取到A中
JMP MUL_DIV ;跳转到MUL_DIVADD_SUB_END: MOV R0,A ;将A中的值赋值给R0
JMP MAIN ;跳转到MAINMUL_DIV_END: MOV R0,A ;将A中的值赋值给R0
JMP MAIN ;跳转到MAIN
阅读全文