lm320240.asm

来自「在51单片机中实现320*240液晶屏的显示」· 汇编 代码 · 共 1,542 行 · 第 1/5 页

ASM
1,542
字号
;*********************************************************************
;***                Copyright 2002-2004                            ***
;***                Landmore S&T CO:                               ***
;***                LCD   Display System                           ***
;***                LAST UPDATE 9TH JUNE 2004                      ***
;*********************************************************************

                FIR_SC_DATA             EQU             25H
                SEC_SC_DATA             EQU             26H
                THR_SC_DATA             EQU             27H
                FOR_SC_DATA             EQU             28H
                DATA1                   EQU             29H
                DATA2                   EQU             2AH
                DATA3                   EQU             2BH
                DATA4                   EQU             2CH
                LCDATA1                 EQU             2DH
                LCDATA2                 EQU             2EH
                THRDATA                 EQU             30H
                FORDATA                 EQU             31H
                SAVELC1                 EQU             32H
                SAVELC2                 EQU             33H
                HOUR                    EQU             34H
                MIN                     EQU             35H
                NHOUR                   EQU             36H
                NMIN                    EQU             37H
                JIANMA                  EQU             38H
                COUNT1                  EQU             3DH
                COUNT2                  EQU             3EH
                SDA                     EQU             3FH
                INTCOUNTER              EQU             40H
                START                   EQU             21H.7
                WC_ADD                  EQU             4000H
                WD_ADD                  EQU             0000H
                RB_ADD                  EQU             0000H
                RD_ADD                  EQU             4000H
                RTCS_ADD                EQU             8000H
                RTCN_ADD                EQU             8002H
                RTCH_ADD                EQU             8004H
                RTCT_ADD                EQU             8007H
                RTCM_ADD                EQU             8008H
                RTCY_ADD                EQU             8009H
                RTCA_ADD                EQU             800AH
                RTCB_ADD                EQU             800BH
                RTCC_ADD                EQU             800CH
                RTCD_ADD                EQU             800DH
                UP                      BIT             P1.0
                DOWN                    BIT             P1.1
                ELEV_DATA               BIT             P1.2
                RTCCS                   BIT             P1.3
                SPEAK_OUT               BIT             P3.3
                UP_FLAG                 BIT             21H.0
                DOWN_FLAG               BIT             21H.1
                NO_FLAG                 BIT             21H.5

;*********************************************************************
;***                                                               ***
;***                                                               ***
;***                         Main                                  ***
;***                                                               ***
;*********************************************************************
              ORG                       0000H
              LJMP                      MAIN


              ORG                       0003H
              LJMP                      REV_DATA

              ORG                       0BH
              JMP                       TIM0

              ORG                       0030H
MAIN:         SETB    P2.0
              ACALL   DL
              CLR     P2.0
              ACALL   DL
              ACALL   DL
              SETB    P2.0

              LCALL                     DEL_20MS
              SETB                      RTCCS
              CLR                       SPEAK_OUT
              LCALL                     INITIAL
              LCALL                     LINE
              CLR                       UP_FLAG
              CLR                       DOWN_FLAG
              CLR                       NO_FLAG
              MOV                       A,#34H
              MOV                       SAVELC1,A
              MOV                       SAVELC2,A
              MOV                       LCDATA1,A
              MOV                       LCDATA2,A
              MOV                       SP,#45H
              MOV                       IE,#82H
              MOV                       TMOD,#01H
              MOV                       TCON,#01H
              CLR                       START
              LCALL                     TIME
              LCALL                     NOSMOKING

MAIN1:

              JB                        P1.2,$
              CLR                       IE0
              SETB                      EX0
              MOV                       R3,#36D
 MM:          LCALL                     DELAY_500
              LCALL                     DELAY_300
              DJNZ                      R3,MM
              CLR                       START
              CLR                       EX0
              LCALL                     TIME
MAIN7:
              JB                        UP,MAIN8
              JB                        UP_FLAG,MAINLC
              LCALL                     UP_ARROW
              CLR                       DOWN_FLAG
              SETB                      UP_FLAG
              CLR                       NO_FLAG
              LCALL                     SPEAK
              LJMP                      MAINLC
MAIN8:
              JB                        DOWN,MAIN9
              JB                        DOWN_FLAG,MAINLC
              LCALL                     DOWN_ARROW
              SETB                      DOWN_FLAG
              CLR                       UP_FLAG
              CLR                       NO_FLAG
              LCALL                     SPEAK
              LJMP                      MAINLC
MAIN9:
              JB                        NO_FLAG,MAINLC
              LCALL                     NO_ARROW
              SETB                      NO_FLAG
              CLR                       UP_FLAG
              CLR                       DOWN_FLAG
MAINLC:
              MOV                       A,SAVELC2
              CJNE                      A,LCDATA2,MAINLC1
              AJMP                      MAINLC2
MAINLC1:
              LCALL                     FLCS2
MAINLC2:
              MOV                       A,SAVELC1
              CJNE                      A,LCDATA1,MAINLC3
              LJMP                      MAIN1
MAINLC3:
              LCALL                     FLCS1
              LJMP                      MAIN1
              
              DL:             MOV     R7,#06H
DL2:            MOV     R6,#0FFH
DL1:            DJNZ    R6,DL1
                DJNZ    R7,DL2
                RET


;*********************************************************************
;***                                                               ***
;***                                                               ***
;***                       Initial                                 ***
;***                                                               ***
;*********************************************************************
INITIAL:
              MOV                       DPTR,#WC_ADD
              MOV                       A,#40H
              MOVX                      @DPTR,A
              MOV                       COUNT1,#00H
INTR1:        MOV                       DPTR,#SYSTAB
              MOV                       A,COUNT1
              MOVC                      A,@A+DPTR
              MOV                       DPTR,#WD_ADD
              MOVX                      @DPTR,A
              INC                       COUNT1
              MOV                       A,COUNT1
              CJNE                      A,#08H,INTR1
              MOV                       DPTR,#WC_ADD
              MOV                       A,#44H
              MOVX                      @DPTR,A
              MOV                       COUNT1,#00H
INTR2:        MOV                       DPTR,#SCRTAB
              MOV                       A,COUNT1
              MOVC                      A,@A+DPTR
              MOV                       DPTR,#WD_ADD
              MOVX                      @DPTR,A
              INC                       COUNT1
              MOV                       A,COUNT1
              CJNE                      A,#06H,INTR2
              MOV                       DPTR,#WC_ADD
              MOV                       A,#5AH
              MOVX                      @DPTR,A
              MOV                       DPTR,#WD_ADD
              MOV                       A,#00H
              MOVX                      @DPTR,A
              MOV                       DPTR,#WC_ADD
              MOV                       A,#5BH
              MOVX                      @DPTR,A
              MOV                       DPTR,#WD_ADD
              MOV                       A,#0CH
              MOVX                      @DPTR,A
              LCALL                     CLEAR
              MOV                       DPTR,#WC_ADD
              MOV                       A,#59H
              MOVX                      @DPTR,A
              MOV                       DPTR,#WD_ADD
              MOV                       A,#54H
              MOVX                      @DPTR,A
              RET
;*************************************************************************
;***                                                                   ***
;***                        CLEAR RAM                                  ***
;***                                                                   ***
;*************************************************************************
CLEAR:
              MOV                       DPTR,#WC_ADD
              MOV                       A,#4CH
              MOVX                      @DPTR,A
              MOV                       A,#46H
              MOVX                      @DPTR,A
              MOV                       DPTR,#WD_ADD
              MOV                       A,#00H
              MOVX                      @DPTR,A
              MOV                       A,#00H
              MOVX                      @DPTR,A
              MOV                       DPTR,#WC_ADD
              MOV                       A,#42H
              MOVX                      @DPTR,A
              MOV                       R6,#080H
              MOV                       R7,#00H
CLR1:

              MOV                       DPTR,#WD_ADD
              MOV                       A,#00H
              MOVX                      @DPTR,A
              DJNZ                      R7,CLR1
              DJNZ                      R6,CLR1
              RET

;*********************************************************************
;***                                                               ***
;***                                                               ***
;***                        REV_DATA                               ***
;***                                                               ***
;*********************************************************************
REV_DATA:
            PUSH              ACC
            PUSH              PSW
            CLR               EX0
            JB                START,BIT0
            SETB              START
            MOV               INTCOUNTER,#23H
            LJMP              NEXT

BIT0:       MOV               A,INTCOUNTER
            CJNE              A,#23H,BIT1
            DEC               INTCOUNTER
            LJMP              NEXT
BIT1:       MOV               A,INTCOUNTER
            CJNE              A,#22H,BIT2
            JNB               P1.2,SETBIT1
            CLR               FIR_SC_DATA.0
            DEC               INTCOUNTER
            LJMP              NEXT
SETBIT1:    SETB              FIR_SC_DATA.0
            DEC               INTCOUNTER
            LJMP              NEXT

BIT2:       MOV               A,INTCOUNTER
            CJNE              A,#21H,BIT3
            JNB               P1.2,SETBIT2
            CLR               FIR_SC_DATA.1
            DEC               INTCOUNTER
            LJMP              NEXT
SETBIT2:    SETB              FIR_SC_DATA.1
            DEC               INTCOUNTER
            LJMP              NEXT

BIT3:       MOV               A,INTCOUNTER
            CJNE              A,#20H,BIT4
            JNB               P1.2,SETBIT3
            CLR               FIR_SC_DATA.2
            DEC               INTCOUNTER
            LJMP              NEXT
SETBIT3:    SETB              FIR_SC_DATA.2
            DEC               INTCOUNTER
            LJMP              NEXT

BIT4:       MOV               A,INTCOUNTER
            CJNE              A,#1FH,BIT5
            JNB               P1.2,SETBIT4
            CLR               FIR_SC_DATA.3
            DEC               INTCOUNTER
            LJMP              NEXT
SETBIT4:    SETB              FIR_SC_DATA.3
            DEC               INTCOUNTER
            LJMP              NEXT

BIT5:       MOV               A,INTCOUNTER
            CJNE              A,#1EH,BIT6
            JNB               P1.2,SETBIT5
            CLR               FIR_SC_DATA.4
            DEC               INTCOUNTER
            LJMP              NEXT
SETBIT5:    SETB              FIR_SC_DATA.4
            DEC               INTCOUNTER
            LJMP              NEXT

BIT6:       MOV               A,INTCOUNTER
            CJNE              A,#1DH,BIT7
            JNB               P1.2,SETBIT6

⌨️ 快捷键说明

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