📄 vonbo.java
字号:
mov r1,#t_02
jmp nk3_2
nk3_5: mov r1,#t_03
nk3_2: ret
;***********************子程序结束*****************************
;----------------------key_4按下(子程序八)-------------------
key_4: jb b.6,nk4_1 ;向上/修改打铃点
mov t_01,#00H ;时间修改,增加修改上增
mov t_02,#01H
mov t_03,#0aH
setb b.3
jmp nk4_2
nk4_1: jb b.4,nk4_5 ;删除打铃点
jnb b.3,nk4_8 ;修改打铃点
cjne r1,#t_01,nk4_8
jmp nk4_5
nk4_8: cjne r1,#t_03,nk4_3
cjne @r1,#23,nk4_4
mov @r1,#00
jmp nk4_2
nk4_3: cjne @r1,#59,nk4_4
mov @r1,#00H
nk4_4: jc nk4_7
mov @R1,#00H
jmp nk4_2
nk4_7: inc @r1
jmp nk4_2
nk4_5: mov r1,#t_01
mov a,@r1
jz nk4_2
cjne a,rall,nk4_6
mov @r1,#01
mov a,@R1
dec a
rl a
add a,#80H
mov r0,a
mov t_03,@r0
inc r0
mov t_02,@r0
mov t_01,@r1
jmp nk4_2
nk4_6: inc @r1
rl a
add a,#80H
mov r0,a
mov t_03,@r0
inc r0
mov t_02,@r0
mov t_01,@r1
nk4_2: ret
;***********************子程序结束*****************************
;----------------------key_5按下(子程序九)-------------------
key_5: ;向下/删除打铃点
jb b.6,nk5_1
mov t_03,#0aH
mov t_02,#00H
mov t_01,#0aH
setb b.4
jmp nk5_4
nk5_1: jb b.4,nk5_5 ;删除打铃点
jnb b.3,nk5_7
cjne r1,#t_01,nk5_7
jmp nk5_5
nk5_7: cjne r1,#t_03,nk5_2
cjne @r1,#00,nk5_3
mov @r1,#24
jmp nk5_3
nk5_2: cjne @r1,#00,nk5_3
mov @r1,#60
nk5_3: dec @r1
jmp nk5_4
nk5_5: mov a,rall
jz nk5_4
mov r1,#t_01
mov a,@r1
cjne a,#1,nk5_6
mov @r1,rall
mov a,@R1
dec a
rl a
add a,#80H
mov r0,a
mov t_03,@r0
inc r0
mov t_02,@r0
mov t_01,@r1
jmp nk5_4
nk5_6: dec @r1
dec a
dec a
rl a
add a,#80H
mov r0,a
mov t_03,@r0
inc r0
mov t_02,@r0
mov t_01,@r1
nk5_4: ret
;***********************子程序结束*****************************
;----------------------key_6按下(子程序十)-------------------
key_6: jb b.6,nk6_1 ;向右
jmp nk6_3
nk6_1: jb b.4,nk6_3
jb b.2,nk6_4
;jb b.3,nk6_4
cjne r1,#t_01,nk6_2
mov r1,#t_03
jmp nk6_3
nk6_2: dec r1
jmp nk6_3
nk6_4: cjne r1,#t_03,nk6_5
mov r1,#t_02
jmp nk6_3
nk6_5: mov r1,#t_03
nk6_3: ret
;***********************子程序结束*****************************
;---------------------key_7按下(子程序十一)------------------
key_7: jb b.6,nk7_3 ;确定
cjne r4,#1H,nk7_1
jmp nk7_9
nk7_1: setb b.6
jnb b.1,nk7_2
mov t_01,time0
mov t_02,time1
mov t_03,time2
mov r1,#t_01 ;nishi内容
jmp nk7_9
nk7_2: mov t_01,next_01 ;序号
mov t_02,next_02 ;分
mov t_03,next_03 ;时
jnb b.4,nk7_10
mov r1,#t_01
jmp nk7_11
nk7_10:mov r1,#t_02
nk7_11:jmp nk7_9
nk7_3: jb b.1,nk7_4 ;修改时间确定
jb b.2,nk7_5 ;增加一个打铃点
jb b.4,nk7_6 ;删除当前打铃点
jb b.3,nk7_7 ;修改当前打铃点
jmp nk7_9
nk7_4: mov time0,t_01
mov time1,t_02
mov time2,t_03
jmp nk7_8
nk7_5: mov r1,rall
cjne r1,#40,nk7_12
jmp nk7_8
nk7_12:inc rall ;增加一个打铃点
mov a,rall
dec a
rl a
add a,#80H
mov r0,a
mov @r0,t_03
inc r0
mov @r0,t_02
mov r2,rall
mov r0,#80H
acall up_list
mov writ,#0ffh
jmp nk7_8
nk7_6: mov a,t_01 ;删除一个打铃点
cjne a,#0,nk7_13
jmp nK7_8
nk7_13:dec a
rl a
add a,#80H
mov r0,a
mov @R0,#0ffH
inc r0
mov @r0,#0ffh
mov r2,rall
mov r0,#80H
acall up_list
mov writ,#0ffh
dec rall
jmp nk7_8
nk7_7: mov a,t_01 ;修改当前打铃点
dec a
rl a
add a,#80H
mov r0,a
mov @R0,t_03
inc r0
mov @r0,t_02
mov r2,rall
mov r0,#80H
acall up_list
mov writ,#0ffh
nk7_8: acall key_8
mov nion,#0ffH ;查找与当前时间点最近的打铃时间点
nk7_9: ret
;***********************子程序结束*****************************
;---------------------key_8按下(子程序十二)------------------
key_8: ;取消键
mov key_ok,#00H
mov b,#00H
ret
;***********************子程序结束*****************************
;***********************子程序结束*****************************
;-----------------双字节数据排序子程序(X9)---------------------
;功能:将打铃时间表按升序排列
;入口参数:R0:数据块首地址,R2:打铃时间点数(字数)
;影响:A,B,PSW,R0,R2,R3,R4
;==============================================================
UP_LIST: PUSH ACC
PUSH PSW
PUSH B
MOV A,R0
MOV R4,A
DEC R2
MOV A,R2
JZ X9_EXIT_LIST
MOV R3,A
CLR F0
X9_LOOP: MOV A,R4
MOV R0,A
MOV A,R3
MOV R2,A
CLR F0
X9_LOOP1: ACALL MIN_MAX
DJNZ R2,X9_LOOP1
JNB F0,X9_EXIT_LIST
DJNZ R3,X9_LOOP
X9_EXIT_LIST:
POP B
POP PSW
POP ACC
RET
;++++++++++++++++++++++++++++++++++++++++++++++
MIN_MAX: MOV B,R0
INC R0
MOV A,@R0
INC R0
INC R0
CLR C
SUBB A,@R0
MOV R0,B
MOV A,@R0
INC R0
INC R0
SUBB A,@R0
JC EXIT_MM
SETB F0
MOV A,@R0
MOV R0,B
XCH A,@R0
INC R0
INC R0
MOV @R0,A
DEC R0
MOV A,@R0
INC R0
INC R0
XCH A,@R0
DEC R0
DEC R0
MOV @R0,A
EXIT_MM: MOV R0,B
INC R0
INC R0
RET
;======================================================================
;读24C02 EEPROM数据子程序
;R0:RAM地址指针,R2:8位移位计数器
;R3:数据字节计数器
;R4:24C02 存储地址
;----------------------------------------
RD_EEROM: NOP
R_LOOP1: ACALL START24
MOV A,#0A0H
ACALL WBYTE
MOV A,R4
ACALL WBYTE
ACALL START24
MOV A,#0A1H
ACALL WBYTE
ACALL RBYTE
MOV @R0,A
INC R0
INC R4
DJNZ R3,R_LOOP1
ACALL STOP24
RET
;-----------------------------------
RBYTE: NOP
CLR SCL
MOV R2,#08H
SETB SDA
RBY0: CLR SCL
NOP
SETB SCL
NOP
MOV C,SDA
RLC A
DJNZ R2,RBY0
CLR SCL
NOP
CLR SCL
SETB SDA
NOP
SETB SCL
RET
;-------------------------------------
WBYTE: NOP
MOV R2,#08H
WBY0: CLR SCL
RLC A
MOV SDA,C
NOP
SETB SCL
DJNZ R2,WBY0
CLR SCL
NOP
SETB SCL
NOP
JB SDA,$
CLR SCL
NOP
RET
;---------------------------------
START24: CLR SCL
NOP
SETB SDA
NOP
SETB SCL
NOP
CLR SDA
NOP
CLR SCL
RET
;---------------------------------
STOP24: CLR SCL
NOP
CLR SDA
NOP
SETB SCL
NOP
SETB SDA
NOP
CLR SCL
RET
;=================================
;写24c02EEPROM数据子程序
;r0:rom地址指针,r2:8位位移动计数器
;r3:数据字节计数器,r4:24c02存储地址
wr_eeprom: nop
w_loop: acall start24
mov a,#0a0H
acall wbyte
mov a,r4
acall wbyte
mov a,@r0
acall wbyte
acall stop24
acall next2 ;调用显做为延时
mov r7,#0efH
djnz r7,$
inc r0
inc r4
djnz r3,w_loop
ret
;---------------------------查表数据---------------------------
leds: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -