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

📄 dl050301.asm

📁 印刷或包装机控制中的上料控制器
💻 ASM
📖 第 1 页 / 共 5 页
字号:
T0             EQU    00B4H
T1             EQU    00B5H
WR             EQU    00B6H
RD             EQU    00B7H
INT1           EQU    00B3H
SPEEDERRTIMER  EQU    1FH
SPEEDERR       EQU    50H

         ORG    0000H
         SJMP   MAIN
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         LJMP   TIMER0
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         LJMP   DROPOWER
         MOV    R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         LJMP  TIMER1
         MOV    R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV    R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV    R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV   R7,A
         MOV    R7,A
         MOV   R7,A
         MOV   R7,A

MAIN:
       ;***************INITAIL VARIABLE  BEGIN********************
        MOV  SP,#66H
        CLR    P2.0

        CLR    P2.1
        CLR    SPEEDERR

        CLR    59H
        CLR    58H
        CLR    79H
        CLR    69H
        CLR    7FH ;7F=1,SET STATE,ELSE DEMONSTRATE
        CLR    7EH ;GLEAM mark;7E=0,light,else dark.
        CLR    7DH ;time>2s
        CLR    7AH
        CLR    78H ;KEY ALWAYS DOWN.;78=0->keyup
        CLR    70H; PULLSPEED<PACKSPEED,70H=1;THEN HL3 CAN GLEAM
        ;NOTE:70H(PERMIT),7E(LIGHT OR DARK).
        SETB   6FH ;first set,6F=1
        CLR    73H
        CLR    6EH
        CLR    64H
        SETB   71H
        MOV    C, P1.0
        MOV    60H, C  ;START
        CLR    RD
        LCALL  DELAY100MS
        LCALL  DELAY100MS
        SETB   RD
        MOV    A, #00H
        MOV    37H, A ; ,0<37H<30,GLEAM TIME
        MOV    31H, A ; LEDSHIFT    0=<31H<4
        MOV    30H, A
        MOV    5AH, #0FFH
        MOV    50H,A  ;KEY SET RESET DOWN TIME ,SUBTITUTE FOR 64H,CAUSE OF "DUIZHAN"
        MOV    5DH, A  ;KEY EFFECT TIME,BEEP LEN
        MOV    5FH, A  ;FIRST SET TIME
        MOV    50H, A
        MOV    51H,A ;SET OR RESET CONTRO TIME
        MOV    52H,A ; OUT PULSE  L
        MOV    53H,A  ;OUT PULSE H
        ;MOV    5BH,A ;STEP  PER STAGE
        MOV    5CH,A ;SETTIME
        MOV    63H,A ;
        MOV    SPEEDERRTIMER,A
       ;**********INITIAL VARIABLE END*******************
;********************INITIAL DATA BUFFER BEGIN************
RD24WC02F:
        MOV    R0, #40H
        MOV    R2, #10H
        MOV    R3, #04H
        LCALL  RD24WC02
FBYTE012:
        MOV   41H,#00H
        MOV   42H,#00H
        MOV   43H,#0EH

FBYTE0:
        MOV    A, 40H
        CLR    C
        SUBB   A, #0AH
        JC     RD24WC02P
        MOV    40H,#00H

RD24WC02P:
        MOV    R0, #44H
        MOV    R2, #14H
        MOV    R3, #04H
        LCALL  RD24WC02
PBYTE0:
        MOV    A, 44H
        CLR    C
        SUBB   A, #08H
        JC     PBYTE1
        MOV    44H, #00H
PBYTE1:
        MOV    A, 45H
        CLR    C
        SUBB   A, #0AH
        JC     PBYTE2
        MOV    45H, #00H
PBYTE2:
        MOV    A, 46H
        CLR    C
        SUBB   A, #0AH
        JC     PBYTE3
        MOV    46H, #00H
PBYTE3:
        MOV    A, 47H
        CLR    C
        SUBB   A, #0AH
        JC     DATAPRO
        MOV    47H, #00H
DATAPRO:
        LCALL  DATAPROCESS
BAGCONT:
        MOV    R0, #48H
        MOV    R2, #30H
        MOV    R3, #08H
        LCALL  RD24WC02
        MOV    48H, #0AH
        MOV    A, 49H
        CLR    C
        SUBB   A, #0AH
        JC     H2
        MOV    49H, #00H
H2:
        MOV    A, 4AH
        CLR    C
        SUBB   A, #0AH
        JC     H1
        MOV    4AH, #00H
H1:
        MOV    A, 4BH
        CLR    C
        SUBB   A, #0AH
        JC     L4
        MOV    4BH, #00H
L4:
        MOV    A, 4CH
        CLR    C
        SUBB   A, #0AH
        JC    L3
        MOV    4CH, #00H
L3:
        MOV    A, 4DH
        CLR    C
        SUBB   A, #0AH
        JC     L2
        MOV    4DH, #00H
L2:
        MOV    A, 4EH
        CLR    C
        SUBB   A, #0AH
        JC     L1
        MOV    4EH, #00H
L1:
        MOV    A, 4FH
        CLR    C
        SUBB   A, #0AH
        JC     INITIALCPU
        MOV    4FH, #00H

 ;******************INITIAL DATA BUFFER END***********
 ;******************INITIAL CPU  BEGIN**************
INITIALCPU:
        MOV    89H, #11H
        SETB   EA
        SETB   77H ;77H=1 STARTORCURSOR in effect(set finish)else in vain(in setting).
        ;AT THAT MOMENT START OR CUR MAKE NO EFFECT TO OUT DEVICE.
        SETB  PX1
        SETB  EX1
        CLR   IT0
        SETB  ET0
        SETB  ET1
        MOV    DPTR, #0034H
        INC    0A2H
        MOV    DPTR, #0078H
        INC    0A2H
        MOV    A, 82H
        CJNE   A, #78H, SEARCHCYCLE
        LJMP   SEARCHCYCLE

 ;**************INITIAL CPU END******************
 ;**************CYCLE  BEGIN (FOREVER)**********************
SEARCHCYCLE:
        MOV   A,30H
        CJNE  A,#00H,DEMOF   ;DEMONSTRATE BAG LOW
        MOV   R0,#4CH
        SJMP  DEMOLED
;IF 30H=2,DEMONSTRATE   FREQUENCY
DEMOF:
        CJNE  A,#01H,DEMOP
        MOV    R0, #40H
        SJMP   DEMOLED
;IF 30H!=2,DEMONSTRATE PULSE
DEMOP:
        CJNE  A,#02H,DEMOBAGH
        MOV    R0,#44H
        SJMP   DEMOLED
DEMOBAGH:
        MOV  R0,#48H     ;H
DEMOLED:
        LCALL  DEMO ;DEMONSTRATE SUBROUTINE
        JB  INT1,INTERTIME
        SETB  64H
INTERTIME:
        JNB  64H,BEEPTIME
        INC   5CH
        MOV  A,5CH
        JNZ BEEPTIME
        CLR  64H
BEEPTIME:
        JB     RD, HANDTIME
        INC    5DH ;KEY DOWN TIME AND BEEP LENGTH
        MOV    A, 5DH
        CJNE   A, #0AH, HANDTIME
        MOV    5DH, #00H
        SETB   RD
HANDTIME:
       JNB   69H,SEARCHKEY;BEEP LEN
       INC   51H
       MOV   A,51H
       CJNE   A,#64H,SEARCHKEY
       MOV   51H,#00H
       CLR   69H

SEARCHKEY:
        JB     78H, ALWAYSDOWN ;SOMEKEY IS ALWAYS  DOWN->SEARCH AGAIN
        JB     7DH, L026EH ;78H=0->KEYUP,7D=1->TIME(2S) IS ENOUGH
        MOV    A, 90H
        ANL    A, #0F8H
        CJNE   A, #0F8H,SOMEKEYDOWN
        MOV    50H, #00H
        SJMP   SEARCHCYCLE
SOMEKEYDOWN:
        INC    5FH
        MOV    A, 5FH
        CJNE   A, #0AH, TIMELESS;
        MOV    5FH, #00H
        MOV    A, 90H
        ANL    A, #0F8H
        CJNE   A, #0F8H,TIMEENOUGH
        MOV    50H,#00H
        LJMP   SEARCHCYCLE ; TIMEENOUGH &THIS KEY IS DOWN
TIMEENOUGH:
        JNB    6FH, KEYRESET;6F=1,FIRST SET ,IF NOTFIRSTSET OR P1.6=1->
        JB     P1.6, KEYRESET
        INC    50H
        MOV    A, 50H
        CJNE   A, #0AH, TIMELESS
        MOV    50H, #00H
        SJMP   OTHERKEY
KEYRESET:
        JB     P1.7, OTHERKEY   ;NOT RESET,GOTO OTHERKEY
        INC    50H
        MOV    A, 50H
RESETTIME:
        CJNE   A, #0CH, TIMELESS  ;TIMELESS->TIMELESS
        MOV    50H, #00H
OTHERKEY:
        MOV    5EH, 90H
        LCALL  KEYPROCESS
        SETB   7DH
        CLR    RD
L026EH:
        INC    5FH
        MOV    A, 5FH
        CJNE   A, #0AH, L0288H
        MOV    5FH, #00H
        CLR    7DH
        SETB   78H
TIMELESS:
        LJMP   SEARCHCYCLE
ALWAYSDOWN:
        MOV    A, 90H
        ANL    A, #0F8H
        CJNE   A, #0F8H, L0288H
        CLR    78H
L0288H:
        LJMP   SEARCHCYCLE  ;RETURN TO SEARCH
;**************DEFINE KEY DOWN BEGIN********************
KEYPROCESS:
       MOV    A, 5EH
        JB     0E0H.7, IFKEYSET
        LJMP   KEYRESETPRO
IFKEYSET:
        JB     0E0H.6, IFKEYSEL
        LJMP   KEYSETPRO
IFKEYSEL:
        JB     0E0H.5, IFKEYUP
        LJMP   KEYSELPRO
IFKEYUP:
        JB     0E0H.4, IFKEYDOWN
        LJMP   KEYUPPRO
IFKEYDOWN:
        JB     0E0H.3, OUTKEYPRO
        LJMP   KEYDOWNPRO
OUTKEYPRO:
        RET
;************DEFINE KEY DOWN OVER *********************
;************KEY  SET DOWN  PROCESS BEGIN****************
KEYSETPRO:
        JNB    6FH, SETSTART  ;FIRST SET 6F=1
        CLR    6FH
        SETB   7FH  ;CONTRO DISPLAY OR SET
        CLR    69H
        CLR    TR0
        CLR    P2.0
        CLR    SPEEDERR
        MOV    SPEEDERRTIMER,#00H
        SETB   7BH
        CLR    7AH
        CLR    59H
        CLR    58H
        CLR    P2.1
        CLR    77H
        CLR    70H
        CLR    73H
        SETB   RD
        MOV    30H,#00H;FIRSET 30=1,PLAY PULSE
SETSTART:
        MOV     31H,#01H
        MOV     A,30H
        CJNE    A,#02H,SETF;30H=0,GOTO SETF
        MOV     30H,#00H
        MOV     31H,#00H
        SETB   6FH
        SETB   77H
        MOV    5AH,#0FFH
        MOV    R0, #44H
        MOV    R2, #14H
        MOV    R3, #04H
        LCALL  WR24WC02
        LCALL  DATAPROCESS
        CLR    7FH
        RET
SETF:
        INC    30H
        MOV    A, 30H
        CJNE   A,#01H,SETP
       ;30H=1,PULSE,HL1 LIT
        SJMP    HL1

SETP:
        CJNE    A,#03H,SETF2; 30H=2,FREQUENCY
        MOV  30H,#01H
        CLR  73H
HL1:
       MOV    5AH,#0F7H
       RET
SETF2:
        CJNE  A,#02H,OUTSET
        MOV     5AH,#7FH
        MOV    R0, #40H
        MOV    R2, #10H
        MOV    R3, #04H
        LCALL  WR24WC02
OUTSET:
        RET
;***********KEY SET DOWN PROCESS END*************
;***********KEY SELECT DOWN PROCESS BEGIN***************
KEYSELPRO:
        JNB    7FH, PLAYSHIFT
        INC    31H
        MOV    A,30H
        CJNE   A,#01H,PSELSHIFT
        MOV    A,31H
        CJNE   A, #02H, OUTSELF
        MOV    31H, #01H
OUTSELF:
        RET
PSELSHIFT:
        CJNE  A,#02H,OUTSELP
        MOV    A,31H
        CJNE   A,#05H,OUTSELP
        MOV    31H,#01H
OUTSELP:
        RET
PLAYSHIFT:
         CLR   69H
         INC    30H
SHIFTOP:
        MOV    A,30H
        CJNE   A,#01H,SHIFTOF
        ANL    5AH, #0F7H
        RET
SHIFTOF:
        CJNE  A,#02H,OUTSEL
        ORL    5AH, #0EEH
        ANL    5AH,#07FH
        RET
OUTSEL:
        MOV  30H,#00H
        ORL  5AH,#0EEH
        RET
;***********KEY SELECT DOWN PROCESS END***************
;***********KEY UP PROCESS BEGIN***************
UPDISPLAY:
       LJMP  HDISPLAY
KEYUPPRO:
        JNB    7FH, UPDISPLAY
        MOV     A,30H
        CJNE    A,#01H, ADDP
        MOV    A, 31H
        CJNE   A, #01H, ADDF2
        INC    40H
        MOV    A, 40H
        CJNE   A, #0AH, OUTADDF1
        MOV    40H, #00H
OUTADDF1:
        RET
ADDF2:
        CJNE   A, #02H, OUTADDF
        INC    41H
        MOV    A, 41H
        CJNE   A, #0AH,OUTADDF
        MOV    41H, #00H
OUTADDF:
        RET
ADDP:
        CJNE   A,#02H,OUTADDP
        MOV    A, 31H
        CJNE   A, #01H, ADDP2

        INC    44H
        MOV    A, 44H
        CJNE   A, #08H, OUTADDP1
        MOV    44H, #00H
OUTADDP1:
        RET
ADDP2:
        CJNE   A, #02H,ADDP3
        INC    45H
        MOV    A, 45H
        CJNE   A, #0AH, OUTADDP2
        MOV    45H, #00H
OUTADDP2:
        RET
ADDP3:
        CJNE   A, #03H,ADDP4
        INC    46H
        MOV    A, 46H
        CJNE   A, #0AH, OUTADDP3
        MOV    46H, #00H
OUTADDP3:
        RET
ADDP4:
        CJNE   A, #04,OUTADDP
        INC    47H
        MOV    A, 47H
        CJNE   A, #0AH, OUTADDP
        MOV    47H, #00H
OUTADDP:
        RET
HDISPLAY:
       JB   79H,L046AH
       JBC  69H,OUTH
       MOV A,30H
       CJNE A,#00H,ISH
       SJMP INVERSE
ISH:
      CJNE A,#03H,OUTH
INVERSE:
      CPL  73H
      JB 73H,TOH
      MOV 30H,#00H
      RET
TOH:
     MOV  30H,#03H
OUTH:
   RET
L046AH:
     LCALL  L05DFH
     CLR   69H
     RET
;***********KEY  DOWN PROCESS BEGIN***************
INHAND:
      LJMP  TEST
KEYDOWNPRO:
        JNB    7FH, INHAND
        MOV   A,30H
        CJNE  A ,#01H, DECP
DECF:
        MOV    A, 31H
        CJNE   A, #01H, DECF2
        DEC    40H
        MOV    A, 40H
        CJNE   A, #0FFH, OUTDECF1
        MOV    40H, #09H
OUTDECF1:
        RET
DECF2:
        CJNE   A, #02H, OUTDECF
        DEC    41H
        MOV    A, 41H
        CJNE   A, #0FFH,OUTDECF
        MOV    41H, #09H
OUTDECF:
        RET
DECP:
        CJNE   A,#02H,OUTDECP
        MOV    A, 31H
        CJNE   A, #01H, DECP2
        DEC    44H
        MOV    A, 44H
        CJNE   A, #0FFH, OUTDECP1
        MOV    44H, #07H
OUTDECP1:
        RET
DECP2:
        CJNE   A, #02H,DECP3
        DEC    45H
        MOV    A, 45H
        CJNE   A, #0FFH, OUTDECP2
        MOV    45H, #09H
OUTDECP2:
        RET
DECP3:
        CJNE   A, #03H,DECP4
        DEC    46H
        MOV    A, 46H
        CJNE   A, #0FFH, OUTDECP3
        MOV    46H, #09H
OUTDECP3:
        RET
DECP4:
        CJNE   A, #04,OUTDECP
        DEC    47H
        MOV    A, 47H
        CJNE   A, #0FFH, OUTDECP
        MOV    47H, #09H
OUTDECP:
        RET
OUT:
    RET
TEST:
     MOV   52H,#00H
     MOV   53H,#00H
     MOV   A,5AH
     JNB   0E0H.0,NOACTION
     NOP
     NOP
     CLR   SPEEDERR

     MOV   SPEEDERRTIMER,#00H
     JB    70H,NOACTION
     SETB  79H
     CLR   7AH
     SETB  77H

     CLR  P2.1
     MOV   51H,#00H
     CLR TR1
     LJMP  CTLOUT
NOACTION:
    RET
;***********KEY  DOWN PROCESS END**************
;***********KEY RESET DOWN PROCESS BEGIN***************
KEYRESETPRO:
        MOV  A,30H
        JZ   CLRCONT
        CJNE  A,#03H,OUTRESET
CLRCONT:
        MOV    A, #00H
        MOV    48H, #0AH
        MOV    49H, A
        MOV    4AH, A
        MOV    4BH, A
        MOV    4CH, A
        MOV    4DH, A
        MOV    4EH, A
        MOV    4FH, A
        MOV    R0, #48H

⌨️ 快捷键说明

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