📄 lcdandds1302.txt
字号:
LPC2378开发板 SEC DATA 30H ;秒
MIN DATA 31H ;分
HR DATA 32H ;时
DATE DATA 33H ;日
MONTH DATA 34H ;月
DAY DATA 35H ;星期
YEAR DATA 36H ;年
COMMAND EQU 40H
DATA1 EQU 41H
DATA2 EQU 42H
DATA3 EQU 43H
RS BIT P3.4
RW BIT P3.5
E BIT P3.6
FUWEI BIT P3.7
;PSB CONECT VCC
SCLK BIT P0.7
IO BIT P0.6
RST BIT P0.5
PSW5 BIT 7FH ;标志位 1——读、0——写
;
ORG 0000H
SJMP START
;...........初始化..................
START: LCALL DELAY
MOV SP,#70H
CLR RST
LCALL INIT ;启动DS1302
LCALL INTX ;液晶初始化
MOV SEC,#11H ;设置DS1302初值
MOV MIN,#50H
MOV HR,#07H
MOV DATE,#19H
MOV MONTH,#05H
MOV DAY,#04H
MOV YEAR,#05H
LCALL SZ1302 ;写DS1302
;
RT: MOV R0,#SEC
MOV R7,#7
SETB PSW5
LCALL RWRTC ;读DS1302
;
ZC: LCALL CHANGE
;
MOV COMMAND,#01H ;清显示
LCALL PR1
;
MOV COMMAND,#90H
LCALL PR1
LCALL DISP
LCALL DELAY
JMP RT
;.....................转换子程序.................
CHANGE: MOV R1,#50H
MOV R0,#YEAR
MOV R2,#7
LOOP3: MOV A,@R0
MOV B,#10H
DIV AB
MOV @R1,A
INC R1
MOV A,B
MOV @R1,A
INC R1
DEC R0
DJNZ R2,LOOP3
RET
;......................设置1302.....................
SZ1302: MOV R1,#14
MOV R0,#50H
MOV @R0,#00H
INC R0
MOV R0,#SEC
MOV R7,#7
CLR PSW5
CALL RWRTC
RET
;.....................写/读子程序......................
RWRTC: MOV B,#81H
JB PSW5,RWRTC1
MOV B,#80H
RWRTC1: MOV R6,#8
MOV A,B
CLR SCLK
SETB RST
RWRTC2: CLR SCLK
RRC A
MOV IO,C
SETB SCLK
DJNZ R6,RWRTC2
MOV R6,#8
JNB PSW5,RWRTC4
RWRTC3: CLR SCLK
MOV C,IO
RRC A
SETB SCLK
DJNZ R6,RWRTC3
CLR RST
CLR SCLK
MOV @R0,A
SJMP RWRTC6
RWRTC4: MOV A,@R0
RWRTC5: CLR SCLK
RRC A
MOV IO,C
SETB SCLK
DJNZ R6,RWRTC5
CLR RST
CLR SCLK
RWRTC6: INC R0
MOV A,B
ADD A,#02H
MOV B,A
DJNZ R7,RWRTC1
RET
;....................启动子程序........................
INIT: MOV SEC,#8EH
MOV MIN,#00H
MOV R0,#SEC
LCALL WRRTC
MOV SEC,#80H
MOV MIN,#00H
MOV R0,#SEC
LCALL WRRTC
RET
WRRTC: CLR SCLK
SETB RST
MOV R7,#2
WRRTC1: MOV R6,#8
MOV A,@R0
CLR C
WRRTC2: CLR SCLK
RRC A
MOV IO,C
SETB SCLK
DJNZ R6,WRRTC2
INC R0
DJNZ R7,WRRTC1
CLR RST
CLR SCLK
RET
;
;.........液晶初始化............
INTX: CLR FUWEI ;液晶复位
LCALL DELAY
SETB FUWEI
MOV COMMAND,#30H ;功能设置 8位数据,基本指令
LCALL PR1
MOV COMMAND,#0CH ;显示状态ON,游标OFF,反白OFF
LCALL PR1
MOV COMMAND,#01H ;清除显示
LCALL PR1
MOV COMMAND,#02H ;地址归位
LCALL PR1
MOV COMMAND,#80H ;设置DDRAM地址
LCALL PR1
LCALL DELAY
RET
;
;*********写指令代码************************
PR1:
PUSH ACC
CLR RS
SETB RW
PR11: MOV P1,#0FFH
SETB E
MOV A,P1
CLR E
JB ACC.7,PR11
CLR RW
MOV P1,COMMAND
SETB E
CLR E
POP ACC
RET
;*********写显示数据************************
PR2:
PUSH ACC
CLR RS
SETB RW
PR21:MOV P1,#0FFH
SETB E
MOV A,P1
CLR E
JB ACC.7,PR21
SETB RS
CLR RW
MOV P1,DATA1
SETB E
CLR E
POP ACC
RET
;*********读显示数据************************
PR3:
PUSH ACC
CLR RS
SETB RW
PR31:MOV P1,#0FFH
SETB E
MOV A,P1
CLR E
JB ACC.7,PR31
SETB RS
SETB RW
MOV P1,#0FFH
SETB E
MOV COMMAND,P1
CLR E
POP ACC
RET
;
DISP: MOV R2,#2
MOV R3,#3
MOV R1,#58H
LOOP5: MOV DATA1,#0A3H
LCALL PR2
MOV A,@R1
ORL A,#0B0H
MOV DATA1,A
LCALL PR2
INC R1
DJNZ R2,LOOP5
;
CJNE R3,#1,OUT1
JMP OUT
OUT1: MOV DATA1,#0A1H
LCALL PR2
MOV DATA1,#0C3H
LCALL PR2
MOV R2,#2
DJNZ R3,LOOP5
OUT: RET
;
DELAY: MOV 10H,#25
DE0: MOV 11H,#20
DE1: MOV 12H,#248
DE: DJNZ 12H,DE
DJNZ 11H,DE1
DJNZ 10H,DE0
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -