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 + -
显示快捷键?