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

📄 th25_计算器.asm

📁 单片机杭州天煌教仪自带例程单片机杭州天煌教仪自带例程
💻 ASM
字号:


       ;P1 键盘读入口     计算器实验
DBUF   EQU  30H
TEMP   EQU  40H
YJ     EQU  50H
YJ1    EQU  51H
GONG   EQU  52H
DIN    BIT  P3.6
CLK    BIT  P3.7

       ORG   0000H
       LJMP  START
       ORG   0030H

START: MOV   R3,#0
       MOV   GONG,#0
       MOV   30H,#10H
       MOV   31H,#10H
       MOV   32H,#10H
       MOV   33H,#10H
       MOV   34H,#10H
MLoop: LCALL  DISP
 WAIT: LCALL  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:    MOV   R4,A
        MOV   34H,A
        MOV   33H,#10H
        MOV   32H,#10H
        LJMP  MLOOP

E12:    MOV   R7,A
        MOV   B,#10
        MOV   A,R4
        MUL   AB
        ADD   A,R7
        MOV   R4,A
        MOV   32H,#10H
        MOV   33H,34H
        MOV   34H, R7
        LJMP  MLOOP

E13:    MOV   R7,A
        MOV   B,#10
        MOV   A,R4
        MUL   AB
        JB    OV,E3
        ADD   A,R7
        JB    CY,E3
        MOV   R4,A
        MOV   32H,33H
        MOV   33H,34H
        MOV   34H,R7
        LJMP  MLOOP

E3:    MOV    R3,#0
       MOV    R4,#0
       MOV    YJ,#0
       MOV    GONG,#0
       MOV    30H,#10H
       MOV    31H,#10H
       MOV    32H,#10H
       MOV    33H,#10H
       MOV    34H,#10H
       LJMP   MLOOP

E2:     MOV   34H,#10H
        MOV   33H,#10H
        MOV   32H,#10H
        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        ;=

N4:    LJMP   E3
FIRST: MOV    YJ,R4
       MOV    R3,#0
       LJMP   DISP1

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,E3
       MOV    YJ,A
       MOV    R3,#0
       LJMP   DISP1


CHENG: MOV    A,YJ
       MOV    B,A
       MOV    A,R4
       MUL    AB
       JB     OV,E3
       MOV    YJ,A
       MOV    R3,#0
       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    34H,A
       MOV    A,YJ1
       JZ     DISP11
       MOV    B,#10
       MOV    A,YJ1
       DIV    AB
       MOV    YJ1,A
       MOV    A,B
       MOV    33H,A
       MOV    A,YJ1
       JZ     DISP11
       MOV    32h,A
DISP11:LJMP   MLOOP


           ;     串行静态显示  DISP1.ASM   5 LED
           ;   ?P3.0--DIN   P3.1--CLK
DISP: MOV   R0,  #DBUF
      MOV   R1,  #TEMP
      MOV   R2,  #5
 DP10:MOV   DPTR,#SEGTAB
      MOV   A,   @R0
      MOVC  A,   @A+DPTR
      MOV   @R1, A
      INC   R0
      INC   R1
      DJNZ  R2,  DP10
      MOV   R0,  #TEMP
      MOV   R1,  #5
 DP12:MOV   R2,  #8
      MOV   A,   @R0
 DP13:RLC   A
      MOV   DIN, C
      CLR   CLK
      SETB  CLK
      DJNZ  R2,  DP13
      INC   R0
      DJNZ  R1,  DP12
      RET
SEGTAB:  DB 3FH,06H,5BH,4FH,66H,6DH
         DB 7DH,07H,7FH,6FH,77H,7CH
         DB 39H,5EH,79H,71H,00H,40H

           ;=====================================
TestKey:
      MOV   P1,#0FH        ; 读入键状态
      MOV   A,P1
      CPL   A
      ANL   A,#0fh         ; 高四位不用
      RET


KeyTable:DB   0EEH,0DEH,0BEH,07EH
         DB   0EDH,0DDH,0BDH,07DH
         DB   0EBH,0DBH,0BBH,07BH
         DB   0E7H,0D7H,0B7H,077H      ; 键码定义

GetKey:
      MOV   R6,#10
      ACALL  DELAY
      MOV   P1,#0FH
      MOV   A,P1
      CJNE  A,#0FH, K12
      LJMP  MLOOP
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,#7FH
      MOV   A,P1
      CJNE  A,#7FH, K13;
      LJMP  MLOOP
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
      ACALL DELAY
      MOV   A,   R2
      RET
K16:  INC   R2;
      DJNZ  R1,  K14
      LJMP  MLOOP

DELAY:               ; 延时子程序
       MOV   R7, #0
DLOOP:
       DJNZ  R7, DLOOP
       DJNZ  R6, DLOOP
       RET

       END







⌨️ 快捷键说明

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