📄 测试_24lc16.asm
字号:
;//////////////////////////////////////////////
;////////////----24LC16测试板----//////////////
;//////////////////////////////////////////////
;---------------定义区-------------------------
;//////////////////////////////////////////////
B1 BIT P1.7
B2 BIT P1.6
RED BIT P1.4
SCL BIT P0.5
SDA BIT P0.3
LED_A BIT P0.0
LED_B BIT P0.1
LED_C BIT P0.2
LED_D BIT P0.4
LED_E BIT P0.6
LED_F BIT P0.7
LED_G BIT P1.2
LED_DP BIT P1.3
;//////////////////////////////////////////////
;------------------主程序----------------------
;//////////////////////////////////////////////
ORG 0000H
LJMP MAIN
ORG 0050H
MAIN: CLR RED
MOV SP,#40H
MOV A,#00H
LOP: LCALL DISB1
LCALL DISB2
INC A
CJNE A,#200,LOP
MOV 30H,#0AFH
MOV R3,#16
LCALL W2416_CHAR
MOV TMOD,#10H
MOV TH1,#00H
MOV TL1,#00H
SETB EA
SETB ET1
SETB TR1
LCALL REW2416
MOV R3,#16
MOV 30H,#0AFH
LCALL W2416_CHAR
CLR EA
CLR TR1
MOV R3,#0
MOV R4,#0
MOV R5,#0
LJMP CHANGE
;///////////////////////////////////////////////
;-----------------子程序------------------------
;///////////////////////////////////////////////
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;-------------------------写第一个扇区-----------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
W2416_CHAR:
LCALL START_I2C
MOV R1,#0A0H
CALL WI2C
MOV R1,#00H
CALL WI2C
REW: MOV R1,30H
CALL WI2C
DJNZ R3,REW
CALL STOP_I2C
RET
START_I2C:
SETB SCL
SETB SDA
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
NOP
NOP
CLR SCL
NOP
NOP
RET
STOP_I2C:
CLR SDA
NOP
SETB SCL
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
CLR SCL
NOP
NOP
RET
WI2C: MOV R0,#8
MOV A,R1
CLR C
LOOP1: RLC A
MOV SDA,C
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP1
NOP
NOP
NOP
NOP
SETB SDA
SETB SCL
NOP
NOP
NOP
NOP
NOP
SSSS1: MOV C,SDA
JC SSSSS
CLR SCL
RET
SSSSS: MOV C,SDA
JC QQQQ
CLR SCL
RET
QQQQ: SJMP W2416_CHAR
;STANDBY: MOV C,SDA
; JC STANDBY
; CLR SCL
; RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;第二次写 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
REW2416: LCALL START_I2C
MOV R1,#0A2H
CALL WI2C1
RET
WI2C1: MOV R0,#8
MOV A,R1
CLR C
LOOP11: RLC A
MOV SDA,C
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP11
NOP
NOP
NOP
NOP
SETB SDA
SETB SCL
NOP
NOP
NOP
NOP
NOP
SSS1: MOV C,SDA
JC SSSS
RET
SSSS: MOV C,SDA
JC QQQ
RET
QQQ: SJMP REW2416
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DSS: MOV 60H,R5
MOV 50H,R4
LJMP LP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CHANGE: MOV R7,TL1
MOV R6,TH1
REDEC: INC R3 ;R3来计算0.1MS
CJNE R3,#100,III
MOV R3,#0
INC R4 ;r4是0.1ms的标志位
CJNE R4,#10,III
MOV R4,#0 ;r5是1ms 的标志位
INC R5
III: DJNZ R7,REDEC
DJNZ R6,YYY
LJMP DSS
YYY: MOV R7,#00H
SJMP REDEC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISB1: SETB B1
CLR B2
CLR LED_A
CLR LED_B
CLR LED_C
CLR LED_D
CLR LED_E
CLR LED_F
SETB LED_G
SETB LED_DP
MOV R0,#05H
DELAY1: MOV R1,#0FFH
DELAY: NOP
NOP
DJNZ R1,DELAY
DJNZ R0,DELAY1
RET
DISB2: SETB B2
CLR B1
CLR LED_A
CLR LED_B
CLR LED_C
CLR LED_D
CLR LED_E
CLR LED_F
SETB LED_G
CLR LED_DP
MOV R0,#05H
DELAY2: MOV R1,#0FFH
DELAY3: NOP
NOP
DJNZ R1,DELAY3
DJNZ R0,DELAY2
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LP: MOV R4,#00
PL: LCALL DIB11 ;最后停止程序
LCALL DIB22
INC R4
CJNE R4,#200,PL
LJMP LP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DIB11: SETB B1 ;最后显示程序
CLR B2
MOV A,50H
MOV DPTR,#TAB
MOVC A,@A+DPTR
RLC A
MOV LED_DP,C
RLC A
MOV LED_G,C
RLC A
MOV LED_F,C
RLC A
MOV LED_E,C
RLC A
MOV LED_D,C
RLC A
MOV LED_C,C
RLC A
MOV LED_B,C
RLC A
MOV LED_A,C
MOV R6,#05H
DEEAY1: MOV R7,#00H
DEEAY: NOP
NOP
DJNZ R7,DEEAY
DJNZ R6,DEEAY1
RET
DIB22: SETB B2
CLR B1
MOV A,60H
MOV DPTR,#TAB
MOVC A,@A+DPTR
RLC A
MOV LED_DP,C
RLC A
MOV LED_G,C
RLC A
MOV LED_F,C
RLC A
MOV LED_E,C
RLC A
MOV LED_D,C
RLC A
MOV LED_C,C
RLC A
MOV LED_B,C
RLC A
MOV LED_A,C
CLR LED_DP ;加小数点
MOV R6,#05H
DEAYY1: MOV R7,#0FFH
DEAYY: NOP
NOP
DJNZ R7,DEAYY
DJNZ R6,DEAYY1
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -