⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 041236075.asm

📁 51单片机 加减乘除程序
💻 ASM
字号:
            ORG 0000H
            MOV DPTR,#TABAL
            MOV P0,#0C0H       ;刚开始显示0
            MOV P2,#00000011B
            MOV R6,#1
            MOV R7,#5        ;为0加,为1减,为2乘
       KAI: MOV 50H,#00H
            MOV 51H,#00H     ;50H,51H储存一个数,50H为个位
            MOV 52H,#00H
            MOV 53H,#00H
            MOV 54H,#00H     ;54H到57H储存结果数
            MOV 55H,#00H
            MOV 56H,#00H
            MOV 57H,#00H
            MOV R0,#50H

       MAIN:LCALL KS1        ;键盘扫描
            JNZ LK1
            LCALL DISPLAY1
            AJMP MAIN
       LK1: LCALL DISPLAY1
            LCALL DISPLAY1
            ACALL KS1
            JNZ LK2
            LCALL DISPLAY1
            AJMP MAIN
        LK2:MOV R2,#0FEH     ;有键按下后,判断为哪个键
            MOV R4,#00H
        LK4:MOV P1,R2
            JB P3.0,NEXT2
            MOV A,#00H
            AJMP LKP
      NEXT2:JB P3.1,NEXT3
            MOV A,#04H
            AJMP LKP
      NEXT3:JB P3.2,NEXT4
            MOV A,#08H
            AJMP LKP
      NEXT4:JB P3.3,LINE
            MOV A,#0CH
        LKP:ADD A,R4            ;计算键码
            MOV DPTR,#DUIHUAN
            MOVC A,@A+DPTR
            CJNE A,#0BH,M5      ;乘法
            MOV R7,#2
            AJMP JIA
         M5:CJNE A,#0CH,M4      ;减法
            MOV R7,#1
            AJMP JIA
         M4:CJNE A,#0DH,M3
            AJMP CLEAR
         M3:CJNE A,#0FH,M1      ;加法
            MOV R7,#0
            AJMP JIA
         M1:CJNE A,#0EH,M2      ;等于
            AJMP DENGYU
         M2:MOV @R0,A
            CJNE R6,#0,LL
            MOV 51H,#0
            MOV R6,#1
         LL:LCALL DISPLAY1
            INC R0
            CJNE R0,#52H,UU
            MOV R0,#50H
            MOV A,50H
            MOV 50H,51H
            MOV 51H,A
         UU:MOV R2,#0FEH
            MOV R4,#0
       LK3: ACALL DISPLAY1
            ACALL KS1
            JNZ LK3           ;等待键放开
            MOV R2,#0FEH
            MOV R4,#0
            AJMP MAIN
       LINE:INC R4            ;下一列
            MOV A,R2
            JNB ACC.3,KND
            RL A
            MOV R2,A
            AJMP LK4
        KND:AJMP MAIN
 ;----------判断是否有键按下子程序------------------------------
        KS1:MOV P1,#00H
            MOV A,P3
            CPL A
            ANL A,#0FH
            RET             ;有键按下,A非0
 ;----------显示子程序----------------------------
    DISPLAY1:MOV DPTR,#TABAL
            MOV A,50H
            MOVC A,@A+DPTR
            MOV P0,A
            SETB P2.0
            LCALL DELAY
            CLR P2.0
            INC R1
            MOV A,51H
            MOVC A,@A+DPTR
            MOV P0,A
            SETB P2.1
            LCALL DELAY
            CLR P2.1
            RET

    DISPLAY3:MOV DPTR,#TABAL
            MOV A,57H
            CJNE A,#0,P11
            AJMP P22
         P11:MOVC A,@A+DPTR
            MOV P0,A
            SETB P2.3
            LCALL DELAY
            CLR P2.3
         P22:MOV A,56H
             MOV R5,57H
             CJNE R5,#0,P33
            CJNE A,#0,P33
            AJMP P4
         P33:MOVC A,@A+DPTR
            MOV P0,A
            SETB P2.2
            LCALL DELAY
            CLR P2.2
         P4:MOV A,55H
            MOV R5,57H
            CJNE R5,#0,P5
            MOV R5,56H
            CJNE R5,#0,P5
            CJNE A,#0,P5
            AJMP P6
         P5:MOVC A,@A+DPTR
            MOV P0,A
            SETB P2.1
            LCALL DELAY
            CLR P2.1
         P6:MOV A,54H
            MOVC A,@A+DPTR
            MOV P0,A
            SETB P2.0
            LCALL DELAY
            CLR P2.0
            RET

;-------------加,减,乘------------------------
       JIA:MOV 52H,50H
           MOV 53H,51H
           MOV R6,#0
           MOV R0,#50H
      LKM4: ACALL DISPLAY1
           ACALL KS1
           JNZ LKM4
           JMP MAIN

 ;-----------DENGYU----等于----------------------------
    DENGYU:
           CJNE R7,#0,KK1   ;判断进行加或减或乘
           AJMP JIAJIA
       KK1:CJNE R7,#1,KK2
           AJMP JIANJIAN
       KK2:CJNE R7,#2,KK3
           AJMP CHENGFA
       KK3:AJMP KAI
    JIAJIA:MOV A,50H       ;加法子程序
           ADD A,52H
           CJNE A,#10,L2
           CLR A
           INC 51H
           AJMP L1
        L2:JC L1
           SUBB A,#10
           INC 51H
        L1:MOV 54H,A
           MOV A,51H
           ADD A,53H
           CJNE A,#10,L3
           CLR A
           INC 56H
           AJMP L4
        L3:JC L4
           SUBB A,#10
           INC 56H
        L4:MOV 55H,A
           AJMP L5          ;-----JIAWAN--
  JIANJIAN:MOV A,53H        ; 减法子程序
           CJNE A,51H,N2    ;先判断哪个数比较大,大的存在53,52H
           MOV A,52H
           CJNE A,50H,N2
           MOV 54H,#0
           MOV 55H,#0
           AJMP L5
       N2: JC DIAN
    XJIAN: MOV A,52H      ;=====53,52储存大数,51,50储存小数= 相减==
           CJNE A,50H,N3
           MOV 54H,#0
           MOV A,53H
           SUBB A,51H
           MOV 55H,A
           AJMP L5
         N3:JNC N8
            MOV A,52H
            ADD A,#10
            SUBB A,50H
            MOV 54H,A
            DEC 53H
            MOV A,53H
            SUBB A,51H
            MOV 55H,A
            AJMP L5
        N8:MOV A,52H
           SUBB A,50H
           MOV 54H,A
           MOV A,53H
           SUBB A,51H
           MOV 55H,A
           AJMP L5
      DIAN:MOV 56H,#10        ;56H显示负号
           MOV A,50H          ;50H,51H 和52H,53H 对换
           MOV 50H,52H
           MOV 52H,A
           MOV A,51H
           MOV 51H,53H
           MOV 53H,A
           AJMP XJIAN         ;------JIANWAN-----
   CHENGFA:MOV A,50H          ;乘法子程序
           MOV B,52H
           MUL AB
           MOV B,#10
           DIV AB
           SWAP A
           ADD A,B
           MOV R4,A
           ANL A,#0F0H
           SWAP A
           MOV 55H,A
           MOV A,R4
           ANL A,#0FH
           MOV 54H,A       ;11WAN
           MOV A,50H
           MOV B,53H
           MUL AB
           MOV B,#10
           DIV AB
           SWAP A
           ADD A,B
           MOV R4,A
           ANL A,#0F0H
           SWAP A
           MOV 56H,A
           MOV A,R4
           ANL A,#0FH
           ADD A,55H
           MOV 55H,A   ;21WAN
           MOV A,52H
           MOV B,51H
           MUL AB
           MOV B,#10
           DIV AB
           SWAP A
           ADD A,B
           MOV R4,A
           ANL A,#0F0H
           SWAP A
           ADD A,56H
           MOV 56H,A
           MOV A,R4
           ANL A,#0FH
           ADD A,55H
           MOV 55H,A  ;12WAN
           MOV A,53H
           MOV B,51H
           MUL AB
           MOV B,#10
           DIV AB
           SWAP A
           ADD A,B
           MOV R4,A
           ANL A,#0F0H
           SWAP A
           ADD A,57H
           MOV 57H,A
           MOV A,R4
           ANL A,#0FH
           ADD A,56H
           MOV 56H,A ;22WAN
           MOV A,55H
           MOV B,#10
           DIV AB
           SWAP A
           ADD A,B
           MOV R4,A
           ANL A,#0F0H
           SWAP A
           ADD A,56H
           MOV 56H,A
           MOV A,R4
           ANL A,#0FH
           MOV 55H,A
           MOV A,56H
           MOV B,#10
           DIV AB
           SWAP A
           ADD A,B
           MOV R4,A
           ANL A,#0F0H
           SWAP A
           ADD A,57H
           MOV 57H,A
           MOV A,R4
           ANL A,#0FH
           MOV 56H,A
           AJMP L5        ;---CHENGFA--WAN

        L5:LCALL DISPLAY3
           LCALL KS1
           JNZ L5
           MOV R7,#5
        L6:LCALL DISPLAY3
           LCALL KS1
           JZ L6
           AJMP KAI
;-------------------CLEAR----------------------
       CLEAR:AJMP KAI
;----------------DELAY------------------------------
      DELAY:MOV R3,#01H
      LOOP2:MOV R2,#128
      LOOP1:DJNZ R2,LOOP1
            DJNZ R3,LOOP2
            RET

;--------------------列表---------------------------------------------------
       TABAL:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
     DUIHUAN:DB 07H,08H,09H,0AH,04H,05H,06H,0BH,01H,02H,03H,0CH,0DH,00H,0EH,0FH

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -