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

📄 zhuji.asm

📁 液体点滴速度检测装置主机汇编代码.可能会对你有些帮助
💻 ASM
字号:
;*******************液滴监测系统主机控制程序**********************

LED1 EQU 0A000H
LED2 EQU 0A006H

DISPRAM1  EQU 08H
DISPRAM2  EQU 09H
DISPRAM3  EQU 0AH
DISPRAM4  EQU 0BH
DISPRAM5  EQU 0CH

KEYPORT   EQU 0A100H

STATION   EQU  30H
COMMAND   EQU  31H
SPEED     EQU  32H
ALARM     EQU  33H

BCDBYTETEMP1 EQU 34H
TEMP1  EQU 35H
TEMP2  EQU 36H

T0TEMP EQU 37H
TMP1 EQU 38H
TMP2 EQU 39H
TMP3 EQU 3AH
TMP4 EQU 3BH
TMP5 EQU 3CH

     ORG 0000H

    JMP START_MAIN
    
     ORG  000BH
     JMP MYT0

     ORG 0023H
     JMP MYSBUFINT

     ORG 0030H
START_MAIN:
     CLR P1.0
     MOV SP,#50H
     MOV STATION,#0
     MOV COMMAND,#0
     MOV SPEED,#0
     MOV ALARM,#0
     MOV T0TEMP,#0
     MOV PCON,#80H
     MOV SCON,#90H

MOV TH0,#0
MOV TL0,#35
MOV TMOD,#01H
SETB ET0
CLR F1   
    
     SETB ES
     SETB EA

     MOV DISPRAM1,#0
     MOV DISPRAM2,#0
     MOV DISPRAM3,#0
     MOV DISPRAM4,#0
     MOV DISPRAM5,#0
MAIN1:

     MOV A,STATION
     CALL BIN_TO_BCD
     MOV DISPRAM5,R6
     MOV DISPRAM4,R7
     MOV A,SPEED
     CALL BIN_TO_BCD
     MOV DISPRAM3,R5
     MOV DISPRAM2,R6
     MOV DISPRAM1,R7
     CALL DISP
     MOV A,ALARM
     CJNE A,#55H,MAIN2
     SETB P1.0
MAIN2:
     CALL KEYIN
;********************
     CJNE A,#0BH,KEYSCAN1    ;OBH  STATION KEY
     MOV TEMP1,#0
KEYSCAN2:
     CALL DISP
     CALL KEYIN
     MOV B,A
     CJNE A,#0EH,KEYSCAN5
     MOV STATION,#0
     JMP MAIN1
KEYSCAN5:
     CJNE A,#0DH,KEYSCAN6
     MOV R5,#0
     MOV R6,DISPRAM5
     MOV R7,DISPRAM4
     CALL BCD_TO_BIN
     CJNE A,#17,$+3
     JNZ KEYSCAN19
     MOV STATION,#1
     JMP MAIN1
KEYSCAN19:
     JC KEYSCAN11
      MOV STATION,#16
      JMP MAIN1
KEYSCAN11:
     MOV STATION,A
     JMP MAIN1
KEYSCAN6:
     JNB F0,KEYSCAN2       ;F0=1 NUMBER KEY
     INC TEMP1
     MOV A,TEMP1
     CJNE A,#1,KEYSCAN3
     MOV DISPRAM5,B
     JMP KEYSCAN2
KEYSCAN3:
     MOV TEMP1,#0
     MOV DISPRAM4,B
     JMP KEYSCAN2
KEYSCAN1:    ; STATION KEY END

;*********************
     CJNE A,#0CH,KEYSCAN2_1    ;OCH  SPEED KEY
     JMP KEYSCAN2_2
KEYSCAN2_1:
     JMP KEYSCAN21
KEYSCAN2_2:
     MOV TEMP1,#0
KEYSCAN22:
     CALL DISP
     CALL KEYIN
     MOV B,A
     CJNE A,#0EH,KEYSCAN25
     MOV SPEED,#0
     JMP MAIN1
KEYSCAN25:
     CJNE A,#0DH,KEYSCAN26
     MOV R5,DISPRAM3
     MOV R6,DISPRAM2
     MOV R7,DISPRAM1
     CALL BCD_TO_BIN
     MOV SPEED,A
     CJNE A,#20,$+3
     JNC KEYSCAN28
     MOV A,#20
     MOV SPEED,#20
     JMP MAIN1
KEYSCAN28:
     CJNE A,#151,$+3
     JC KEYSCAN29
     MOV SPEED,#150
     JMP MAIN1
KEYSCAN29:
      MOV SPEED,A
     JMP MAIN1
KEYSCAN26:
     JNB F0,KEYSCAN22       ;F0=1 NUMBER KEY
     INC TEMP1
     MOV A,TEMP1
     CJNE A,#1,KEYSCAN23
     MOV DISPRAM3,B
     JMP KEYSCAN22
KEYSCAN23:
     CJNE A,#2,KEYSCAN24
     MOV DISPRAM2,B
     JMP KEYSCAN22
KEYSCAN24:
     MOV TEMP1,#0
     MOV DISPRAM1,B
     JMP KEYSCAN22
KEYSCAN21:                ;SPEED KEY END
;*************************
     CJNE A,#0AH,KEYSCAN31
     MOV A,STATION                 ;SEND KEY PRESS
     JZ KEYSCAN31
     MOV A,SPEED
     JZ KEYSCAN32
     CLR ES                 ;SEND "STATION+01H+SPEED"
     SETB TB8
     MOV SBUF,STATION
     JNB TI,$
     CLR TI
     CALL DISP
     CALL DISP
     CLR TB8
     MOV SBUF,#01H
     JNB TI,$
     CLR TI
     CALL DISP
     CALL DISP
     CLR TB8
     MOV SBUF,SPEED
     JNB TI,$
     CLR TI
     SETB ES
     JMP MAIN1
KEYSCAN32:         ;SEND "STATION+02H+00H"
     CLR ES
     SETB TB8
     MOV SBUF,STATION
     JNB TI,$
     CLR TI
     CALL DISP
     CALL DISP
     CLR TB8
     MOV SBUF,#02H
     JNB TI,$
     CLR TI
     CALL DISP
     CALL DISP
     CLR TB8
     MOV SBUF,#00
     JNB TI,$
     CLR TI
     SETB ES
     JMP MAIN1
KEYSCAN31:
;**************  ; CANCEL KEY PRESS
     CJNE A,#0EH,KEYSCAN41
     MOV ALARM,#00H
     CLR P1.0
     JMP MAIN1
KEYSCAN41:
;***************
;  DETECT ALL KEY PRESS
     CJNE A,#0FH,KEYSCAN58      


MOV TMP1,DISPRAM1
MOV TMP2,DISPRAM2
MOV TMP3,DISPRAM3
MOV TMP4,DISPRAM4
MOV TMP5,DISPRAM5

MOV DISPRAM1,#10
MOV DISPRAM2,#10
MOV DISPRAM3,#10
MOV DISPRAM4,#10
MOV DISPRAM5,#10

MOV R2,#1
MOV R3,#16
DETECT3:
CLR ES
SETB TB8
MOV SBUF,R2
JNB TI,$
CLR TI
CLR TB8
CALL DISP
MOV SBUF,#02
JNB TI,$
CLR TI
MOV SBUF,#0
JNB TI,$
CLR TI
CLR F1
SETB ES
SETB TR0
DETECT2:
JB F1,DETECT1
CALL DISP
JMP DETECT2
DETECT1:
INC R2
DJNZ R3,DETECT3

MOV DISPRAM1,TMP1
MOV DISPRAM2,TMP2
MOV DISPRAM3,TMP3
MOV DISPRAM4,TMP4
MOV DISPRAM5,TMP5


KEYSCAN58:
;******************
     JMP MAIN1

MYT0:
     PUSH ACC
     CLR TR0
     CLR TF0
     MOV TH0,#0
     MOV TL0,#35
     INC T0TEMP
     MOV A,T0TEMP
     CJNE A,#20,MYT0EXIT
     MOV T0TEMP,#0
     SETB F1

MYT0EXIT:
     SETB TR0
     POP ACC
     RETI     
     
     


MYSBUFINT:
     CLR ES
     JNB RI,MYSBUFINTEXIT


     CLR RI
     MOV STATION,SBUF
     JNB RI,$
     CLR RI
     MOV SPEED,SBUF
     JNB RI,$
     CLR RI
     MOV ALARM,SBUF
     
MOV A,STATION
CALL BIN_TO_BCD
MOV DISPRAM5,R6
MOV DISPRAM4,R7
MOV A,SPEED
CALL BIN_TO_BCD
MOV DISPRAM3,R5
MOV DISPRAM2,R6
MOV DISPRAM1,R7

MYSBUFINTEXIT:
     SETB ES
     RETI

 BIN_TO_BCD:
     MOV B,#100
     DIV AB
     MOV R5,A
     MOV A,B
     MOV B,#10
     DIV AB
     MOV R6,A
     MOV R7,B
     RET

BCD_TO_BIN:
     MOV B,R5
     MOV A,#100
     MUL AB
     MOV BCDBYTETEMP1,A
     MOV B,R6
     MOV A,#10
     MUL AB
     ADD A,R7
     ADD A,BCDBYTETEMP1
     MOV BCDBYTETEMP1,A
     MOV A,B
     JZ BCD_TO_BIN1
     MOV BCDBYTETEMP1,#151
BCD_TO_BIN1:
     MOV A,BCDBYTETEMP1
     RET

KEYIN:
      CLR F0
      MOV B,#55H       ;IF A=55H THEN NO KEY PRESS
      CLR P1.6
      CLR P1.7
      MOV DPTR,#KEYPORT
      MOVX A,@DPTR
      CPL A
      JZ KEYINEXIT1
      SETB P1.7      ;P1.6=0 P1.7=1
      MOVX A,@DPTR
      MOV R2,#8
      MOV R1,#1
KEYIN2:
      RRC A
      JNC KEYIN1
      INC R1
      DJNZ R2,KEYIN2

      SETB P1.6      ;P1.6=1 P1.7=0
      CLR P1.7
      MOVX A,@DPTR
      MOV R2,#8
      MOV R1,#1
KEYIN3:
      RRC A
      JNC KEYIN4
      INC R1
      DJNZ R2,KEYIN3
KEYIN4:
      MOV A,R1
      ADD A,#7
      JMP KEYINEXIT
KEYIN1:
      MOV A,R1
      DEC A
KEYINEXIT:
      CJNE A,#10,$+3
      JNC KEYINEXIT2
      SETB F0           ;F0=1 THEN IS NUMBER KEY
KEYINEXIT2:
      MOV B,A
      CLR P1.6
      CLR P1.7
KEYINEXIT3:
      MOVX A,@DPTR
      CPL A
      JZ KEYINEXIT1
      PUSH DPH
      PUSH DPL
      CALL DISP
      POP DPL
      POP DPH
      JMP KEYINEXIT3
KEYINEXIT1:
      MOV A,B
      RET

DISP_DEL:
    PUSH 06H
    PUSH 07H
    MOV R6,#1
DISP_DEL1:
    MOV R7,#200
    DJNZ R7,$
    DJNZ R6,DISP_DEL1
    POP 07H
    POP 06H
    RET

DISP:
    PUSH 02H
    MOV DPTR,#LED1
    MOV R0,#DISPRAM1
    MOV R2,#3
DISP1:
    MOV A,@R0
    CALL GETTAB
    MOVX @DPTR,A
    INC R0
    INC DPTR
    CALL DISP_DEL
    DJNZ R2,DISP1

    MOV DPTR,#LED2
    MOV R0,#DISPRAM4
    MOV R2,#2
DISP2:
    MOV A,@R0
    CALL GETTAB
    MOVX @DPTR,A
    INC R0
    INC DPTR
    CALL DISP_DEL
    DJNZ R2,DISP2

    POP 02H
    RET
GETTAB:
   INC A
   MOVC A,@A+PC
   RET
   DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;'0-9'
   DB  0BFH,0BFH,88H,83H,0C6H,0A1H,86H,8EH,8CH  ;'NO DISP, A -- F P'

   END                  

⌨️ 快捷键说明

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