新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機對SAA7113初始化和控制的程序

        51單片機對SAA7113初始化和控制的程序

        作者: 時間:2010-09-19 來源:網(wǎng)絡 收藏
          NOP

        本文引用地址:http://www.104case.com/article/173215.htm

          SETB SCL

          NOP

          NOP

          MOV C, SDA

          MOV I2C_ERROR, C

          CLR SCL

          NOP

          RET

          ;*******發(fā)送1字節(jié)數(shù)據(jù),待送數(shù)據(jù)在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字節(jié)數(shù)據(jù),接收數(shù)據(jù)放在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總線向某一寄存器寫入一個字節(jié)數(shù)據(jù)*********

          I2C_WRITE: ACALL I2C_START ;發(fā)啟動信號

          MOV A, # DeviceaddressW ;調(diào)7113地址+寫

          ACALL I2C_SEND_1BYTE ;發(fā)送7113地址及“寫”命令

          ACALL CHECK_ACK ;檢查7113的應答信號

          JNB I2C_ERROR, WR200 ;應答正確,繼續(xù)

          WR100: ACALL I2C_STOP ;應答不對,返回

          RET

          WR200: MOV A, Subaddress ;調(diào)寄存器地址

          ACALL I2C_SEND_1BYTE ;發(fā)送寄存器地址

          ACALL CHECK_ACK ;檢查7113的應答信號

          JB I2C_ERROR, WR100 ;應答不對,返回

          MOV A, DATA_I2C ;調(diào)準備寫入的數(shù)據(jù)

          ACALL I2C_SEND_1BYTE ;發(fā)送數(shù)據(jù)字節(jié)

          ACALL CHECK_ACK

          JB I2C_ERROR, WR100

          ACALL I2C_STOP ;發(fā)停止信號



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 双峰县| 东城区| 泗阳县| 洪江市| 晋江市| 杭锦后旗| 会理县| 丹阳市| 塔城市| 新巴尔虎左旗| 包头市| 东辽县| 花垣县| 清远市| 浮梁县| 调兵山市| 上犹县| 长丰县| 西乌珠穆沁旗| 清远市| 阳城县| 大新县| 郧西县| 呼伦贝尔市| 江西省| 临洮县| 台山市| 铜陵市| 隆子县| 武乡县| 岳西县| 弥勒县| 黄大仙区| 光山县| 遂宁市| 华亭县| 曲沃县| 巢湖市| 湖口县| 安吉县| 盐城市|