📄 wannianli.txt
字号:
sec11 equ 10h
sec12 equ 11h
min11 equ 12h
min12 equ 13h
hour11 equ 14h
hour12 equ 15h
day11 equ 16h
day12 equ 17h
month11 equ 18h
month12 equ 19h
year11 equ 1ah
year12 equ 1bh
year13 equ 1ch
year14 equ 1dh
TEMP EQU 1EH
N_DAY EQU 1FH
shu2 equ 20h
adress2 equ 21h
ADRESS1 EQU 23H
SHU1 EQU 24H
SHU3 EQU 25H
TEMP11 EQU 26H
TEMP12 EQU 27H
N_DAY11 EQU 28H
N_DAY12 EQU 29H
N_MONTH11 EQU 2AH
N_MONTH12 EQU 2BH
N_MONTH EQU 2CH
huan equ 2dh
SCLK bit 90h
io bit 91h
RST bit 92h
sec data 60h
min data 61h
hour data 62h
date data 63h
month data 64h
day data 65h
year1 DATA 66H
year2 data 67h
int_min equ 68h
int_hour equ 69h
int_date equ 6ah
int_month equ 6bh
int_year1 equ 6ch
int_day equ 6dh
start_year EQU 01; 定义查询表起始年份,01--199 表示1901-2099 年
;以下三单元为需转换的公历日期是子程序的入口数据
time_year DATA 66h
time_month DATA 64h ;BIT7 表示世纪,为1 表示19 世纪,为0 表示20 世纪
time_date DATA 63h
;以下三单元存转换后农历日期与入口单元重叠,如要保留入口信息,请重定义出口地址
CONvert_yeAr DATA 33h
CONvert_mONth DATA 34h ;BIT7 为1 表示闰月
CONvert_dAte DATA 35h
temp_Byte1 DATA 37h
temp_Byte2 DATA 38h
temp_Byte3 DATA 39h
temp_Byte4 DATA 3Ah
temp_Byte5 DATA 3Bh
time_week DATA 65h ;星期天出口
;以下为公历转农历子程序
[hide]
org 0000h
mov p0,#0ffh
mov 6eh,#00h
mov int_min,#59h
mov int_hour,#23h
mov int_date,#12h
mov int_month,#11h
mov int_year1,#04h
mov int_day,#07h
mov temp,#00h
mov year2,#20h
MOV SP,#74H
;DS1302读写程序
;**************
lcall init
start: mov 70h,hour
mov 71h,min
;mov day,time_week
mov r0,#sec
mov r7,#7
setb psw.5
lcall rwrtc
lcall kEY
LCALL CONvert
lcall GetWeek
LCALL TRUN
;LCALL DINGSHI
LCALL DISP1
LCALL DISP3
ljmp start
rwrtc: mov b,#10000001b
jb psw.5,rwrtc1
mov b,#10000000b
rwrtc1:clr sclk
nop
setb rst
mov r6,#8
mov a,b
rwrtc2:clr sclk
rrc a
mov io,c
nop
setb sclk
djnz r6,rwrtc2
mov r6,#8
jnb psw.5,rwrtc4
rwrtc3:clr sclk
nop
mov c,io
rrc a
setb sclk
djnz r6,rwrtc3
mov @r0,a
sjmp rwrtc6
rwrtc4:mov a,@r0
rwrtc5:clr sclk
rrc a
mov io,c
nop
setb sclk
djnz r6,rwrtc5
rwrtc6:inc r0
mov a,b
add a,#02h
mov b,a
clr rst
nop
clr sclk
djnz r7,rwrtc1
RET
WRRTC: CLR SCLK
NOP
SETB RST
NOP
NOP
MOV R7,#2
WRRTC1: MOV R6,#8
MOV A,@R0
CLR C
wrrtc2: CLR SCLK
RRC A
MOV IO,C
nop
SETB SCLK
DJNZ R6,WRRTC2
INC R0
djnz r7,wrrtc1
clr rst
nop
clr sclk
ret
init:
CLR SCLK
CLR RST
MOV SEC,#10001110b
MOV MIN,#00000000b
MOV R0,#SEC
LCALL wrrtc
MOV SEC,#10010000b
MOV MIN,#10100101b
MOV R0,#SEC
LCALL wrrtc
MOV R0,#SEC
MOV SEC,#10000000b
MOV MIN,#00000000b
lcall writer_f
lcall writer_sh
lcall writer_date
lcall writer_yue
lcall writer_nian
ret
writer_f:LCALL wrrtc
mov r0,#sec
mov sec,#82h
mov min,int_min
lcall wrrtc
ret
writer_sh:mov sec,#10000100b
mov min,int_hour
mov r0,#sec
lcall wrrtc
ret
writer_yue:mov sec,#88h
mov min,int_month
mov r0,#sec
lcall wrrtc
ret
writer_nian:mov sec,#8ch
mov min,int_year1
mov r0,#sec
lcall wrrtc
ret
writer_date:mov sec,#86h
mov min,int_date
mov r0,#sec
lcall wrrtc
RET
;********0***************
;BCD转换
TRUN:
MOV A,SEC
MOV B,#10H
DIV AB
MOV SEC12,A
MOV SEC11,B
MOV A,MIN
MOV B,#10H
DIV AB
MOV MIN12,A
MOV MIN11,B
MOV A,HOUR
MOV B,#10H
DIV AB
MOV HOUR12,A
MOV HOUR11,B
MOV A,date
MOV B,#10H
DIV AB
MOV DAY12,a
MOV DAY11,b
MOV A,MONTH
MOV B,#10H
DIV AB
MOV MONTH12,A
MOV MONTH11,B
MOV A,year1
MOV B,#10H
DIV AB
MOV YEAR12,A
MOV YEAR11,B
MOV A,YEAr2
MOV B,#10H
DIV AB
MOV YEAR14,A
MOV YEAR13,b
MOV A,35h
MOV B,#10H
DIV AB
MOV N_DAY12,A
MOV N_day11,B
MOV A,34h
MOV B,#10H
DIV AB
MOV N_MONTH12,A
MOV N_MONTH11,B
MOV A,TEMP
MOV B,#10H
DIV AB
MOV TEMP12,A
MOV TEMP11,B
RET
;延时程序
;********************
DEALY:MOV R5,#01h
DEL1: MOV R2,#07dH
DEL2:NOP
NOP
DJNZ R2,DEL2
DJNZ R5,DEL1
RET
;显示程序
;***********************
DENG:MOV P2,#0FFH
MOV A,#00H
MOV SBUF,A
JNB TI,$
CLR TI
MOV P2,ADRESS2
MOV A,SHU2
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#00H
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DEALY
MOV P2,#0FFH
RET
DENG1:MOV P2,#0FFH
MOV A,SHU1
MOV SBUF,A
JNB TI,$
CLR TI
MOV P2,#0FFH
mov a,#00h
MOV SBUF,a
JNB TI,$
CLR TI
MOV P2,ADRESS1
MOV A,SHU3
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DEALY
RET
DISP1:
MOV R3,#0bFH
MOV R4,#06H
MOV R0,#10H
DISP2:MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SHU2,A
inc r0
MOV A,R3
Rr A
MOV R3,A
MOV ADRESS2,A
LCALL DENG
DJNZ R4,DISP2
mov a,day
mov dptr,#xing
movc a,@a+dptr
mov shu2,a
mov adress2,#0bfh
lcall deng
RET
DISP3:MOV R3,#0FEH
MOV R4,#08H
MOV R1,#24H
DISP4:MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SHU3,A
INC r0
MOV A,@R1
MOVC A,@A+DPTR
MOV SHU1,A
INC R1
MOV A,R3
RR A
MOV R3,A
MOV ADRESS1,A
LCALL DENG1
DJNZ R4,DISP4
RET
;********************************
;键盘程序
;********************************
key:jb p1.3,s2
s1: lcall disp1
lcall disp3
jnb p1.3,s1
mov a,6eh
inc a
mov 6eh,a
dianliang1:cjne a,#01h,dianliang2
mov p0,#0feh
ret
dianliang2:cjne a,#02h,dianliang3
mov p0,#0fch
ret
dianliang3:cjne a,#03h,dianliang4
mov p0,#0f8h
ret
dianliang4:cjne a,#04h,dianliang5
mov p0,#0f0h
ret
dianliang5:cjne a,#05h,mie
mov p0,#0e0h
ret
mie:cjne a,#06h,out
mov 06eh,#00h
mov p0,#0ffh
ret
out: ret
s2:jb p3.3,s3
shang:acall disp1
acall disp3
jnb p3.3,shang
mov a,temp
inc a
mov temp,a
cjne a,#01h,out
mov a,6eh
cjne a,#05h,out
mov r0,#sec
mov sec,#0c0h
mov min,70h
lcall wrrtc
mov r0,#sec
mov sec,#0c2h
mov min,71h
lcall wrrtc
ret
s3: jb p3.2,out
MOV R7,#05H
xian: MOV 6FH,R7
lcall disp1
lcall disp3
MOV R7,6FH
DJNZ R7,XIAN
jia: mov a,6eh
cjne a,#01h,pan2
LJMP jia_SH
pan2:cjne a,#02h,pan3
LJMP jia_F
pan3:cjne a,#03h,pan4
LJMP jia_nian
pan4:cjne a,#04h,pan5
ljmp jia_yue
pan5:cjne a,#05h,out
ljmp jia_ri
ret
jia_f:mov a,int_min
inc a
da a
mov int_min,a
cjne a,#60h,diao_jf
mov int_min,#00h
diao_jf:
lcall writer_f
lcall chxie_ds1302
ret
jia_sh:
mov a,int_hour
inc a
da a
mov int_hour,a
cjne a,#24h,diao_jsh
mov int_hour,#00h
diao_jsh:
lcall writer_sh
lcall chxie_ds1302
ret
jia_ri:mov a,int_date
inc a
da a
mov int_date,a
MOV A,MONTH
clr c
mov R7,#0f8h
addc a,R7
jc hou
qian: mov a,month
mov b,#02h
div ab
mov a,b
rrc a
jc dayue
xiaoyue:mov a,int_date
cjne a,#31h,diao_jri
mov int_date,#01h
sjmp diao_jri
dayue:mov a,int_date
cjne a,#32h,diao_jri
mov int_date,#01h
sjmp diao_jri
hou: mov a,month
mov b,#02h
div ab
mov a,b
rrc a
jc xiaoyue
sjmp dayue
diao_jri:
lcall writer_date
lcall chxie_ds1302
ret
jia_yue:mov a,int_month
inc a
da a
mov int_month,a
cjne a,#13h,diao_jyue
mov int_month,#01h
diao_jyue:
lcall writer_yue
lcall chxie_ds1302
ret
jia_nian:mov a,int_year1
inc a
da a
mov int_year1,a
cjne a,#99h,diao_jnian
mov int_year1,#00h
diao_jnian:
lcall writer_nian
lcall chxie_ds1302
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -