GUAN4  EQU  33H
GUAN5  EQU  34H
GUAN6  EQU  35H
GUAN7  EQU  36H
GUAN8  EQU  37H
ORG  00H
LJMP  star
ORG  23H
LJMP  CKT
;-----------------------初始设定
STAR:
   MOV SP,#60H
   MOV IE,#10010000B
   MOV SCON,#10010000B
   ANL PCON,#0111111B
   MOV TMOD, #20H
   MOV TH1, #0F2H
   MOV TL1, #0F2H
   SETB TR1
   MOV GUAN2,#00H
   MOV GUAN3,#00H
   MOV GUAN6,#00H
   MOV GUAN7,#00H
   CLR FLAGB
   CLR FLAGA
   MOV  DPTR,#TABLE
;-----------------主要执行总程序
ZONGSAO:
LCALL SHOW
ACALL AA
SJMP ZONGSAO
;--- ----扫描按键是否按下子程序
AA:
    S1:;------------ ------0,5键
       JNB FLAGB ,S2
       CLR FLAG2
       CLR FLAG1
       CLR FLAG0
       JB  P3.2 ,NEXT1
       ACALL DELAY
       JB  P3.2 ,NEXT1
       JNB  P3.2 ,$
       JB FLAGA ,WW1
       MOV GUAN7,#00H
       SETB FLAGA
       LJMP NEXT1
   WW1:
       MOV GUAN6 ,#00H
       CLR FLAGB
  NEXT1:
       JB  P3.7 ,ONE1
       ACALL DELAY
       JB  P3.7 ,ONE1
       JNB  P3.7 ,$
       JB FLAGA, MM1
       MOV GUAN7,#05H
       SETB FLAGA
       LJMP ONE1
   MM1:
       MOV GUAN6, #05H
       CLR FLAGB
  ONE1:  LJMP S2
S2:;---------------- ------1,6键
       JNB FLAGB, S3
       CLR FLAG2
       CLR FLAG1
       SETB FLAG0
       JB  P3.2 ,NEXT2
       LCALL DELAY
       JB  P3.2 ,NEXT2
       JNB  P3.2 ,$
       JB FLAGA ,WW2
       SETB FLAGA
       LJMP NEXT2
    WW2:
       MOV GUAN6 ,#01H
       CLR FLAGB
  NEXT2:
       LCALL DELAY
       JB  P3.7 ,ONE2
       JNB  P3.7 ,$
       JB FLAGA ,MM2
       MOV GUAN7,#06H
       SETB FLAGA
       LJMP ONE2
    MM2:
       MOV GUAN6 ,#06H
       CLR FLAGB
  ONE2: LJMP S3
S3:;------------------- ---2,7键
       JNB FLAGB ,S4
       CLR FLAG2
       SETB FLAG1
       CLR FLAG0
       JB  P3.2 ,NEXT3
       LCALL DELAY
       JB  P3.2 ,NEXT3
       JNB  P3.2 ,$
       JB FLAGA ,WW3
       MOV GUAN7 ,#02H
      SETB FLAGA
       LJMP NEXT3
   WW3:
       MOV GUAN6 ,#02H
       CLR FLAGB
  NEXT3:
       JB  P3.7 ,ONE3
       LCALL DELAY
       JB  P3.7 ,ONE3
       JNB  P3.7 ,$
       JB FLAGA ,MM3
       MOV GUAN7,#07H
       SETB FLAGB
       LJMP ONE3
   MM3:
       MOV GUAN6 ,#07H
       CLR FLAGB
  ONE3: LJMP S4
S4: ;----------------- 3,8键
       JNB FLAGB ,S5
       CLR FLAG2
       SETB FLAG1
       SETB FLAG0
       JB  P3.2 ,NEXT4
      LCALL DELAY
         JNB  P3.2 ,$
       JB FLAGA, WW4
       MOV GUAN7 ,#03H
       SETB FLAGA
       LJMP NEXT4
    WW4:
       MOV GUAN6,#03H
       CLR FLAGB
  NEXT4:
       JB  P3.7 ,ONE4
       LCALL DELAY
       JB  P3.7 ,ONE4
       JNB  P3.7 ,$
       JB FLAGA ,MM4
       MOV GUAN7,#08H
       SETB FLAGA
       LJMP ONE4
   MM4:
    LR FLAGB
  ONE4: LJMP  S5
S5:;----------- -----4,9键
       
JNB FLAGB ,S6
       SETB FLAG2
       CLR FLAG1
       CLR FLAG0
       LCALL DELAY
       JB  P3.2, NEXT5
       JNB  P3.2 ,$
       JB FLAGA ,WW5
         SETB FLAGA
       LJMP NEXT5
   WW5:
        MOV GUAN6 ,#04H
        CLR FLAGB
  NEXT5:
       JB  P3.7, ONE5
       LCALL DELAY
       JB  P3.7 ,ONE5
       JNB  P3.7 ,$
       JB FLAGA ,MM5
       SETB FLAGA
       SETB FLAGB
       LJMP ONE5
   MM5:
       MOV GUAN6 ,#09H
   ONE5: LJMP S6
S6:;----------- ---设定键,清除(零)键
       SETB FLAG2
       CLR FLAG1
       SETB FLAG0
       JB  P3.2 ,NEXT6
       LCALL DELAY
       JB  P3.2,NEXT6
       JNB  P3.2 ,$
    NEXT6:
       JB  P3.7 ,ONE6
       LCALL DELAY
       JB  P3.7 ,ONE6
       JNB  P3.7 ,$
       MOV GUAN6,#00H
       CLR FLAGA
       SETB FLAGB
  ONE6: LJMP S7
       SETB FLAG2
       SETB FLAG1
       CLR  FLAG0
       JB  P3.2 ,NEXT7
       LCALL DELAY
       JB  P3.2,NEXT7
       JNB  P3.2 ,$
       CLR FLAGB
       MOV B,#0AH
       MOV A,GUAN6
       MUL AB
       ADD A,GUAN7
       MOV SBUF,A
       JNB TI,$
       CLR TI
       SETB ES
 RET
;-------------- ------显示扫描子程序
SHOW:
       ;-----------guan8
       SETB FLAG0
       SETB FLAG1
       SETB FLAG2
       MOV  P1,#0CEH
       ACALL   DELAY2
      ;---------guan7
       SETB FLAG1
       SETB FLAG2
       MOV  A ,GUAN7
       MOVC  A,@A+DPTR
       MOV P1,A
       ACALL   DELAY2
      ;---------guan6
       CLR FLAG1
       SETB FLAG2
       MOV  A ,GUAN6
       MOVC  A,@A+DPTR
       MOV P1,A
       ACALL   DELAY2
    ;----------------guan5
       CLR FLAG0
       CLR FLAG1
       SETB FLAG2
       MOV  P1,#0C6H
       ACALL   DELAY2
     ;---------------guan4
       SETB FLAG0
       SETB FLAG1
       CLR  FLAG2
       MOV  P1,#0CEH
       ACALL   DELAY2
     ;--------guan3
       CLR FLAG0
       SETB FLAG1
       CLR FLAG2
       MOV  A ,GUAN3
       MOV P1,A
       ACALL   DELAY2
      ;---------guan2
       SETB FLAG0
       CLR FLAG1
       CLR FLAG2
       MOV  A ,GUAN2
       MOVC  A,@A+DPTR
       MOV P1,A
       ACALL   DELAY2
       CLR FLAG1
       CLR FLAG2
       MOV  P1,#0C6H
       ACALL   DELAY2
RET
;------------ ------------中断子程序
CKT:
      PUSH ACC
      PUSH PSW
      CLR   RI
      MOV A,SBUF
    ; JNB RI,$
      MOV B,#10
      DIV AB
      MOV GUAN3,B
      POP PSW
      POP ACC
      RETI
DELAY:  ;---- -------消抖延时程序6MS
      DL2:MOV R1,#7DH
      DL1:NOP
          NOP
          DJNZ R1,DL1
          DJNZ R0,DL2
      RET
 delay2:;--- -------------扫描延时程序
       MOV r0,#01h
    dl4:MOV r1,#0a0h
    dl3:NOP
        NOP
       DJNZ r1,dl3
       DJNZ r0,dl4
  RET
;-------------- ----------数码管显示表
TABLE: 
DB 92H,82H,0F8H,80H,90
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页