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

📄 1602万年历w.txt

📁 电子钟仿真(51) 电子钟仿真(51)
💻 TXT
字号:

RS BIT P2.0 
RW BIT P2.1 
EP BIT P2.2 
PRE BIT P1.4 
ADJ BIT P1.5 
SPK BIT P3.7 
YEAR DATA 18H 
MONTH DATA 19H 
DATE DATA 1AH 

WEEK DATA 1BH 
HOUR DATA 1CH 
MIN DATA 1DH 
SEC DATA 1EH 
SEC100 DATA 1FH 
HOUR_ARM DATA 20H 
MIN_ARM DATA 21H 
SEC_ARM DATA 22H 
STATE DATA 23H 
ALARM BIT STATE.0 
LEAP BIT STATE.1 
KEY_S DATA 24H 
KEY_V DATA 25H 
DIS_BUF_U0 DATA 26H 
DIS_BUF_U1 DATA 27H 
DIS_BUF_U2 DATA 28H 
DIS_BUF_U3 DATA 29H 
DIS_BUF_U4 DATA 2AH 
DIS_BUF_U5 DATA 2BH 
DIS_BUF_U6 DATA 2CH 
DIS_BUF_U7 DATA 2DH 
DIS_BUF_U8 DATA 2EH 
DIS_BUF_U9 DATA 2FH 
DIS_BUF_U10 DATA 30H 
DIS_BUF_U11 DATA 31H 
DIS_BUF_U12 DATA 32H 
DIS_BUF_U13 DATA 33H 
DIS_BUF_U14 DATA 34H 
DIS_BUF_U15 DATA 35H

 
DIS_BUF_L0 DATA 36H 
DIS_BUF_L1 DATA 37H 
DIS_BUF_L2 DATA 38H 
DIS_BUF_L3 DATA 39H 
DIS_BUF_L4 DATA 3AH 
DIS_BUF_L5 DATA 3BH 
DIS_BUF_L6 DATA 3CH 
DIS_BUF_L7 DATA 3DH 
DIS_BUF_L8 DATA 3EH 
DIS_BUF_L9 DATA 3FH 
DIS_BUF_L10 DATA 40H 
DIS_BUF_L11 DATA 41H 
DIS_BUF_L12 DATA 42H 
DIS_BUF_L13 DATA 43H 
DIS_BUF_L14 DATA 44H 
DIS_BUF_L15 DATA 45H 
FLAG DATA 46H 

DIS_H DATA 47H 
DIS_M DATA 48H 
DIS_S DATA 49H 
DIS_S0 DATA 4AH 
DIS_S1 DATA 4BH 
DIS_S2 DATA 4CH 
DIS_S3 DATA 4DH 
DIS_S4 DATA 4EH 
DIS_S5 DATA 4FH 


ORG 0000H 
LJMP START 
ORG 000BH 
LJMP TIMER0 
ORG 001BH 
LJMP TIMER1 
ORG 0100H 
START: 
MOV SP,#60H 
MOV R0,#18H 
MOV A,#00H 
MEM_INI: 
MOV @R0,A 
INC R0 
CJNE R0,#5FH,MEM_INI 
LCALL DELAY_5ms 
MOV R0,#38H 
LCALL LCD_WCMD 
LCALL DELAY_5ms 
MOV R0,#0CH 
LCALL LCD_WCMD 
LCALL DELAY_5ms 
MOV R0,#06H 
LCALL LCD_WCMD 
LCALL DELAY_5ms 
MOV R0,#01H 
LCALL LCD_WCMD 
LCALL DELAY_5ms 
MOV R0,#40H 
LCALL lcd_wcmd 

MOV R0,#1FH 
LCALL lcd_wdat 

MOV R0,#41H 
LCALL lcd_wcmd 
MOV R0,#11H 
LCALL lcd_wdat 
MOV R0,#42H 
LCALL lcd_wcmd 
MOV R0,#15H 
LCALL lcd_wdat 
MOV R0,#43H 
LCALL lcd_wcmd 
MOV R0,#11H 
LCALL lcd_wdat 
MOV R0,#44H 
LCALL lcd_wcmd 
MOV R0,#1FH 
LCALL lcd_wdat 
MOV R0,#45H 
LCALL lcd_wcmd 
MOV R0,#0AH 
LCALL lcd_wdat 
MOV R0,#46H 
LCALL lcd_wcmd 
MOV R0,#1FH 
LCALL lcd_wdat
MOV R0,#47H 
LCALL lcd_wcmd 
MOV R0,#00H 
LCALL lcd_wdat 
 

MOV R0,#48H 
CALL lcd_wcmd 
MOV R0,#01H 
LCALL lcd_wdat 
MOV R0,#49H 
LCALL lcd_wcmd 
MOV R0,#1BH 
LCALL lcd_wdat 
MOV R0,#4AH 
LCALL lcd_wcmd 
MOV R0,#1DH 
LCALL lcd_wdat 
MOV R0,#4BH 
LCALL lcd_wcmd 
MOV R0,#19H 
LCALL lcd_wdat 
MOV R0,#4CH 
LCALL lcd_wcmd 
MOV R0,#1DH 
LCALL lcd_wdat 
MOV R0,#4DH 
LCALL lcd_wcmd 
MOV R0,#1BH 
LCALL lcd_wdat 
MOV R0,#4EH 
LCALL lcd_wcmd 
MOV R0,#01H 
LCALL lcd_wdat 
MOV R0,#4FH 
LCALL lcd_wcmd 
MOV R0,#00H 
LCALL lcd_wdat 
MOV YEAR,#5 
MOV MONTH,#1 
MOV DATE,#1 
MOV DIS_S0,#35H 
MOV DIS_S1,#31H 
 MOV DIS_S2,#43H 
MOV DIS_S3,#35H 
MOV DIS_S4,#31H 
MOV DIS_S5,#20H 
MOV R1,#00H 
LCALL WEEK_PRO 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 


MAIN: 
MOV IE,#8AH 
MOV TMOD,#11H 
MOV TH0,#0DCH 
MOV TL0,#00H 
MOV TH1,#0FFH 
MOV TL1,#00H 
SETB ALARM 
CLR TR1 
SETB TR0 
MOV KEY_V,#03H 
MAIN_1: 
LCALL KEY_SCAN 
MOV A,KEY_S 
XRL A,KEY_V 
JZ MAIN_1 
LCALL DELAY_5ms 
LCALL DELAY_5ms 
LCALL KEY_SCAN 
MOV A,KEY_S 
XRL A,KEY_V 
JZ MAIN_1 
MOV KEY_V,KEY_S 
MOV A,KEY_V
 XRL A,#01H 
JNZ MAIN_2 
CLR TR0

MOV IE,#00H 
LCALL KEY_PRE_PRO
SJMP MAIN_1 
MAIN_2: 
MOV A,KEY_V 
XRL A,#02H 
JNZ MAIN_1 
LCALL KEY_ADJ_PRO 
SJMP MAIN_1 

KEY_SCAN: CLR A 
MOV P1,#0FFH 
MOV C,PRE 
MOV ACC.1,C 
MOV C,ADJ 
MOV ACC.0,C 
MOV KEY_S,A 
RET 

KEY_PRE_PRO: 
INC FLAG 
MOV R4,FLAG 
CJNE R4,#1,KEY_PRE_1 
MOV R0,#0EH 
LCALL LCD_WCMD 
MOV DIS_S0,#61H 
MOV DIS_S1,#6cH 
MOV DIS_S2,#61H  
MOV DIS_S3,#72H 
MOV DIS_S4,#6dH 
MOV DIS_S5,#3aH 
MOV R1,#50H 
MOV DIS_H,HOUR_ARM 
MOV DIS_M,MIN_ARM 
MOV DIS_S,SEC_ARM 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#47H 
LCALL LCD_POS 
JMP KEY_PRE_E 
KEY_PRE_1: 
CJNE R4,#2,KEY_PRE_2 
MOV R0,#49H 
LCALL LCD_POS
JMP KEY_PRE_E 
KEY_PRE_2: 
CJNE R4,#3,KEY_PRE_3 
MOV R0,#4CH 
LCALL LCD_POS 
JMP KEY_PRE_E 
KEY_PRE_3: 
CJNE R4,#4,KEY_PRE_4 
MOV R0,#4FH 
LCALL LCD_POS 
JMP KEY_PRE_E 
KEY_PRE_4: 
CJNE R4,#5,KEY_PRE_5 
MOV DIS_S0,#74H 
MOV DIS_S1,#69H 
MOV DIS_S2,#6dH
MOV DIS_S3,#65H 
MOV DIS_S4,#3aH 
MOV DIS_S5,#20H 
MOV R1,#50H 
MOV DIS_H,HOUR 
MOV DIS_M,MIN 
MOV DIS_S,SEC 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#05H 
LCALL LCD_POS 
JMP KEY_PRE_E 

KEY_PRE_5: 
CJNE R4,#6, KEY_PRE_6 
MOV R0,#08H 
LCALL LCD_POS 
KEY_PRE_6: 
CJNE R4,#7,KEY_PRE_7 
MOV R0,#0bH 
LCALL LCD_POS 
KEY_PRE_7: 
CJNE R4,#8,KEY_PRE_8 
MOV R0,#49H 
LCALL LCD_POS 
JMP KEY_PRE_E 
KEY_PRE_8: 
CJNE R4,#9,KEY_PRE_9 
MOV R0,#4cH 
LCALL LCD_POS 
JMP KEY_PRE_E 
KEY_PRE_9: 
CJNE R4,#10,KEY_PRE_10 
MOV R0,#4fH 
LCALL LCD_POS 
JMP KEY_PRE_E 
KEY_PRE_10: 
MOV FLAG,#0 
MOV R0,#0CH 
LCALL LCD_WCMD 
MOV R0,#01H 
LCALL LCD_WCMD 
MOV IE,#8AH
SETB TR0 
KEY_PRE_E: 
RET 


KEY_ADJ_PRO: 
MOV R5,FLAG 
CJNE R5,#0,KEY_ADJ_0 
MOV C,TR1 
JNC KEY_ADJ_A 
CLR TR1 
KEY_ADJ_A: 
JMP KEY_ADJ_E 
KEY_ADJ_0: 
CJNE R5,#1,KEY_ADJ_1 
CPL ALARM 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#47H 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_1: 
CJNE R5,#2,KEY_ADJ_2
INC HOUR_ARM 
MOV A,HOUR_ARM 
CJNE A,#24,KEY_ADJ_1_1 
MOV HOUR_ARM,#0 
KEY_ADJ_1_1: 
MOV DIS_H,HOUR_ARM 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#49H 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_2: 
CJNE R5,#3,KEY_ADJ_3 
INC MIN_ARM 
MOV A,MIN_ARM 
CJNE A,#60,KEY_ADJ_2_1 
MOV MIN_ARM,#0 
KEY_ADJ_2_1: 
MOV DIS_M,MIN_ARM 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#4CH 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_3: 
CJNE R5,#4,KEY_ADJ_4 
INC SEC_ARM 
MOV A,SEC_ARM 
 
CJNE A,#60,KEY_ADJ_3_1 
MOV SEC_ARM,#0 
KEY_ADJ_3_1: 
MOV DIS_S,SEC_ARM 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#4FH 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_4: 
CJNE R5,#5,KEY_ADJ_5 
INC YEAR 
MOV A,YEAR 
CJNE A,#100,KEY_ADJ_4_1 
MOV YEAR,#0 
KEY_ADJ_4_1: 
LCALL WEEK_PRO 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#05H 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_5: 
CJNE R5,#6,KEY_ADJ_6 
INC MONTH 
MOV A,MONTH 
CJNE A,#13,KEY_ADJ_5_1 
MOV MONTH,#1 
KEY_ADJ_5_1: 
LCALL WEEK_PRO 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#08H 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_6:
 CJNE R5,#7,KEY_ADJ_7 
INC DATE 
MOV A,MONTH 
XRL A,#2 
JNZ KEY_ADJ_6_2 
MOV A,DATE 
MOV C,LEAP 
JC KEY_ADJ_6_1 
XRL A,#29 
JNZ KEY_ADJ_6_5 
JMP KEY_ADJ_6_4 
KEY_ADJ_6_1: 
XRL A,#30 
JNZ KEY_ADJ_6_5 
JMP KEY_ADJ_6_4 
KEY_ADJ_6_2: 
MOV A ,MONTH 
XRL A,#4 
JZ KEY_ADJ_6_3 
MOV A,MONTH 
XRL A,#6 
JZ KEY_ADJ_6_3 
MOV A,MONTH 
XRL A,#9 
JZ KEY_ADJ_6_3 
MOV A,MONTH 
XRL A,#11 
JZ KEY_ADJ_6_3 
MOV A,DATE 
XRL A,#32 
JNZ KEY_ADJ_6_5 
JMP KEY_ADJ_6_4 
KEY_ADJ_6_3: 
MOV A,DATE 
XRL A,#31 
JNZ KEY_ADJ_6_5 
KEY_ADJ_6_4: 
MOV DATE,#1 
KEY_ADJ_6_5:
 LCALL WEEK_PRO 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#0BH 
LCALL LCD_POS 

JMP KEY_ADJ_E 
KEY_ADJ_7: 
CJNE R5,#8,KEY_ADJ_8 
INC HOUR 
MOV A,HOUR 
CJNE A,#24,KEY_ADJ_7_1 
MOV HOUR,#0 
KEY_ADJ_7_1: 
MOV DIS_H,HOUR 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#49H 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_8: 
CJNE R5,#9,KEY_ADJ_9 
INC MIN 
MOV A,MIN 
CJNE A,#60,KEY_ADJ_8_1 
MOV MIN,#0 
KEY_ADJ_8_1: 
MOV DIS_M,MIN 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#4CH 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_9: 
CJNE R5,#10,KEY_ADJ_E 
INC SEC 
MOV A,SEC 
CJNE A,#60,KEY_ADJ_9_1 
MOV SEC,#0 
KEY_ADJ_9_1: 
MOV DIS_S,SEC 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
MOV R0,#4FH 
LCALL LCD_POS 
JMP KEY_ADJ_E 
KEY_ADJ_E: 
RET 

TIMER0: 
MOV TH0,#0DCH 
MOV TL0,#00H 
INC SEC100 
MOV A,SEC100 
CJNE A,#100,TIMER0_E 
MOV SEC100,#0 
LCALL TIME_PRO 
MOV A,SEC 
ANL A,#01 
JZ TIMER0_1 
MOV DIS_S0,#20H 
MOV DIS_S1,#20H 
MOV DIS_S2,#20H 
MOV DIS_S3,#20H 
MOV DIS_S4,#20H 
MOV DIS_S5,#20H 
SJMP TIMER0_2 
TIMER0_1: 
MOV DIS_S0,#35H 
MOV DIS_S1,#31H 
MOV DIS_S2,#43H  
MOV DIS_S3,#35H 
MOV DIS_S4,#31H 
MOV DIS_S5,#20H 
TIMER0_2: 
MOV R1,#00H 
MOV DIS_H,HOUR 
MOV DIS_M,MIN 
MOV DIS_S,SEC 
LCALL UPDATE_BUF 
LCALL DISPLAY_PRO 
TIMER0_E: RETI 
 

TIMER1: 
MOV TH1,#0FFH 
MOV TL1,#00H 
CPL SPK 
RETI 

 
TIME_PRO: INC SEC
MOV A,SEC 
CJNE A,#60,TIME_PRO_A 
MOV SEC,#0 
INC MIN 
MOV A,MIN 
CJNE A,#60,TIME_PRO_A 
MOV MIN,#0 
INC HOUR 
MOV A,HOUR 
CJNE A,#24,TIME_PRO_A 
MOV HOUR,#0 
INC DATE 
MOV A,MONTH 
XRL A,#2 
JNZ TIME_PRO_D2 
MOV A,DATE ; 
MOV C,LEAP 
JC TIME_PRO_D1 
XRL A,#29 
JNZ TIME_PRO_W 
SJMP TIME_PRO_M 
TIME_PRO_D1:
XRL A,#30 
JNZ TIME_PRO_W 
SJMP TIME_PRO_M 
TIME_PRO_D2:
MOV A,MONTH 
XRL A,#4 
JZ TIME_PRO_D3 
MOV A,MONTH 
XRL A,#6 
JZ TIME_PRO_D3 
MOV A,MONTH 
XRL A,#9 
JZ TIME_PRO_D3 
MOV A,MONTH 
XRL A,#11 
JZ TIME_PRO_D3 
MOV A,DATE 
XRL A,#32 
JNZ TIME_PRO_W 
SJMP TIME_PRO_M 
TIME_PRO_D3:MOV A,DATE 
XRL A,#31 
JNZ TIME_PRO_W 
TIME_PRO_M: 
MOV DATE,#1 
INC MONTH 
MOV A,MONTH 
CJNE A,#13,TIME_PRO_W 
MOV MONTH,#1 
INC YEAR 
MOV A,YEAR 
CJNE A,#100,TIME_PRO_W 
MOV YEAR,#0 
TIME_PRO_W: 
LCALL WEEK_PRO 
TIME_PRO_A: 
JNB ALARM,TIME_PRO_E 
MOV 	A,SEC 
CJNE 	A,SEC_ARM,TIME_PRO_E 	
MOV 	A,MIN 	
CJNE 	A,MIN_ARM,TIME_PRO_E 	


MOV 	A,HOUR 
CJNE 	A,HOUR_ARM,TIME_PRO_E 	
SETB TR1
TIME_PRO_E: 		 
RET 			


WEEK_PRO: 
MOV A,MONTH
XRL A,#1 
JZ WEEK_PRO_1 
MOV A,MONTH 
XRL A,#2 
JZ WEEK_PRO_1 
SJMP WEEK_PRO_2 
WEEK_PRO_1: 
LCALL LEAP_PRO 
MOV C,LEAP 
JNC WEEK_PRO_2 
MOV R3,#5 
SJMP WEEK_PRO_3 
WEEK_PRO_2: 
MOV R3,#6 
WEEK_PRO_3: 
MOV A,YEAR 
MOV B,#4 
DIV AB 
ADD A,R3 
MOV R3,A 
MOV A,YEAR 
ADD A,R3 
MOV R3,A 
MOV DPTR,#MONTH_TAB 
MOV A,MONTH 
MOVC A,@A+DPTR 
ADD A,R3 
MOV R3,A 
MOV A,DATE 
ADD A, R3 
MOV B,#7 
DIV AB 
MOV WEEK,B 
RET 


LEAP_PRO: 
MOV A,YEAR 
MOV B,#4 
DIV AB 
MOV A,B 
JZ LEAP_PRO_1 
CLR LEAP  
LJMP LEAP_PRO_E 
LEAP_PRO_1: 
SETB LEAP 
LEAP_PRO_E: 
RET 



UPDATE_BUF: 
MOV DIS_BUF_U0,R1 
MOV DIS_BUF_U1,#20H 
MOV DIS_BUF_U2,#32H 
MOV DIS_BUF_U3,#30H 
MOV A,YEAR 

MOV B,#10 
DIV AB 
ADD A,#48 
MOV DIS_BUF_U4,A 
MOV A,B 
ADD A,#48 
MOV DIS_BUF_U5,A 
MOV DIS_BUF_U6,#2DH 
MOV B,#10 
DIV AB 
ADD A,#48 
MOV DIS_BUF_U7,A 
MOV A,B 
ADD A,#48 
MOV DIS_BUF_U8,A 
MOV DIS_BUF_U9,#2DH 
MOV B,#10 
DIV AB 
ADD A,#48 
MOV DIS_BUF_U10,A 
MOV A,B 
ADD A,#48 
MOV DIS_BUF_U11,A 
MOV DIS_BUF_U12,#20H
MOV B,WEEK
MOV A,#3 
MUL AB 
MOV B,A 
MOV DPTR,#WEEK_TAB 
MOVC A,@A+DPTR 
MOV DIS_BUF_U13,A 
MOV A,B 
INC A 
MOVC A,@A+DPTR 
MOV DIS_BUF_U14,A 
MOV A,B 
INC A 
INC A 
MOVC A,@A+DPTR 
MOV DIS_BUF_U15,A 
MOV A,DIS_S0 
MOV DIS_BUF_L0,A 
MOV A,DIS_S1 
MOV DIS_BUF_L1,A 
MOV A,DIS_S2 
MOV DIS_BUF_L2,A 
MOV A,DIS_S3 
MOV DIS_BUF_L3,A 
MOV A,DIS_S4 
MOV DIS_BUF_L4,A 
MOV A,DIS_S5 
MOV DIS_BUF_L5,A 
MOV DIS_BUF_L6,#20H 
MOV C,ALARM 
JC UPDATE_BUF_1 
MOV DIS_BUF_L7,#20H 
SJMP UPDATE_BUF_2 
UPDATE_BUF_1: 
MOV DIS_BUF_L7,#01H 
UPDATE_BUF_2: 
MOV A,DIS_H 
MOV B,#10 
DIV AB 
ADD A,#48 
MOV DIS_BUF_L8,A 
MOV A,B 
ADD A,#48 
MOV DIS_BUF_L9,A 

MOV DIS_BUF_L10,#3AH
MOV A,DIS_M 
MOV B,#10 
DIV AB 
ADD A,#48 
MOV DIS_BUF_L11,A 
MOV A,B 
ADD A,#48 
MOV DIS_BUF_L12,A 
MOV DIS_BUF_L13,#3AH
MOV A,DIS_S 
MOV B,#10 
DIV AB 
ADD A,#48 
MOV DIS_BUF_L14,A 
MOV A,B  
ADD A,#48 
MOV DIS_BUF_L15,A 
RET 


DISPLAY_PRO: 
MOV R0,#00H 
LCALL LCD_POS 
MOV R0,DIS_BUF_U0 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U1 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U2 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U3 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U4 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U5 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U6 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U7 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U8 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U9 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U10 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U11 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U12 
LCALL LCD_WDAT
MOV R0,DIS_BUF_U13 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U14 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_U15 
LCALL LCD_WDAT 
MOV R0,#40H 
LCALL LCD_POS 
MOV R0,DIS_BUF_L0 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L1 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L2 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L3 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L4 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L5 

LCALL LCD_WDAT 
MOV R0,DIS_BUF_L6 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L7 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L8 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L9 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L10 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L11 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L12 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L13 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L14 
LCALL LCD_WDAT 
MOV R0,DIS_BUF_L15 
LCALL LCD_WDAT 
RET 



BF_TEST: 
PUSH ACC 
CLR RS 
SETB RW 
SETB EP 
NOP 
NOP 
NOP 
NOP 
MOV P0,#0FFH 
WT_BF: 
NOP 
JB P0.7,WT_BF 
CLR EP 
POP ACC 
RET 


LCD_WCMD: 
LCALL BF_TEST 
CLR RS 
CLR RW 
CLR EP 
NOP 
NOP 
MOV P0,R0 
NOP 
NOP 
NOP 
NOP 
SETB EP 
NOP 
NOP 
NOP 
NOP 
CLR EP 
RET 

LCD_WDAT: 
LCALL BF_TEST 
SETB RS 
CLR RW 
CLR EP 
NOP 
NOP 
MOV P0,R0 
NOP 
NOP 
NOP 
NOP 
SETB EP 
NOP 
NOP 
NOP 
NOP 
CLR EP 
RET 


LCD_POS:
MOV A,R0 
ORL A,#80H 
MOV R0,A 
LCALL LCD_WCMD 
RET 

DELAY_5ms: 	
MOV 	R7,#25 
DELAY1: 	
MOV 	R6,#100 
DELAY2: 	
DJNZ 	R6,DELAY2 

DJNZ R7,DELAY1 
RET 

MONTH_TAB: DB 0 
DB 0 
DB 3 
DB 3 
DB 6 
DB 1 
DB 4 
DB 6 
DB 2 
DB 5 
DB 0 
DB 3 
DB 5 

WEEK_TAB: 
DB 'S','U','N' 
DB 'M','O','N' 
DB 'T','U','E' 
DB 'W','E','D' 
DB 'T','H','U' 
DB 'F','R','I' 
DB 'S','A','T' 
END 

⌨️ 快捷键说明

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