📄 mcu.asm
字号:
keyout: NOP
ret
;******************************8
key_qr:
LCALL R_1302
ljmp keyout
;********************************8
key_up:
lcall read_24c02
MOV 1FH ,#100
mov a ,7Bh
cjne a ,#0ah ,key_upa
mov a ,30h ;10
LCALL IBTDA
mov a ,31h
mov 75h ,a
mov a ,32h
mov 74h ,a
mov a ,33h
mov 73h ,a
mov a ,34h
mov 72h ,a
mov a ,35h
mov 21h ,a
MOV 7AH ,#0AH
lcall dis
ljmp keya
key_upa:inc a
mov 7Bh ,a
lcall dis_t
LCALL YS2S
ljmp keya
;***********************************
key_down:
lcall read_24c02
MOV 1FH ,#100
mov a ,7Bh
cjne a ,#01h ,key_downa
mov a ,66h
LCALL IBTDA ;1
mov a ,67h
mov 75h ,a
mov a ,68h
mov 74h ,a
mov a ,69h
mov 73h ,a
mov a ,6ah
mov 72h ,a
mov a ,6bh
mov 21h ,a
MOV 7AH ,#01H
lcall dis
ljmp keya
key_downa:dec a
mov 7Bh ,a
lcall dis_t
LCALL YS2S
ljmp keya
;*******************************
dis_t: mov a ,7Bh
cjne a ,#01h ,dis_t2
mov a ,66h
LCALL IBTDA ;1
mov a ,67h
mov 75h ,a
mov a ,68h
mov 74h ,a
mov a ,69h
mov 73h ,a
mov a ,6ah
mov 72h ,a
mov a ,6bh
mov 21h ,a
MOV 7AH ,#01H
lcall dis
ret
dis_t2:cjne a ,#02h ,dis_t3
mov a ,60h ;2
LCALL IBTDA
mov a ,61h
mov 75h ,a
mov a ,62h
mov 74h ,a
mov a ,63h
mov 73h ,a
mov a ,64h
mov 72h ,a
mov a ,65h
mov 21h ,a
MOV 7AH ,#02H
lcall dis
ret
dis_t3: cjne a ,#03h ,dis_t4
mov a ,5ah ;3
LCALL IBTDA
mov a ,5bh
mov 75h ,a
mov a ,5ch
mov 74h ,a
mov a ,5dh
mov 73h ,a
mov a ,5eh
mov 72h ,a
mov a ,5fh
mov 21h ,a
MOV 7AH ,#03H
lcall dis
ret
dis_t4: cjne a ,#04h ,dis_t5
mov a ,54h ;4
LCALL IBTDA
mov a ,55h
mov 75h ,a
mov a ,56h
mov 74h ,a
mov a ,57h
mov 73h ,a
mov a ,58h
mov 72h ,a
mov a ,59h
mov 21h ,a
MOV 7AH ,#04H
lcall dis
ret
dis_t5: cjne a ,#05h ,dis_t6
mov a ,4eh ;5
LCALL IBTDA
mov a ,4fh
mov 75h ,a
mov a ,50h
mov 74h ,a
mov a ,51h
mov 73h ,a
mov a ,52h
mov 72h ,a
mov a ,53h
mov 21h ,a
MOV 7AH ,#05H
lcall dis
ret
dis_t6: cjne a ,#06h ,dis_t7
mov a ,48h ;6
LCALL IBTDA
mov a ,49h
mov 75h ,a
mov a ,4ah
mov 74h ,a
mov a ,4bh
mov 73h ,a
mov a ,4ch
mov 72h ,a
mov a ,4dh
mov 21h ,a
MOV 7AH ,#06H
lcall dis
ret
dis_t7:cjne a ,#07h ,dis_t8
mov a ,42h ;7
LCALL IBTDA
mov a ,43h
mov 75h ,a
mov a ,44h
mov 74h ,a
mov a ,45h
mov 73h ,a
mov a ,46h
mov 72h ,a
mov a ,47h
mov 21h ,a
MOV 7AH ,#07H
lcall dis
ret
dis_t8:cjne a ,#08h ,dis_t9
mov a ,3ch ;8
LCALL IBTDA
mov a ,3dh
mov 75h ,a
mov a ,3eh
mov 74h ,a
mov a ,3fh
mov 73h ,a
mov a ,40h
mov 72h ,a
mov a ,41h
mov 21h ,a
MOV 7AH ,#08H
lcall dis
ret
dis_t9:cjne a ,#09h ,dis_t10
mov a ,36h ;9
LCALL IBTDA
mov a ,37h
mov 75h ,a
mov a ,38h
mov 74h ,a
mov a ,39h
mov 73h ,a
mov a ,3ah
mov 72h ,a
mov a ,3bh
mov 21h ,a
MOV 7AH ,#09H
lcall dis
ret
dis_t10:cjne a ,#0ah ,dis_t11
mov a ,30h ;10
LCALL IBTDA
mov a ,31h
mov 75h ,a
mov a ,32h
mov 74h ,a
mov a ,33h
mov 73h ,a
mov a ,34h
mov 72h ,a
mov a ,35h
mov 21h ,a
MOV WDT_CONTR,#34H ;喂狗,
MOV 7AH ,#0AH
lcall dis
ret
dis_t11:
mov 7Bh ,#0ah
ret
;***********************************
;*******COMM******************
COMM:CLR EA
PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
push 00h
push 01h
push 02h
push 03h
push 04h
push 05h
push 06h
push 07h
CLR RS1
CLR RS0
JBC RI ,RII1
JBC TI ,INTU
INTU:LJMP COMF
RII1: mov a ,24h
cjne a ,#55h ,yyy
ljmp intu
yyy:
MOV A ,SBUF
CLR RI
XRL A ,#7fH
JNZ INTU
MOV 20H ,#7fH
MOV R0 ,#21H
MOV R2 ,#03H
RII2: JNB RI ,RII2
MOV A ,SBUF
CLR RI
MOV @R0 ,A
INC R0
DJNZ R2 ,RII2
;*****************************************
MOV A ,23H
CJNE A ,#0DH , OUTT
mov a ,1fh
cjne a ,#55h ,rio
ljmp xunjian
;JB 2ah ,XUNJIAN
rio: JB 2bh ,MINGLING
OUTT: LJMP COMF
XUNJIAN:MOV A ,22H
anl a ,#0fh
CJNE A ,#00H , SL1
clr 29h
clr 2ah
clr 2bh
mov 1fh ,#54h
LJMP COMF
SL1: SETB 29h
CLR 2ah
CLR 2bh
setb 29h
mov 1fh ,#54h
LJMP COMF
;********MINGLING *************
MINGLING:MOV A ,22H
anl a ,#0fh
CJNE A ,#00H , SLl1
clr 29h
clr 2ah
clr 2bh
LJMP COMF
sll1: setb 29h
clr 2ah
clr 2bh
;***************************
COMF:CLR TI
CLR RS0
CLR RS1
pop 07h
pop 06h
pop 05h
pop 04h
pop 03h
pop 02h
pop 01h
pop 00h
POP DPH
POP DPL
POP PSW
POP ACC
SETB EA
RETI
;*******READ_24C02**************************8
; 读AT24cxx 到RAM 首址70h 80字节长
read_24C02: mov addr,#0
mov r0, #buffer
mov r7,#cnt
y71: mov b,#120
y72: lcall START24
jc y35
mov a, #FADDR
clr acc.0
lcall shout
jc y34
mov a, addr
lcall shout ;
jc y34
lcall START24
jc y34
mov a, #faddr
setb acc.0
lcall shout
jc y34
y31: lcall shin
mov @r0, a
lcall NAK
inc r0
clr c
y34: lcall STOP24
y35: nop
jnc y74
djnz b,y72
setb c
ajmp y75
y74: inc addr
djnz r7,y71
clr c
y75: MOV A ,3fh
MOV 1eH ,A
ret
;#buffer首址RAM存入AT24cxx
write_24C02: MOV A ,1eH
MOV 3fh ,A
mov addr,#0
mov r7,#cnt
mov r0,#buffer
y62: mov b,#10
y63: lcall START24
jc y38
mov a, #FADDR
clr acc.0
lcall shout
jc y37
mov a,addr
lcall shout ;
jc y37
y36: mov a, @r0
lcall shout
jc y37
inc r0
clr c
y37: lcall STOP24
y38: jnc y64
djnz b,y63
setb c
ajmp y65
y64: inc addr
djnz r7,y62
clr c
y65: nop
ret
;*******************************************
; AT24cxx子程序
;*********************************************
START24: ; Send START24, defined as high-to-low SDA with SCL high.
; Return with SCL, SDA low.
; Returns CY set if bus is not available.
setb SDA
setb SCL ; Verify bus available.
jnb SDA, x40 ; jump if not high
jnb SCL, x40 ; jump if not high
nop ; enforce setup delay and cycle delay
clr SDA
nop ; enforce hold delay
nop ;
nop ;
nop ;
nop ;
clr SCL
clr c ; clear error flag
ajmp x41
x40: setb c ; set error flag
x41: ret
STOP24: ; Send STOP24, defined as low-to-high SDA with SCL high.
; SCL expected low on entry. Return with SCL, SDA high.
clr SDA
nop ; enforce SCL low and data setup
nop
setb SCL
nop ; enforce setup delay
nop ;
nop ;
nop ;
nop ;
setb SDA
ret
shout: ; Shift out a byte to the AT24Cxx, most significant bit first.
; SCL, SDA expected low on entry. Return with SCL low.
; Called with data to send in A.
; Returns CY set to indicate failure by slave to acknowledge.
; Destroys A.
push b
mov b, #8 ; bit counter
x42: rlc a ; move bit into CY
mov SDA, c ; output bit
nop ; enforce SCL low and data setup
setb SCL ; raise clock
nop ; enforce SCL high
nop ;
nop ;
nop ;
clr SCL ; drop clock
djnz b, x42 ; next bit
setb SDA ; release SDA for ACK
nop ; enforce SCL low and tAA
nop ;
setb SCL ; raise ACK clock
nop ; enforce SCL high
nop ;
nop ;
nop ;
mov c, SDA ; get ACK bit
clr SCL ; drop ACK clock
pop b
ret
shin: ; Shift in a byte from the AT24Cxx, most significant bit first.
; SCL expected low on entry. Return with SCL low.
; Returns received data byte in A.
setb SDA ; make SDA an input
push b
mov b, #8 ; bit count
x43: nop ; enforce SCL low and data setup
nop ;
nop ;
setb SCL ; raise clock
nop ; enforce SCL high
nop ;
mov c, SDA ; input bit
rlc a ; move bit into byte
clr SCL ; drop clock
djnz b, x43 ; next bit
pop b
ret
ACK: clr SDA ; ACK bit
nop ; enforce SCL low and data setup
nop ;
setb SCL ; raise clock
nop ; enforce SCL high
nop ;
nop ;
nop ;
clr SCL ; drop clock
ret
NAK: setb SDA ; NAK bit
nop ; enforce SCL low and data setup
nop ;
setb SCL ; raise clock
nop ; enforce SCL high
nop ;
nop ;
nop ;
clr SCL ; drop clock
ret
;------------------------------------初始化1302-------------------------
SET1302: CLR RST
CLR LED3CLK
MOV SECOND,#0
SETB RST
MOV A,#8EH
LCALL R_BIT
MOV A,#00H
LCALL R_BIT
SETB LED3CLK
CLR RST
MOV R0,#SECOND
MOV R7,#7
MOV R1,#80H
SET1302A:CLR RST
CLR LED3CLK
SETB RST
MOV A,R1
LCALL R_BIT
MOV A,@R0
LCALL R_BIT
INC R0
INC R1
INC R1
SETB LED3CLK
CLR RST
DJNZ R7,SET1302A
CLR RST
CLR LED3CLK
sETB LED3CLK
nop
CLR RST
nop
clr led3clk
SETB RST
MOV A,#90H
LCALL R_BIT
MOV A,#10100101B ;充电器设置
LCALL R_BIT
SETB LED3CLK
CLR RST
CLR LED3CLK
SETB RST
MOV A,#8EH
LCALL R_BIT
MOV A,#80H
LCALL R_BIT
SETB LED3CLK
CLR RST
RET
;-----------------------------
R_1302: MOV R0,#SECOND
MOV R7,#7
MOV R1,#81H
R_1302A: CLR RST
CLR LED3CLK
SETB RST
MOV A,R1
LCALL R_BIT
LCALL W_BIT
MOV @R0,A
INC R0
INC R1
INC R1
SETB LED3CLK
CLR RST
DJNZ R7,R_1302A
RET
;------------------R_BIT------------------
R_BIT: MOV R4,#8
R_BIT1: RRC A
MOV LED4IO,C
SETB LED3CLK
CLR LED3CLK
DJNZ R4,R_BIT1
RET
;-------------------W_BIT-----------------------
W_BIT: MOV R4,#8
W_BIT1: MOV C,LED4IO
RRC A
SETB LED3CLK
CLR LED3CLK
DJNZ R4,W_BIT1
RET
;************************************
IDTB:
CJNE A ,#10H ,IDTB1
MOV A ,#0AH
RET
IDTB1:CJNE A ,#11H ,IDTB2
MOV A ,#0BH
RET
IDTB2:CJNE A ,#12H ,IDTB3
MOV A ,#0CH
IDTB3: RET
;****************************
IBTDA: MOV B ,A
ANL A ,#0FH
CJNE A ,#0AH,IBTD1
MOV 76H ,#10H
LJMP IBTDO
IBTD1: CJNE A ,#0BH,IBTD2
MOV 76H ,#11H
LJMP IBTDO
IBTD2: CJNE A ,#0CH,IBTD3
MOV 76H ,#12H
LJMP IBTDO
IBTD3: MOV 76H ,A
IBTDO:
MOV A ,B
SWAP A
ANL A,#0FH
MOV 78H ,A
RET
;*******************************
YS1S: MOV R7 ,#01H
YS1S1: MOV R5 ,#40H
YS1S2: MOV R6 ,#0FFH
YS1S3: CLR DOGk
NOP
SETB DOGk
MOV WDT_CONTR,#34H ;喂狗,
DJNZ R6 ,YS1S3
DJNZ R5 ,YS1S2
DJNZ R7 ,YS1S1
RET
;***************************
YS2S: MOV R7 ,#04H
YS2S1: MOV R5 ,#0FFH
YS2S2: MOV R6 ,#0FFH
YS2S3: CLR DOGk
NOP
SETB DOGk
MOV WDT_CONTR,#34H ;喂狗,
DJNZ R6 ,YS2S3
DJNZ R5 ,YS2S2
DJNZ R7 ,YS2S1
RET
;**************************************8
YS3S: MOV R7 ,#03H
YS3S1: MOV R5 ,#0FFH
YS3S2: MOV R6 ,#0FFH
YS3S3:
MOV WDT_CONTR,#34H ;喂狗,
DJNZ R6 ,YS3S3
DJNZ R5 ,YS3S2
DJNZ R7 ,YS3S1
RET
;**************************************8
YS5mS: MOV R7 ,#03H
YS5S1: MOV R5 ,#0FH
YS5S2: MOV R6 ,#0FFH
YS5S3: CLR DOGk
NOP
SETB DOGk
MOV WDT_CONTR,#34H ;喂狗,
DJNZ R6 ,YS5S3
DJNZ R5 ,YS5S2
DJNZ R7 ,YS5S1
RET
;*****************************************************
YS4S: MOV R7 ,#10H
YS4S1: MOV R5 ,#0FFH
YS4S2: MOV R6 ,#0FFH
YS4S3: CLR DOGk
NOP
SETB DOGk
MOV WDT_CONTR,#34H ;喂狗,
DJNZ R6 ,YS4S3
DJNZ R5 ,YS4S2
DJNZ R7 ,YS4S1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -