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

📄 ddddg.asm

📁 用单片机实现的计算器,有不明白的可以联系我,QQ64134703,专业毕业设计辅导
💻 ASM
字号:
RS BIT P2.0
RW BIT P2.1
E BIT P2.2
DBUF EQU 30H
TEMP EQU 40H
YJ EQU 50H
YJ1 EQU 51H
GONG EQU 52H


ORG 00H

START:MOV P0,#01H
      ACALL ENABLE
      MOV P0,#01H
      ACALL ENABLE
      MOV P0,#38H
      ACALL ENABLE
      MOV P0,#0cH
      ACALL ENABLE
      MOV P0,#07H
      ACALL ENABLE
	  MOV P0,#0CAH
	  ACALL ENABLE
      MOV R3,#0
	  MOV GONG,#0
	  

WAIT: CALL TESTKEY
      JZ WAIT
	  CALL GETKEY
	  INC R3
	  CJNE A,#0,NEXT1
	  LJMP E1
NEXT1:	CJNE    A,#1,NEXT2
		LJMP    E1
NEXT2:	CJNE    A,#2,NEXT3
		LJMP    E1
NEXT3:	CJNE    A,#3,NEXT4
		LJMP    E1
NEXT4:	CJNE    A,#4,NEXT5
		LJMP    E1
NEXT5:	CJNE    A,#5,NEXT6
		LJMP    E1
NEXT6:	CJNE    A,#6,NEXT7
		LJMP    E1
NEXT7:	CJNE    A,#7,NEXT8
		LJMP    E1
NEXT8:	CJNE    A,#8,NEXT9
		LJMP    E1
NEXT9:	CJNE    A,#9,NEXT10
		LJMP    E1
NEXT10:	CJNE   	A,#10,NEXT11       
		LJMP    E2                
NEXT11:	CJNE   	A,#11,NEXT12
		LJMP    E2
NEXT12:	CJNE   	A,#12, NEXT13
		LJMP   	E2
NEXT13:	CJNE   	A,#13,NEXT14
		LJMP   	E2
NEXT14:	CJNE   	A,#14,NEXT15
		LJMP   	E2
NEXT15:	LJMP   	E3
E1:		CJNE   	R3,#1,N1           
		LJMP    E11                
N1:		CJNE   	R3,#2,N2						  
		LJMP    E12               
N2:		CJNE    R3,#3,N3 
		LJMP    E13               
N3:		LJMP    E3     
E11:   	CALL SHOW
        MOV R4,A
        MOV 32H,A
		MOV 31H,#70H
		MOV 30H,#70H
		CALL DISP
		LJMP WAIT
E12:    CALL SHOW 
		MOV R7,A
        MOV B,#10
		MOV A,R4
		MUL AB
		ADD A,R7
		MOV R4,A
		MOV 30H,#70H
		MOV 31H,32H
		MOV 32H,R7
		LJMP WAIT
E13:    CALL SHOW
		MOV R7,A
        MOV B,#10
		MOV A,R4
		MUL AB
		JB OV,E3
		ADD A,R7
		JB CY,E3
		MOV R4,A
		MOV 30H,31H
		MOV 31H,32H
		MOV 32H,R7
		LJMP WAIT
E3:     MOV R3,#0
        MOV R4,#0
		MOV YJ,#0
		MOV GONG,#0
	    CALL CLEAR
		LJMP WAIT
E2: 	CALL CLEAR
        MOV R0,GONG
		MOV GONG,A
		MOV A,R0
		CJNE A,#10,N21
		LJMP JIA
N21:    CJNE A,#11,N22
        LJMP JIAN
N22:    CJNE A,#12,N23
        LJMP CHENG
N23:    CJNE A,#13,N24
        LJMP CHU
N24:    CJNE A,#0,N25
        LJMP FIRST
N25:    LJMP DEN
FIRST:  MOV YJ,R4
        MOV R3,#0
		LJMP DISP1
N4:     LJMP E3
JIA:    MOV A,YJ
        ADD A,R4
		JB CY,N4
		MOV YJ,A
		MOV R3,#0
		LJMP DISP1
JIAN:   MOV A,YJ
        SUBB A,R4
		JB CY,N4
		MOV YJ,A
		MOV R3,#0
		LJMP DISP1
CHENG:  MOV A,YJ
        MOV B,A
		MOV A,R4
		MUL AB
		JB OV,N4
		MOV YJ,A
		LJMP DISP1
CHU:    MOV A,R4
        MOV B,A
		MOV A,YJ
		DIV AB
		MOV YJ,A
		MOV R3,#0
		LJMP DISP1
DEN:    MOV R3,#0
        LJMP DISP1
DISP1:  MOV B,#10
        MOV A,YJ
		DIV AB
		MOV YJ1,A
		MOV A,B
		MOV 32H,A
		MOV A,YJ1
		JZ DISP11
		MOV B,#10
		MOV A,YJ1
		DIV AB
		MOV YJ1,A
		MOV A,B
		MOV 31H,A
		MOV A,YJ1
		JZ DISP11
		MOV 30H,A
DISP11:	CALL CLEAR
        CALL DISP
		LJMP WAIT
DISP:   CALL CLEAR
        MOV R0,#DBUF
		MOV R7,#3
	XX:	MOV A,@R0
	    INC R0
		CALL SHOW
		DJNZ R7,XX
		RET
TESTKEY:
       MOV P1,#0FH
       MOV A,P1
       CPL A
       ANL A,#0FH
       RET
KEYTABLE:
       DB  0D7H,0EBH,0DBH,0BBH   ;0,1,2,3
       DB  0EDH,0DDH,0BDH,0EEH   ;4,5,6,7
       DB  0DEH,0BEH,077H,07BH   ;8,9,+,-
       DB  07DH,07EH,0B7H,0E7H   ;*,/,=,ON/C
GETKEY:
       MOV R6,#10
       LCALL DELAY
       MOV P1,#0FH
       MOV A,P1
       CJNE A,0FH,K12
       LJMP WAIT
K12:   MOV B,A
       MOV P1,#0EFH
       MOV A,P1
       CJNE A,#0EFH,K13
       MOV P1,#0DFH
       MOV A,P1
       CJNE A,#0DFH,K13
       MOV P1,#0BFH
       MOV A,P1
       CJNE A,#0BFH,K13
       MOV P1,#07FH
       MOV A,P1
       CJNE A,#07FH,K13
       LJMP WAIT
K13:   ANL A,#0F0H
       ORL A,B
       MOV B,A
       MOV R1,#16
       MOV R2,#0
       MOV DPTR,#KEYTABLE
K14:   MOV A,R2
       MOVC A,@A+DPTR
       CJNE A,B,K16
       MOV P1,#0FH
K15:   MOV A,P1
       CJNE A,#0FH,K15
       MOV R6,#10
       LCALL DELAY1
       MOV A,R2

       RET
K16:   INC R2
       DJNZ R1,K14
       LJMP WAIT
delay1:mov r7,#80
dloop: djnz r7,dloop
       djnz r6,dloop
       ret

CLEAR: 
       MOV P0,#01H
       ACALL ENABLE
       MOV P0,#01H
       ACALL ENABLE
	   MOV P0,#0CAH
	   ACALL ENABLE
	   ACALL DELAY
	   RET
SHOW:  PUSH ACC
       CLR E
	   ACALL ENABLE
	   ADD A,#30H
	   MOV P0,A
	   SETB RS 
	   CLR RW
	   CLR E
	   POP ACC
	   ACALL DELAY
	   RET
ENABLE:CLR RS
   CLR RW
   CLR E
   ACALL DELAY
   SETB E
   RET
DELAY:
   MOV P0,#0FFH
   CLR RS
   SETB RW
   CLR E
   NOP
   SETB E
   JB P0.7,DELAY
   RET
   END


⌨️ 快捷键说明

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