⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5241l.asm

📁 这是一个电子电位器源代码,内有两种程序,一个是通过位操作,另一个是通过地址总线操作
💻 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 + -