📄 5241l.asm
字号:
;(2004--01--07 12:45)
AWR EQU 00H ;A1=0 A0=0>00||A1=0 A0=1>01||A1=1 A0=0>02||A1=1 A0=1>03
PZ EQU 18H ;O1,O2输出为1,RDAC1(0 0 0 1 1 1 0 0 0-A/B RS SD O1 O2 X X X)
CLK BIT ACC.3
SDA BIT ACC.4 ;only data out
D_SDA BIT p1.6 ;only data in
io bit acc.5
;------------------------------
;TLC543
D_CS EQU ACC.0
D_IN EQU P1.7
D_OUT EQU ACC.1
D_CLK EQU ACC.2
D_DPTR EQU 0A001H
D_WAY EQU 03H
RAM EQU 30H
STATE EQU 31H
AD_H1 EQU 35H
AD_L1 EQU 34H
;-----------------------------------------
ORG 4000H
MOV SP,#50H
MOV DPTR,#0A002H
MOV A,#00h
MOVX @DPTR,A
MOV STATE,#0FFH
MOV DPTR,#0A001H ;电位器地址
MOV A,#0FFH ;START
MOVX @DPTR,A
ttt:
mov dptr,#0a002h
mov a,#03h
movx @dptr,a
mov r1,#2fh
mov r3,#02h
lcall w_5241
mov r1,#2fh
mov r3,#03h
lcall w_5241
mov sbuf,#3eh
jnb ti,$
clr ti
jnb ri,$
clr ri
jnb ri,$
clr ri
jnb ri,$
clr ri
jnb ri,$
clr ri
mov r1,#254
mov r3,#02h
lcall w_5241
jnb ri,$
clr ri
mov 70h,#00h
tt:
jnb ri,$
clr ri
mov sbuf,#3eh
jnb ti,$
clr ti
mov a,70h
add a,#01h
mov 70h,a
mov r1,a
mov r3,#02h
lcall w_5241
ljmp tt
cjne a,#0ffh,tt
mov r3,#02h
mov r1,#128
lcall w_5241
mov r3,#02h
lcall w_5241
mov a,#0
jnb ri,$
clr ri
tt1:
inc a
mov r1,a
mov r3,#02h
lcall w_5241
jnb ri,$
clr ri
cjne a,#255,tt1
LJMP TTt
;--------------------------------------------
; (R2,R3,R4,R5)
W_5241:
;写 (ONLY ONE BYTE)
MOV A,STATE
MOV DPTR,#0A001H ;电位器地址
MOV A,#0FFH ;START
MOVX @DPTR,A
CLR C
MOV SDA,C
MOVX @DPTR,A
CLR C
MOV CLK,C
MOVX @DPTR,A
MOV STATE,A
MOV A,R3 ;#DEVICE_ADDR
RL A
ORL A,#58H ;DEVICE_ADDR=001B WRITE R/W=0 命令
;MOV A,#5EH
;------------
MOV R5,#08H
W5241_1:
RLC A
MOV R2,A ;DATA
MOV A,STATE ;状态
MOV SDA,C ;SDA
NOP
MOVX @DPTR,A
NOP
SETB C
MOV CLK,C ;SCL---HIGH
MOVX @DPTR,A ;
NOP ; __
CLR C ;__| |__
MOV CLK,C ;SCL----LOW
MOVX @DPTR,A
MOV STATE,A
MOV A,R2
DJNZ R5,W5241_1
MOV A,STATE
SETB C ;ACK
MOV CLK,C
clr c
mov io,c
MOVX @DPTR,A
MOV STATE,A
; MOV DPTR,#0A001H ;电位器地址
NOP
NOP
SETB d_sda
W_ACK1:
JB D_SDA,W_ACK1
MOV A,STATE
CLR C
MOV CLK,C
setb c
mov io,c
MOVX @DPTR,A
MOV STATE,A
MOV A,#pz ; 配置
;---------------
MOV R5,#08H
W5241_2:
RLC A
MOV R2,A
MOV A,STATE
MOV SDA,C ;SDA
MOVX @DPTR,A
SETB C
MOV CLK,C ;SCL---HIGH
MOVX @DPTR,A ;
NOP ; __
CLR C ;__| |__
MOV CLK,C ;SCL----LOW
MOVX @DPTR,A
MOV STATE,A
MOV A,R2
DJNZ R5,W5241_2
MOV A,STATE
SETB C ;ACK
MOV CLK,C
clr c
mov io,c
MOVX @DPTR,A
MOV STATE,A
MOV DPTR,#0A001H ;电位器地址
NOP
NOP
SETB d_sda
W_ACK2:
JB D_SDA,W_ACK2
MOV A,STATE
CLR C
MOV CLK,C
setb c
mov io,c
MOVX @DPTR,A
MOV STATE,A
MOV A,R1 ;R1为电子电位器的值
;------------------
MOV R5,#08H
W5241_3:
RLC A
MOV R2,A
MOV A,STATE
MOV SDA,C ;SDA
MOVX @DPTR,A
SETB C
MOV CLK,C ;CLK---HIGH
MOVX @DPTR,A ;
NOP ; __
CLR C ;__| |__
MOV CLK,C ;CLK----LOW
MOVX @DPTR,A
MOV STATE,A
MOV A,R2
DJNZ R5,W5241_3
MOV A,STATE
SETB C ;ACK
MOV CLK,C
clr c
mov io,c
MOVX @DPTR,A
MOV STATE,A
MOV DPTR,#0A001H ;电位器地址
NOP
NOP
SETB d_sda
W_ACK3:
JB D_SDA,W_ACK3
MOV A,STATE
CLR C
MOV CLK,C
setb c
mov io,c
MOVX @DPTR,A ;END
CLR C
MOV SDA,C
MOVX @DPTR,A
SETB C
MOV CLK,C
MOVX @DPTR,A
SETB C
MOV SDA,C
MOVX @DPTR,A
; LJMP w_5241
RET
;**************************************************
; ORG 2000H
; (R2,R3,R4,R5)
;--------------------------------------------
R_5241:
;读 (ONLY ONE BYTE)
; MOV R3,#WR
MOV DPTR,#0A001H ;电位器地址
MOV A,#0FFH ;START
MOVX @DPTR,A
CLR C
MOV SDA,C
MOVX @DPTR,A
CLR C
MOV CLK,C
MOVX @DPTR,A
MOV STATE,A
MOV A,R3 ;#DEVICE_ADDR
RL A
ORL A,#59H ;DEVICE_ADDR=001B READ R/W=1 命令
;MOV A,#5FH
;------------
MOV R5,#08H
R5241_1:
RLC A
MOV R2,A
MOV A,STATE
MOV SDA,C ;SDA
MOVX @DPTR,A
SETB C
MOV CLK,C ;SCK---HIGH
MOVX @DPTR,A ; __
CLR C ;__| |__
MOV CLK,C ;SCK----LOW
MOVX @DPTR,A
MOV STATE,A
MOV A,R2
DJNZ R5,R5241_1
MOV A,STATE
SETB C ;ACK
MOV CLK,C
clr c
mov io,c
MOVX @DPTR,A
MOV STATE,A
setb d_sda
R_ACK1:
JB D_SDA,R_ACK1
MOV A,STATE
CLR C
MOV CLK,C
MOVX @DPTR,A
MOV STATE,A
;---------------------------
MOV R2,#0
MOV R5,#08H
R5241_2:
MOV A,STATE
SETB C
MOV CLK,C
MOVX @DPTR,A ; __
CLR C
MOV CLK,C ; __
MOVX @DPTR,A ; |__
MOV STATE,A
NOP
MOVX A,@DPTR
MOV C,D_SDA
MOV A,R2
RLC A
MOV R2,A
DJNZ R5,R5241_2
MOV A,STATE
;---------------------------
CLR C ;END
MOV SDA,C
setb c
mov io,c
MOVX @DPTR,A
SETB C
MOV CLK,C
MOVX @DPTR,A
SETB C
MOV SDA,C
MOVX @DPTR,A
MOV A,R2
; LJMP R_5241
RET
;==========================================
;----------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -