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

📄 24c01.asm

📁 at24c01 51单片机汇编驱动源代码
💻 ASM
字号:
;24c02测试成功2008.03.15
;shenjian
;数据定义
sda bit  p2.0    ; 数据线定义
scl bit  p2.1    ; 时钟线定义
SLAW  equ  0a0h  ;
slar  equ  0a1h  ;
MRD   equ 3eh    ; 读数据首地址
MTD   equ 3dh    ; 写数据首地址
NUMBYT equ 3ch   ; 读写数据位数
ad24c01 equ 3fh  ;储存器地址


;<<<<<<<<<<<<<<<<<<<<<<<<<I2C 软件包
;占用R7,A,C,R1,R0
;mov mrd,#读取数据首址
;mov numbyt,#读取数据位数
;mov ad24c01,#要读取器件的启始地址
;acall RDNBYT
;
;mov mtd,#写入数据首址
;mov numbyt,#写入数据位数
;mov ad24c01,#写入数据首址
;acall WRNBYT

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<START
STA:SETB    SDA
    SETB    SCL
    NOP
    NOP
    CLR     SDA
    NOP
    NOP
    CLR     SCL
    RET
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<STOP
     STOP:CLR     SDA
          SETB    SCL
          NOP
          NOP
          SETB    SDA
          NOP
          NOP
          CLR     SCL
          RET
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<MACK
      MACK:CLR     SDA
           SETB    SCL
           NOP
           NOP
           CLR     SCL
           SETB    SDA
       RET
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<MNACK
     MNACK:SETB    SDA
           SETB    SCL
           NOP
           NOP
           CLR     SCL
           CLR     SDA
        reT
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<CACK
      CACK:SETB    SDA
           SETB    SCL
           CLR     F0
           MOV     C,SDA
           JNC     CEND
           SETB    F0
     CEND:CLR     SCL
          NOP
          RET

;*************************************************************************
;*
;* 名称:WRBYT
;* 功能:写一个字节到IIC ,不包括START,STOP操作
;* 调用函数:
;* 输入:A=要写的值
;*      输出:
;* 使用寄存器:R7,A,C
;*
;*************************************************************************

      WRBYT:MOV     R7, #08H
            WLP:    RLC     A
            MOV     SDA, C
            SETB    SCL
            NOP
            NOP
            NOP
            CLR  SCL
            DJNZ    R7, WLP
         RET
;*************************************************************************
;*
;* 名称:WRNBYT
;* 功能:写N个数到IIC
;* 调用函数:WRBYT,STA,CACK,STOP
;* 输入:NUMBYT=输出数个数,AD24C01=24C01的片内地址,MTD的值;
;*  输出:输出数在从MTD开始的缓冲区中
;* 使用寄存器:R7,A,C,R1,R0
;*
;*************************************************************************

WRNBYT:LCALL   STA
       MOV     R0,NUMBYT
       MOV     A,#SLAW
       LCALL   WRBYT
       LCALL   CACK
       JB      F0, WRNBYT
       MOV     A,AD24C01
       LCALL   WRBYT
       LCALL   CACK
       JB      F0,     WRNBYT
       MOV     R1, MTD
   WRDA: MOV     A, @R1
       LCALL   WRBYT
       LCALL   CACK
       JB      F0, WRNBYT
       INC     R1
       DJNZ    R0, WRDA
       LCALL   STOP
      RET
;*************************************************************************
;*
;* 名称:RDBYT
;* 功能:从IIC中读一个字节到单片机中
;* 调用函数:
;* 输入:
;*      输出:A=要读的值
;* 使用寄存器:R7,A,C
;*
;*************************************************************************
    RDBYT:MOV     R7, #08H
    RLP:SETB    SDA
        SETB    SCL
        NOP
        NOP
        MOV     C,       SDA
        RLC     A
        CLR     SCL
        NOP
        NOP
        DJNZ    R7, RLP
        RET
;*************************************************************************
;*
;* 名称:RDNBYT
;* 功能:从IIC中读N个数到单片机中
;* 调用函数:WRBYT,STA,CACK,STOP
;* 输入:NUMBYT=从IIC中读出数个数,AD24C01=24C01的片内地址, MRD的值;
;*  输出:读入数在从#MRD开始的缓冲区中
;* 使用寄存器:R7,A,C,R1,R0
;*
;*************************************************************************
     RDNBYT:LCALL   STA
            MOV     R0,     NUMBYT
            MOV     A,      #SLAW
            LCALL   WRBYT
            LCALL   CACK
            JB      F0, RDNBYT
            MOV     A,AD24C01
            LCALL   WRBYT
            LCALL   CACK
            JB      F0,     RDNBYT
          LCALL   STA
          MOV     A,#SLAR
          LCALL   WRBYT
          LCALL   CACK
          JB      F0,    RDNBYT
          MOV     R1,      MRD
 RDDA:LCALL   RDBYT
      MOV     @R1,    A
      DJNZ    R0,     ACK
      LCALL   MNACK
      LCALL   STOP
       RET
  ACK:LCALL   MACK
      INC     R1
      SJMP    RDDA
      ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -