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

📄 dxp.asm

📁 一款应用在客运系统的LED导向屏程序
💻 ASM
字号:
;DATA
          DISBUFL     EQU        00H
          DISBUFH     EQU        00H
          ZMH         EQU        0FH
          ZML         EQU        0F8H
          SADDH       EQU         10H
          REVH        EQU         0FH
          REVL        EQU         078H
          HZDBUFH     EQU         00H
          HZDBUFL     EQU         00H
          ZFDBUFH     EQU         80H
          ZFDBUFL     EQU         00H
          MASKS       DATA        4CH
          BUFST       EQU         49H
          KMARK       DATA        4FH
          SOURH       DATA        49H
          SOURL       DATA        4AH
          MZS         DATA        4BH
          LINREG      DATA        50H
          DPL0        DATA        4DH
          DPH0        DATA        4EH
          MJS         DATA        48H
          HZJS        DATA        47H
          MONTH       DATA        46H
          DAYB        DATA        45H
          SOU2H       DATA        44H
          SOU2L       DATA        43H
          SECB        DATA        42H
          MP0         DATA        41H
          MZSB        DATA        40H
          YCH         DATA        3FH
          XBIT        DATA        3EH
          ROWAL       DATA        3DH
          ROWAH       DATA        3CH
          COL_OF      DATA        3BH
          STNY        DATA        3AH
          STNR        DATA        39H
          RY          DATA        38H
          NR          DATA        37H
          NY          DATA        36H
          YH          DATA        35H
          OUTCT       DATA        34H
;PORT
           INH        EQU        P1.5
           STRD       EQU        P1.4
           ENCLK      EQU        P1.6
	   DOPORT     EQU	 P1.7
	   STR	      EQU	 P3.1
	   CLK	      EQU	 P3.4;T0
	   SOUND      EQU	 P3.5;T1
;	   LIGHT      EQU	 P3.3;INT1
;BIT
	  LIT	      EQU	00H
	  ALMEN       EQU	01H
	  ALMST       EQU	02H
	  DYF	      EQU	03H
	  HIALM       EQU	04H
	  KM	      EQU	07H
	  KP	      EQU	08H
	  OUTFLAG     EQU	09H
          LEAPY       EQU       0AH
          DOTBIT      EQU       0BH
          D_OVER      EQU       0CH
          sioen       EQU       0DH
;
;
	    ORG    0000H
	    LJMP   MAIN
;
;
	    ORG    000BH
            LJMP   TIMER0
	    ORG  0013H
	    LJMP	O_UI
            ORG  0023H
	    LJMP SSERVER

;
;
	ORG   0050H
MAIN:   MOV     SP,#50H
        ACALL   INIT
        ACALL   SELERAM
        ACALL   CLRDIS
DISPST: CLR     OUTFLAG
dis1:   ACALL   DISPCZ
        ACALL   DISPSM
        MOV     MJS,#0
        MOV     A,MZS
        JZ      DISPST
        ACALL   DISPCZ
        ACALL   DISPSM
DSPLOOP:ACALL   SHFDISP
        ACALL   DISPSM
        JB      OUTFLAG,DISPST
        INC      MJS
        MOV      A,MJS
        CJNE     A,MZS,DSPLOOP
        MOV      MJS,#0
        sjmp     dis1
;        SJMP    DSPLOOP
;
INIT:
            MOV   IE,#12H      ;ES=1,ET0=1,EX0=1,EA=0  ??????????? 13h 12h
	    MOV   IP,#10H      ;PS=1,PT0=0
	    MOV   TMOD,#20H    ;8889uS
	    MOV   TCON,#50H    ;
	    MOV   TH1,#0Fah;AH    ;9600
	    MOV   TL1,#0Fah;AH    ;
	    MOV   SCON,#0D0H   ;
	    CLR    A		;CLEAR RAM
            MOV    R0,#4FH	;
LOOPI:	    MOV    @R0,A	;
	    DJNZ   R0,LOOPI	;
            CLR    STRD
            CLR    INH
            MOV    LINREG,#0FH
	    SETB   EA		;ENABLE INT
            setb   TR0
            PUSH   PSW
            MOV    PSW,#00011000B;
            MOV    R6,#50
            POP    PSW
	    RET

;
SHFDISP:    PUSH PSW
            MOV  PSW,#00010000B;
            MOV  A,MJS           ;MJS->
            ADD  A,#SADDH        ;because per p 256byte
            MOV  SOURH,A         ;calculate result sourh
            MOV  SOU2H,A
            MOV  R7,#16           ;r7 hz ji shu
            MOV  HZJS,#0         ;hzjs clear
AHZLOP:     MOV  A,HZJS          ;
            MOV  B,#16
            MUL  AB              ;
            MOV  SOURL,A
            MOV  SOU2L,A         ;
            MOV  R6,#2          ;hz left  right
COL16LOP:   MOV  R5,#8          ;r5 8lie
            MOV   MASKS,#80H     ;masks =80  8 lie
ROW16LOP:   PUSH  SOURH
            PUSH  SOURL
            MOV   R3,#0          ;r3 row jishu
SHF1C:
            MOV   R2,#127           ;shirft bytes
            MOV   A,#0c0H            ;a row =192
            MOV   B,R3              ;r3=rows
            MUL   AB                ;r3*80h
            MOV   R0,A              ;r0=target lo
            MOV   P2,B              ;p2=target hi
            MOV   DPL,A             ;
            MOV   DPH,B             ;
            INC   DPTR              ;source addr=target addr+1
AROWLOP:    MOVX  A,@DPTR           ;read source
            MOVX  @R0,A             ;write to target
            INC   DPTR              ;target+1
            INC   R0
 

            JB    OUTFLAG,IEXIT                ;source+1
            CJNE  R0,#0,AROWL1
            INC   P2               ;1 C
;            SJMP  AROWL1           ;2 C
;AROWL2:     DB 0,0,0           
AROWL1:     DJNZ  R2,AROWLOP
            MOV   DPH,SOURH          ;source address
            MOV   DPL,SOURL          ;
            MOVX  A,@DPTR
            ANL   A,MASKS
            JNZ   WFF
            SJMP  WOK
WFF:        MOV   A,#0FFH
WOK:        MOVX  @R0,A
            mov   dph,sourh    ;
            mov   dpl,sourl    ;
            INC   DPTR         ;
            MOV   SOURH,DPH    ;
            MOV   SOURL,DPL    ;
            INC   R3           ;
            CJNE  R3,#16,SHF1C ;
            MOV   A,MASKS
            RR    A
            MOV   MASKS,A
            POP   SOURL
            POP   SOURH
            DJNZ  R5,ROW16LOP
            INC   HZJS
            MOV   A,HZJS
            CJNE  A,#16,AHZLOP
            POP   PSW
            RET
 IEXIT:     POP   ACC
            POP   ACC
            POP   PSW
            RET

;
ALLCLR:     MOV    DPH,#REVH
            MOV    DPL,#REVL
            MOV    R7,#60H
            MOV    R6,#0
            MOV    MZS,#0
            MOV    A,#0FFH
     CLRLOP:MOVX   @DPTR,A
            INC    DPTR
            DJNZ   R6,CLRLOP
            DJNZ   R7,CLRLOP
            RET
;
CLRDIS:     MOV    R6,#10H;0CH
            MOV    R7,#00H
            MOV    DPTR,#0
            MOV    A,#0FFH
CLRL:       MOVX   @DPTR,A
            INC    DPTR
CLR1:       DJNZ   R7,CLRL
            DJNZ   R6,CLRL
            MOV    DPL,#ZML
            MOV    DPH,#ZMH
            MOV    A,#0
            MOV    R5,#8
CLR2:       MOVX   @DPTR,A
            INC    DPTR
            DJNZ   R5,CLR2
clr3:       RET
DISPCZ:     ACALL  SELERAM
            MOV    DPH,#REVH  ;0EF8H
            MOV    DPL,#REVL  ;
            MOV    R5,#0      ;R5  ROW JSQ
 DCZ1:      MOV    A,#0C0H    ;A ROW  BYTES  192 D
            MOV    B,R5       ;
            MUL    AB         ;
            ADD    A,#80H     ;YUE GUO TIAO PING  80H
            MOV    R0,A       ;
            MOV    A,B        ;
            ADDC   A,#0       ;
            MOV    P2,A       ;
            MOV    R6,#8      ;WANT TO WRITE  BYTES
            MOV    R7,#8
DLP0:
DLP1:       MOVX   A,@DPTR    ;DU  CHEZHANMING
            INC    DPTR       ;DPTR+1
DLP2:       RLC    A          ;LEFT SHIFT
            XCH    A,B        ;
            JNC     A00       ;
AFF:        MOV    A,#0FFH
            SJMP   DLP3       ;
A00:        CLR    A          ;
DLP3:       MOVX   @R0,A      ;
            INC    R0
            CJNE   R0,#0,DLP4
            INC    P2
DLP4:       XCH    A,B
            DJNZ   R7,DLP2
            MOV    R7,#8
            DJNZ   R6,DLP0   ;R6 YI HANG ZIJIE SHU
            MOV    R6,#8
            INC    R5
            CJNE   R5,#16,DCZ1

            RET
 DISPSM:    ACALL  SELERAM
            MOV    DPL,#ZML
            MOV    DPH,#ZMH
            MOV    R7,#8
DSML:       MOVX   A,@DPTR
            INC    DPTR
            ACALL  OBIT
            DJNZ   R7,DSML
            SETB   STR
            NOP
            NOP
            NOP
            NOP
            CLR    STR
            RET
;
OBIT:	MOV  R4,#8
O_LOOP: RLC  A
	MOV  DOPORT,C
	SETB CLK
	NOP
	NOP
	CLR   CLK
	DJNZ R4,O_LOOP
	RET
;
;Subroute for Serial Communications Serve
;
SSERVER:    PUSH   ACC
            PUSH   B
            PUSH   PSW
            PUSH   DPL
            PUSH   DPH
            PUSH   P1
            MOV    PSW,#00011000B;
            CLR    RI           ;
            MOV    A,SBUF       ;READ SBUF TO ACC
            jb     sioen,sioold ;
            ljmp   jqhpr
sioold:     JNB    RB8,PDATA    ;RB8=0 ? YES THEN GOTO PDATA
            CLR    D_OVER
            MOV    R7,A         ;No. OF PIC STORE
            CLR    C
	    SUBB   A,#127
            JNC    ERR
            MOV    A,R7
            MOV    MZSB,A
            DEC    MZSB
            MOV    R2,#REVH
            MOV    R3,#REVL
            MOV    R4,A
            MOV    R5,#136
            LJMP   RETURN
ERR:        SETB   D_OVER
            clr    sioen
            MOV    R6,#50
            LJMP   RETURN
PDATA:      JB     D_OVER,ERR
            MOV    DPH,R2
            MOV    DPL,R3
            ACALL  SELERAM
            MOVX   @DPTR,A
            INC    DPTR
            MOV    R3,DPL
            MOV    R2,DPH
            DJNZ   R5,RETURN
            DJNZ   R4,RETURN
PD1:        SETB   OUTFLAG
            SETB   D_OVER
            MOV    A,MZSB
            MOV    MZS,A
            clr    sioen
            mov    r6,#50
RETURN:     POP    P1
            POP    DPH
            POP    DPL
            POP    PSW
            POP    B
            POP    ACC
            RETI
jqhpr:      jnb    rb8,err      ;
            cjne   a,#1,err     ;
            djnz   r6,return    ;
            mov    r6,#50       ;
            setb   sioen        ;turn on sio
            sjmp   return
SELERAM:     CLR   P1.2         ;CS0
             CLR   P1.3         ;
             RET
SELERT:      SETB  P1.2         ;CS3
             SETB  P1.3         ;
             RET                ;
SELEKB:      SETB  P1.2         ;CS1
             CLR   P1.3         ;
             RET
SELEROM:     CLR   P1.2         ;CS2
             SETB  P1.3
             RET
;
;扫描子程序
;入口参数:
;出口参数:
;变量:DPL0 DPH0 :扫描缓冲区指针.MP0:键盘0-3 行选4-7 .
;    LINREG:行选计数 0-15
;影响资源:P1 ,A,B,DPTR,R0
DOTSC:  ACALL   SELERAM         ;
        MOV     DPL,DPL0
        MOV     DPH,DPH0
        CLR     ENCLK
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;1
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;2
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;3
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;4
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;5
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;6
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;7
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;8
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;1
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;2
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;3
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;4
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;5
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;6
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;7
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;8
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;1
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;2
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;3
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;4
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;5
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;6
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;7
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H
        DB      0E0H,0A3H,0E0H,0A3H,0E0H,0A3H,0E0H,0A3H;8
        MOV     DPL0,DPL
        MOV     DPH0,DPH
        SETB    ENCLK
        INC     LINREG
        ANL     LINREG,#0FH
        MOV     A,LINREG
        CJNE    A,#0FH,NSTAR
        MOV     DPL0,#0
        MOV     DPH0,#0
;
;
NSTAR:  SETB    INH              ;INHIBIT DISPLAY
        ACALL   SELEKB           ;
        CJNE    A,#8,NS0
NS0:    JC      NS2
        CLR     ACC.7
        SETB    ACC.3
        SJMP    NS3
NS2:    CLR     ACC.3
        SETB    ACC.7
NS3:    SWAP    A                ;行选信号 d7d6d5d4
        MOVX    @R0,A
        SETB    STRD
        NOP
        nop
        nop
        nop
        NOP
        CLR     STRD
        CLR     INH
        RET
;Subroute for Timer0 Interrupt Serve
; 功能: 1:定时扫描显示. 2:发声. 3:扫描键盘且处理
; 入口参数:无
; 使用 第一组寄存器  R3:键盘扫描分频系数
;
TIMER0: PUSH    ACC
	PUSH	PSW
        PUSH    DPL
        PUSH    DPH
        PUSH    B
        PUSH    P1
	MOV	PSW,#00001000B
	MOV	TH0,#0B0H                ;0dh
        MOV	TL0,#0H                 ;
        SETB    KP
        LCALL   DOTSC                    ;扫描显示
        CLR     KP
        POP     P1
        POP     B
        POP     DPH
        POP     DPL
        POP	PSW                      ;
	POP	ACC                        ;
	RETI                             ;
;
;
O_UI:	RETI






⌨️ 快捷键说明

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