?? 060406_2
字號:
MOV R3, #8
DSSENT2:MOV A, @R0 ;R0=SENT DATA BUFFER POINTER
RLC A
MOV DDSDT, C
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV @R0, A
CLR DDSSK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB DDSSK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R3, DSSENT2
INC R0
MOV R3, #8
DSSENT3:MOV A, @R0
RLC A
MOV DDSDT, C
MOV @R0, A
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR DDSSK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB DDSSK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R3, DSSENT3
SETB DDSSC
POP PSW
POP ACC
RET
;**********************************************
;------------------------------------
WRIT24CXX: ;R0 ADDR
mov r3,#08h
LCALL start1 ;R1 DATA POINTER
MOV a,#0a0h ;R5 LOOP TIMES
LCALL WR_BYTE
;MOV a,#00h
;LCALL WR_BYTE
MOV a,R0
LCALL WR_BYTE
WRIT24CXX_LOOP:
MOV A,@R1
LCALL WR_BYTE
INC R1
;DJNZ R3,WRIT24CXX_h8_LOOP1
DJNZ R4,WRIT24CXX_h8_LOOP2
NOP
NOP
LCALL STOP
ret
WRIT24CXX_h8_LOOP2:
;DJNZ R6,WRIT24CXX_h8_LOOP
DJNZ R3,WRIT24CXX_LOOP
ajmp WRIT24CXX_h8
WRIT24CXX_h8:
LCALL STOP
;dec r6
mov a,r0
add a,#08h
mov r0,a
mov r3,#08h
LCALL DELAY4s
lcall DELAY4s
LCALL start1
MOV a,#0a0h
LCALL WR_BYTE
;MOV a,#00h
;LCALL WR_BYTE
MOV a,r0
LCALL WR_BYTE
WRIT24CXX_h8_LOOP:
MOV A,@R1
LCALL WR_BYTE
INC R1
;DJNZ R3,WRIT24CXX_h8_LOOP1
DJNZ R4,WRIT24CXX_h8_LOOP1
NOP
NOP
LCALL STOP
ret
WRIT24CXX_h8_LOOP1:
;DJNZ R6,WRIT24CXX_h8_LOOP
DJNZ R3,WRIT24CXX_h8_LOOP
ajmp WRIT24CXX_h8
;----------------------------------
READ24CXX:
mov r3,#08h
lcall start1 ;R2 ADDR
mov a,#0a0h ;R1 length
lcall wr_byte ;讀到40h
;mov a,#00h
;lcall wr_byte
mov a,R2
lcall wr_byte
lcall start1
mov a,#0A1H
lcall wr_byte
MOV R0,#40H
lcall rd_byte
looper:
clr sda
nop
nop
setb scl
nop
nop
clr scl
nop
nop
setb sda
nop
nop
mov @r0,a ;從41開始放讀出的命令字符串
inc r0
lcall rd_byte
djnz r1,READ24CXX_loop
;djnz r3,READ24CXX_loop1
lcall stop
ret
READ24CXX_loop:
djnz r3,looper
;djnz r1,looper1 ;R1連續讀的次數
ajmp READ24CXX_high8
READ24CXX_high8:
;dec r1
mov A,R2
ADD A,#08H
MOV R2,A
MOV R3,#08H
lcall stop
LCALL DELAY4s
lcall start1 ;R2 ADDR
mov a,#0a0h ;R1 length
lcall wr_byte ;讀到40h
;mov a,#00h
;lcall wr_byte
mov a,R2
lcall wr_byte
lcall start1
mov a,#0A1H
lcall wr_byte
lcall RD_BYTE
looper1:
clr sda
nop
nop
setb scl
nop
nop
clr scl
nop
nop
setb sda
nop
nop
mov @r0,a ;從41開始放讀出的命令字符串
inc r0
lcall rd_byte
djnz r1,READ24CXX_loop1
;djnz r3,READ24CXX_loop1
lcall stop
ret
READ24CXX_loop1:
djnz r3,looper1
;djnz r1,looper1 ;R1連續讀的次數
ajmp READ24CXX_high8
;------------------------------------
WR_BYTE:
MOV R5,#08H; 一字節8位數據
CLR SCL
NOP
NOP
WR_BYTE1:
RLC A; ;帶進位位左移,A.8->C
MOV SDA,C; ;SCL低電平時改變SDA上的數據
NOP
SETB SCL; ;拉高SCL把數據發送出去
NOP
NOP
CLR SCL
NOP
NOP
DJNZ R5,WR_BYTE1;;依次發送A中的8位數據
SETB SDA
SETB SCL
nop
nop
nop
JB SDA,$ ;;等待寫入確認信號
CLR SCL
NOP
RET
;-----------------------------------------------------------------------------
RD_BYTE:
MOV R5,#08h
SETB SDA ;設備SDA為讀狀態
CLR A ;清空A寄存器
RD_BYtE1:
MOV C,SDA; ;讀一位數據到進位位
RLC A ; ;左移數據到A.0
SETB SCL
NOP
NOP
CLR SCL
NOP
NOP
DJNZ R5,RD_BYTE1; ;依次讀出8位數據到A中
RET ;;無應答信號
;----------------------------------------------------------
start1: ;此程序是發送了"1"
CLR SCL;平時才允許SDA更改
NOP; ;加入空指令延時以確保信號可靠
NOP
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
CLR SDA
NOP
NOP
CLR SCL
NOP
NOP
ret
;----------------------------------------------------------
stop:
CLR SCL
NOP
NOP
CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
SETB SDA
NOP
NOP
CLR SCL
NOP
NOP
CLR SDA
ret
;--------------------------------------
DELAY2MS:
MOV R4,#03H
DELAY2MS_LOOP1:
MOV R5,#0FFH
DELAY2MS_LOOP:
JB D,DELAY2MS_DOOR1
DJNZ R5,DELAY2MS_LOOP
DJNZ R4,DELAY2MS_LOOP1
DEC SP
DEC SP
; AJMP COMEND
DELAY2MS_DOOR1:
RET
;------------------------------------
DELAY2MS_fun1:
MOV R4,#03H
DELAY2MS_fun1LOOP1:
MOV R5,#0FFH
DELAY2MS_fun1LOOP:
JB D,DELAY2MS_fun1DOOR1
DJNZ R5,DELAY2MS_fun1LOOP
DJNZ R4,DELAY2MS_fun1LOOP1
DEC SP
DEC SP
; AJMP senddata
DELAY2MS_fun1DOOR1:
RET
;----------
DELAY4s:
MOV R5,#0ffH ;延時4s,確認按下?
lO2: MOV save1,#0ffH
lO3:
DJNZ save1,lO3
DJNZ R5,lO2
ret
sentout:
mov a,41h
mov sbuf,a
jnb f,$
clr f
ret
DELAY2MS1:
MOV R4,#0FFH
DELAY2MS1_fun1LOOP1:
MOV R5,#0FFH
DELAY2MS1_fun1LOOP:
DJNZ R5,DELAY2MS1_fun1LOOP
DJNZ R4,DELAY2MS1_fun1LOOP1
RETI
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -