51单片机对SAA7113初始化和控制的程序

嵌入式系统 时间:2010-09-19来源:网络
  NOP

  SETB SCL

  NOP

  NOP

  MOV C, SDA

  MOV I2C_ERROR, C

  CLR SCL

  NOP

  RET

  ;*******发送1字节数据,待送数据在A中******

  I2C_SEND_1BYTE:

  MOV R0, #8

  SEND100: RLC A

  MOV SDA, C

  NOP

  SETB SCL

  NOP

  NOP

  CLR SCL

  DJNZ R0, SEND100

  RET

  ;*******接收1字节数据,接收数据放在A中*****

  I2C_RECEIVE_1BYTE:

  MOV R0, #8

  RECV100: SETB SDA

  NOP

  SETB SCL

  NOP

  NOP

  NOP

  MOV C, SDA

  CLR SCL

  RLC A

  DJNZ R0, RECV100

  RET

  ;*******通过I2C总线向某一寄存器写入一个字节数据*********

  I2C_WRITE: ACALL I2C_START ;发启动信号

  MOV A, # DeviceaddressW ;调7113地址+写

  ACALL I2C_SEND_1BYTE ;发送7113地址及“写”命令

  ACALL CHECK_ACK ;检查7113的应答信号

  JNB I2C_ERROR, WR200 ;应答正确,继续

  WR100: ACALL I2C_STOP ;应答不对,返回

  RET

  WR200: MOV A, Subaddress ;调寄存器地址

  ACALL I2C_SEND_1BYTE ;发送寄存器地址

  ACALL CHECK_ACK ;检查7113的应答信号

  JB I2C_ERROR, WR100 ;应答不对,返回

  MOV A, DATA_I2C ;调准备写入的数据

  ACALL I2C_SEND_1BYTE ;发送数据字节

  ACALL CHECK_ACK

  JB I2C_ERROR, WR100

  ACALL I2C_STOP ;发停止信号

1 2 3

关键词: 程序 控制 初始 SAA7113 单片机

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版