📄 rmbscr.asm
字号:
cjne a,#00h,modista9
ljmp exitint1
modista9: mov a,adjtime
cjne a,#0ffh,modi_data6
mov a,#4
lcall timemodi
ljmp exitint1
modi_data6: mov a,#4
lcall common0_9
ljmp exitint1
key5: mov a,modify
cjne a,#00h,modistaa
ljmp exitint1
modistaa: mov a,adjtime
cjne a,#0ffh,modi_data7
mov a,#5
lcall timemodi
ljmp exitint1
modi_data7: mov a,#5
lcall common0_9
ljmp exitint1
key6: mov a,modify
cjne a,#00h,modistab
ljmp exitint1
modistab: mov a,adjtime
cjne a,#0ffh,modi_data8
mov a,#6
lcall timemodi
ljmp exitint1
modi_data8: mov a,#6
lcall common0_9
ljmp exitint1
key7: mov a,modify
cjne a,#00h,modistac
ljmp exitint1
modistac: mov a,adjtime
cjne a,#0ffh,modi_data9
mov a,#7
lcall timemodi
ljmp exitint1
modi_data9: mov a,#7
lcall common0_9
ljmp exitint1
key8: mov a,modify
cjne a,#00h,modistad
ljmp exitint1
modistad: mov a,adjtime
cjne a,#0ffh,modi_dataa
mov a,#8
lcall timemodi
ljmp exitint1
modi_dataa: mov a,#8
lcall common0_9
ljmp exitint1
key9: mov a,modify
cjne a,#00h,modistae
ljmp exitint1
modistae: mov a,adjtime
cjne a,#0ffh,modi_datab
mov a,#9
lcall timemodi
ljmp exitint1
modi_datab: mov a,#9
lcall common0_9
ljmp exitint1
keydot: mov a,modify
cjne a,#00h,inhibdot
ljmp exitint1
inhibdot: mov a,adjtime
cjne a,#0ffh,modistaf
ljmp exitint1
modistaf: mov a,numchar
cjne a,#0,modidot
ljmp exitint1
modidot: mov a,data0
anl a,#11111110b
mov data0,a
ljmp exitint1
keydark: mov a,modify
cjne a,#00h,inhibdark
ljmp exitint1
inhibdark: mov a,adjtime
cjne a,#0ffh,modista10
ljmp exitint1
modista10: mov a,#0ah
lcall common0_9
ljmp exitint1
keystart: mov a,modify
cjne a,#00h,keyrst
setb tr0 ;开T0中断
mov th0,#94h
mov tl0,#94h
mov t0times,#0
mov modify,#0ffh ;遥控修改标志: 00h--正常显示状态, 0ffh--修改状态
mov flashmark,#00h ;显示闪烁标志: 00h--亮, 0ffh--暗
mov modiline,#0 ;修改数据所在行数--0行
mov modicolu,#0 ;修改数据所在列数--0列
mov adjtime,#00h
mov int1times,#0 ;初始化INT1中断次数
mov numchar,#0 ;当前修改字符在块中的顺序号置0
mov data0,#01h
mov data1,#01h
mov data2,#01h
mov data3,#01h
mov data4,#01h
ljmp exitint1
keyrst: mov a,numchar
cjne a,#0,mustsaver
ljmp nosaver
mustsaver: lcall savedata
nosaver: clr tr0
mov modify,#00h ;遥控修改标志: 00h--正常显示状态, 0ffh--修改状态
mov flashmark,#00h ;显示闪烁标志: 00h--亮, 0ffh--暗
mov modiline,#0 ;修改数据所在行数--0行
mov modicolu,#0 ;修改数据所在列数--0列
mov t0times,#0 ;初始化T0中断次数
mov int1times,#0 ;初始化INT1中断次数
mov numchar,#0 ;当前修改字符在块中的顺序号置0
mov data0,#01h
mov data1,#01h
mov data2,#01h
mov data3,#01h
mov data4,#01h
ljmp exitint1
keylightinc: mov a,modify
cjne a,#00h,isincl
ljmp exitint1
isincl: mov a,leddark
cjne a,#0,norinc
ljmp judlight
norinc: clr c
subb a,#25
mov leddark,a
judlight: mov a,ledlight
cjne a,#190,inclight
ljmp exitint1
inclight: add a,#20
mov ledlight,a
ljmp exitint1
keylightdec: mov a,modify
cjne a,#00h,isdecl
ljmp exitint1
isdecl: mov a,leddark
cjne a,#200,incdark
ljmp judlight1
incdark: add a,#25
mov leddark,a
judlight1: mov a,ledlight
cjne a,#30,declight
ljmp exitint1
declight: clr c
subb a,#20
mov ledlight,a
ljmp exitint1
keyonoff: mov a,switch
cjne a,#00h,is_off
mov switch,#0ffh
mov a,numchar
cjne a,#0,mustsavenf
ljmp restart
mustsavenf: lcall savedata
nosavenf: ljmp restart
is_off: mov switch,#00h
restart: mov modify,#00h ;遥控修改标志: 00h--正常显示状态, 0ffh--修改状态
mov flashmark,#00h ;显示闪烁标志: 00h--亮, 0ffh--暗
mov modiline,#0 ;修改数据所在行数--0行
mov modicolu,#0 ;修改数据所在列数--0列
mov adjtime,#00h
mov t0times,#0 ;初始化T0中断次数
mov int1times,#0 ;初始化INT1中断次数
mov numchar,#0 ;当前修改字符在块中的顺序号置0
mov data0,#01h
mov data1,#01h
mov data2,#01h
mov data3,#01h
mov data4,#01h
ljmp exitint1
keyadjtime: mov a,modify
cjne a,#00h,isupdatasta
ljmp exitint1
isupdatasta: mov a,adjtime
cjne a,#00h,endtime
mov adjtime,#0ffh
mov modiline,#0 ;修改数据所在行数--0行
mov modicolu,#0 ;修改数据所在列数--0列
mov numchar,#0 ;当前修改字符在块中的顺序号置0
ljmp exitint1
endtime: mov adjtime,#00h
mov modiline,#0 ;修改数据所在行数--0行
mov modicolu,#0 ;修改数据所在列数--0列
mov numchar,#0 ;当前修改字符在块中的顺序号置0
mov dptr,#8002h ;WRITE TIME
mov a,minute
movx @dptr,a
mov dptr,#8004h
mov a,hour
movx @dptr,a
mov a,week
cjne a,#07h,no_sunday1
ljmp weekok
no_sunday1: jc weekok
mov a,#07h
weekok: mov dptr,#8006h
movx @dptr,a
mov dptr,#8007h
mov a,day
movx @dptr,a
mov dptr,#8008h
mov a,month
movx @dptr,a
mov dptr,#8009h
mov a,year
movx @dptr,a
lcall readtime
lcall disptime
ljmp exitint1
exitint1: clr tr1
mov int1times,#0
quitint1: pop b
pop dpl
pop dph
pop psw
pop acc
reti
;** COMMON0_9: 处理键0--9公共子程序 **********************************
;** 入口参数: a--按键所对应的数值; numchar--当前修改字符在块中的顺序号
common0_9: mov dptr,#numsegtab
movc a,@a+dptr
mov tmpd,a
mov a,numchar
cjne a,#0,modimid
mov data0,#01h
mov data1,#01h
mov data2,#01h
mov data3,#01h
mov data4,#01h
modimid: mov data4,data3
mov data3,data2
mov data2,data1
mov data1,data0
mov data0,tmpd
mov a,numchar
cjne a,#4,no_lastchar
lcall savedata
mov numchar,#0
incmodicolu: mov a,modicolu
cjne a,#0,if_colu1
mov a,modiline
cjne a,#10,incline
mov modiline,#0
mov modicolu,#1
ret
if_colu1: cjne a,#1,is_column2
mov a,modiline
cjne a,#6,incline
mov modiline,#0
mov modicolu,#2
ret
is_column2: mov a,modiline
cjne a,#9,incline
mov modiline,#0
mov modicolu,#0
ret
incline: inc modiline
ret
no_lastchar: inc numchar ;字符序号加1
ret
;** save modified data ****************************
savedata: mov a,modiline ;求修改字符所在的2864单元
mov b,#15 ;计算公式: (modiline*15+modicolu*5+6000h)
mul ab
mov tmpe,a
mov a,modicolu
mov b,#5
mul ab
add a,tmpe
mov dpl,a
mov dph,#60h
mov r1,#5
mov r0,#data4
savemodi: mov a,@r0
movx @dptr,a
lcall delay
inc r0
inc dptr
djnz r1,savemodi
ret
;** MODIFY TIME ***********************************************
timemodi: mov tmpd,a
mov a,modicolu
cjne a,#3,no_week
mov week,tmpd
inc modicolu
ret
no_week: mov a,numchar
cjne a,#0,overtime
inc numchar
mov a,modicolu
if_year: cjne a,#0,if_month
mov a,tmpd
swap a
anl a,#11110000b
mov tmpd,a
anl year,#00001111b
add a,year
mov year,a
ret
if_month: cjne a,#1,if_day
mov a,tmpd
swap a
anl a,#11110000b
mov tmpd,a
anl month,#00001111b
add a,month
mov month,a
ret
if_day: cjne a,#2,if_hour
mov a,tmpd
swap a
anl a,#11110000b
mov tmpd,a
anl day,#00001111b
add a,day
mov day,a
ret
if_hour: cjne a,#4,is_minu
mov a,tmpd
swap a
anl a,#11110000b
mov tmpd,a
anl hour,#00001111b
add a,hour
mov hour,a
ret
is_minu: mov a,tmpd
swap a
anl a,#11110000b
mov tmpd,a
anl minute,#00001111b
add a,minute
mov minute,a
ret
overtime: mov numchar,#0
mov a,modicolu
cjne a,#0,if_month0
anl year,#11110000b
mov a,tmpd
add a,year
mov year,a
inc modicolu
ret
if_month0: cjne a,#1,if_day1
anl month,#11110000b
mov a,tmpd
add a,month
mov month,a
inc modicolu
ret
if_day1: cjne a,#2,if_hour1
anl day,#11110000b
mov a,tmpd
add a,day
mov day,a
inc modicolu
ret
if_hour1: cjne a,#4,is_minu1
anl hour,#11110000b
mov a,tmpd
add a,hour
mov hour,a
inc modicolu
ret
is_minu1: mov a,tmpd
anl minute,#11110000b
add a,minute
mov minute,a
mov modicolu,#0
ret
;** T1 interupt ********************
timer1: clr tr1
mov int1times,#0
reti
delay: mov r7,#15
loop: mov r6,#255
djnz r6,$
djnz r7,loop
ret
numsegtab: db 0dfh,045h,0bdh,07dh,067h ;0--4显示码
db 07bh,0fbh,55h,0ffh,07fh ;5--9显示码
db 21h ;dark
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -