📄 xxx_1.asm
字号:
dec temp_on2
MM:
ACALL lcm_dis_1
ret
;-------------------------------------------
add_2:
MOV A, #35H
CJNE A, 45H, OK2
mov 45h, #30h;------0
MOV 46H, #30H;------0
MOV 47H, #30H;------0
MOV 48H, #31H;------1
mov a, #01h
mov temp_off1, a
clr a
mov temp_off2, a
AJMP JJ2
OK2:
mov a, #03ah
INC 48H;---------------------个位数+1
CJNE A, 48H, add2_nt
MOV 48H, #30H
INC 47H;---------------------十位数+1
CJNE A, 47H, add2_nt
MOV 47H, #30H
INC 46H;---------------------百位数+1
CJNE A, 46H, add2_nt
MOV 46H, #30H
inc 45h;---------------------千位数+1
;-------------------------------------------
add2_nt:
inc temp_off1
mov a, #0ffh
cjne a, temp_off1, JJ2
INC temp_off2
JJ2:
acall lcm_dis_2
ret
;-------------------------------------------
sub_2:
MOV A, #31H
CJNE A, 48H, de2_1
mov a, #30h
CJNE A, 47H, de2_1
CJNE A, 46H, de2_1
cjne a, 45h, de2_1
mov 48h, #30h
mov 47h, #30h
mov 46h, #30h
mov 45h, #35h
;-------------------------------------------
mov a, #088h
mov temp_off1, a
mov a, #013h
mov temp_off2, a
lJMP MM2
;-------------------------------------------
de2_1: MOV A, #2FH
DEC 48H;---------------------个位数-1
CJNE A, 48H, sub2_nt
CJNE A, 47H, de2_10
CJNE A, 46H, de2_100
cjne a, 45h, de2_1000
AJMP sub2_nt
de2_10: MOV A, #2FH
MOV 48H, #39H
DEC 47H;---------------------十位数-1
CJNE A, 47H, sub2_nt
de2_100: MOV 48H, #39H
MOV 47H, #39H
DEC 46H;---------------------百位数-1
mov a, #2fh
CJNE A, 46H, sub2_nt
mov 46h, #39h
mov a, #30h
CJNE A, 45H, de2_1000
ajmp sub2_nt
de2_1000:MOV 48H, #39H
MOV 47H, #39H
mov 46H, #39h
dec 45h;--------------------千位数-1
sub2_nt: dec temp_off1
mov a, #00h
cjne a, temp_off1,MM2
mov a, #0ffh
mov temp_off1, a
dec temp_off2
MM2: ACALL lcm_dis_2
ret
;-------------------------------------------
save_data:
mov 67h, 34h
mov 68h, 35h
mov 69h, 36h
mov 6ah, 37h
mov 6bh, 45h
mov 6ch, 46h
mov 6dh, 47h
mov 6eh, 48h
mov 6fh, temp_on1
mov 70h, temp_on2
mov 71h, temp_off1
mov 72h, temp_off2
;------------------------------------------
mov r0, #30h
mov dptr, #tab_4
go_4: clr a
movc a, @a+dptr
mov @r0, a
inc r0
inc dptr
cjne r0, #3ah, go_4
;------------------------------------------
mov r0, #40h
mov dptr, #tab_5
go_5: clr a
movc a, @a+dptr
mov @r0, a
inc r0
inc dptr
cjne r0, #4ch, go_5
;------------------------------------------
MOV A, #01H ;LCM_RAM清0
ACALL write_zi
;------------------------------------------
MOV A, #0c0H
ACALL write_zi
MOV R0, #30H
MOV R7, #08H
acall loop2
;-------------------------------------------
MOV A, #090H
ACALL write_zi
MOV R0, #40H
MOV R7, #0BH
acall loop3
;-------------------------------------------
MOV R0, #67H
MOV TEMP, #55H
MOV R7, #06H
CALL W_DATA
call delay_1s
ajmp start
;-------------------------------------------
W_DATA: CALL W_R_IF ;调用时序
MOV A,#30H ;写能使指令
CALL WRITE ;调用写
CLR CS ;写完后CS=0
CALL DE_30US ;调用延时
CALL W_R_IF ;调用时序
MOV A, TEMP ;写地址指令
CALL WRITE ;调用写
MOV A, @R0 ;间址取数据
CALL WRITE ;调用写
INC R0 ;间址指针加1
MOV A, @R0 ;间址取数
CALL WRITE ;调用写
CLR CS ;写完后CS=0
CALL DE_30US ;调用延迟
CALL W_R_IF ;调用时序
CLR A ;取禁止写数据
CALL WRITE ;写禁止指令
CLR CS ;写完后CS=0
CALL DE_30US ;调用延迟
INC R0 ;间址指针加1
INC TEMP ;地址加1
DJNZ R7, W_DATA ;循环写入12个单元的数据
RET ;程序返回
;----------------------------------------------
read_eeprom:
MOV TEMP, #95H
MOV R0, #67H
MOV R7, #06H
CALL R_DATA
mov 34h, 67h
mov 35h, 68h
mov 36h, 69h
mov 37h, 6ah
;---------------------------------------------
mov 45h, 6bh
mov 46h, 6ch
mov 47h, 6dh
mov 48h, 6eh
;---------------------------------------------
mov temp_on1, 6fh
mov temp_on2, 70h
mov temp_off1, 71h
mov temp_off2, 72h
ret
;----------------------------------------------
R_DATA: CALL W_R_IF ;调用时序
MOV A, TEMP ;读地址指令
CALL WRITE ;写入指令
call de_30us
CALL READ ;读数据
MOV @R0, A ;间址存数据
INC R0 ;指针加1
CALL READ ;读数据
MOV @R0, A ;间址存数据
clr cs
call de_30us
INC R0 ;指针加1
INC TEMP ;地址加1
DJNZ R7,R_DATA ;循环读出12个单元的数据
RET ;程序返回
;------------------------------------------------------------------
W_R_IF: SETB CS
SETB DI
SETB CLK
CALL DE_30US
CLR CLK
CALL DE_30US
RET
;------------------------------------------------------------------
WRITE: MOV R6,#08H
CLR C
LOOP_W: RLC A
MOV DI,C
SETB CLK
CALL DE_30US
CLR CLK
CALL DE_30US
DJNZ R6,LOOP_W
RET
;------------------------------------------------------------------
READ: MOV R6,#08H
CLR A
LOOP_R: SETB CLK
CALL DE_30US
CLR CLK
CALL DE_30US
MOV C,DO
RLC A
DJNZ R6,LOOP_R
RET
;------------------------------------------------------------------
DE_30US: MOV R5, #0ffh
DJNZ R5, $
RET
;------------------------------------------------------
run_1: mov count_on1,temp_on1
mov count_on2,temp_on2
mov count_off1,temp_off1
mov count_off2,temp_off2
;------------------------------------------------------
ggg: SETB TR0
mov 5Ch, #52H ;字符R
MOV 5DH, #55H ;字符U
MOV 5EH, #4EH ;字符N
MOV 5FH, #2EH ;字符.
MOV 60H, #2EH ;字符.
ACALL LCM_DIS_4
;------------------------------------------------------
CCC_1: MOV A, #093H
MOV A, #093H
LCALL write_zi
MOV R0, #53H
MOV R7, #06H
LCALL LOOP3
JNB ON_OFF,break
ACALL DELAY_50MS
AJMP CCC_1
;------------------------------------------------------
break: call delay_50ms
JB ON_OFF,ccc_1
call delay_50ms
JB ON_OFF,ccc_1
clr tr0
CLR P2.7
SETB ON_OFF
mov 5Ch, #42H ;字符b
MOV 5DH, #72H ;字符r
MOV 5EH, #65H ;字符e
MOV 5FH, #61H ;字符a
MOV 60H, #6bH ;字符k
ACALL LCM_DIS_4
JnB ON_OFF,$
call delay_50ms
JnB ON_OFF,$
call delay_50ms
jjj: JnB ON_OFF,re_run
jmp jjj
;--------------------------------------------------
re_run: call delay_50ms
call delay_50ms
call delay_50ms
JB ON_OFF,jjj
call delay_50ms
call delay_50ms
JB ON_OFF,ggg
call delay_50ms
call delay_50ms
call delay_50ms
JB ON_OFF,ggg
call delay_50ms
ljmp start
;-----------------------------------------------
TO: CLR TR0
MOV TL0, #020h
MOV TH0, #0fch
jb 25h.0, on
;----------------------------------------------
djnz count_off1, out_next
mov a, #00h
cjne a, count_off2,in_off
setb p2.7
mov 25h, #0ffh
mov count_off1, temp_off1
mov count_off2, temp_off2
ajmp out_to
;----------------------------------------------
in_off: mov count_off1, #0ffh
dec count_off2
ajmp out_next
;----------------------------------------------
on: djnz count_on1, out_next
mov a, #00h
cjne a, count_on2,in_on
clr p2.7
mov 25h, #00h
mov count_on1, temp_on1
mov count_on2, temp_on2
ajmp out_to
;-----------------------------------------------
in_on: mov count_on1, #0ffh
dec count_on2
ajmp out_next
;-----------------------------------------------
OUT_TO: CPL P2.6
jb p2.6, OUT_next
MOV A, #35h
CJNE A, 53H, GO_C
CLR TR0
ajmp to_out
go_c: MOV A, #3AH
INC 58H
CJNE A, 58H, OUT_next
MOV 58H, #30H
INC 57H
CJNE A, 57H, OUT_next
MOV 57H, #30H
INC 56H
CJNE A, 56H, OUT_next
MOV 56H, #30H
inc 55h
CJNE A, 55H, OUT_next
MOV 55H, #30H
inc 54h
CJNE A, 54H, OUT_next
MOV 54H, #30H
inc 53h
MOV A, #35h
CJNE A, 53H, GO_C
CLR TR0
ajmp to_out
;----------------------------------------------
;-----------------------------------------------
OUT_next:SETB TR0
TO_OUT: RETI
;-----------------------------------------------
delay_1ms:
MOV 21H, #05D
D1: MOV 20H, #200D
D2: DJNZ 20H, D2
DJNZ 21H, D1
RET
;-----------------------------------------------
delay_50ms:
MOV 21H, #100D
D3: MOV 20H, #250D
D4: DJNZ 20H, D4
DJNZ 21H, D3
RET
;-----------------------------------------------
delay_1s:
MOV 22H, #50D
D7: MOV 21H, #200D
D5: mov 20h, #250d
D6: DJNZ 20H, D6
DJNZ 21H, D5
djnz 22h, d7
RET
;------------------------------------------------
tab_1:
db 3eh 4fh 4eh 3dh 30h 30h 30h 31h 6dh 73h
tab_2:
db 3eh 4fh 46h 46h 3dh 30h 30h 30h 31h 6dh 73h 00h
tab_3:
db 3eh 43h 3dh 30h 30h 30h 30h 30h 30h
tab_4:
db 53h 61h 76h 65h 44h 61h 74h 61h
tab_5:
db 50h 6ch 65h 61h 73h 65h 57h 61h 69h 74h 2eh 2eh 2eh
tab_6:
db 3eh 41h 77h 61h 69h 74h 2eh 2eh 2eh 2eh 2eh
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -