• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術(shù)熱線(xiàn): 4007-888-234
    設(shè)計(jì)開(kāi)發(fā)

    專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

    開(kāi)發(fā)工具

    提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

    技術(shù)支持

    從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

    新品推廣

    提供新的芯片及解決方案,提升客戶(hù)產(chǎn)品競(jìng)爭(zhēng)力

    新聞中心

    提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

    用16F877完成i2c通訊程序

    更新時(shí)間: 2019-03-26
    閱讀量:2814

    16F877完成的I2C通訊
    W_TEMP      EQU     72H                            W的臨時(shí)寄存器
    STATUS_TEMP EQU     73H
    DATA_W      EQU     74H                            ;數(shù)據(jù)寫(xiě)入寄存器
    DATA_R      EQU     75H                            ;數(shù)據(jù)讀出寄存器
    SCL         EQU     3                              ;時(shí)鐘的位地址
    SDA         EQU     4
    WP          EQU     2                              ;寫(xiě)保護(hù)線(xiàn)
    ADDRESS     EQU     26H                            ;定義地址常數(shù)
    VALUE       EQU     55H                            ;計(jì)劃寫(xiě)入的值

     

    ;----------------------------------------
    ORG      0000H
             NOP
             CLRF       PCLATH                           ;確保頁(yè)選位為0
             CALL       INIT_I2C                            I2C的初始化程序
             CLRF       DATA_R                           ;清數(shù)據(jù)讀取寄存器
             MOVLW      VALUE
             MOVWF      DATA_W

    CALL       WRITE                              ;調(diào)用寫(xiě)子程序
             CALL       DELAY10MS                     ;延時(shí)
             CALL       READ                               ;調(diào)用讀子程序
             GOTO       $
    ;-------------------------------------------------------------------------
    WRITE
    WETSTART
             CALL        I2C_IDLE                      I2C的初始化程序
             BANKSEL     SSPCON2
             BSF         SSPCON2,0                     ;SEN   建立啟動(dòng)時(shí)序
             BANKSEL     PIR1
             BTFSS       PIR1,3                        ;SSPIF   啟動(dòng)時(shí)序是否完成
             GOTO        $-1

    SENDWRTCOMM
             MOVLW       B'10100000'                   ;     7位地址+1位寫(xiě)控制位
             BANKSEL     SSPBUF
             MOVWF       SSPBUF
             CALL        WRTACKTEST                    ;檢測(cè)應(yīng)答信號(hào)
    SENDADDRESS
             BANKSEL     SSPSTAT
             BTFSC       SSPSTAT,0                     ;BF       檢測(cè)寄存器滿(mǎn)標(biāo)志位

    GOTO        $-1
             MOVLW       ADDRESS                       ;寫(xiě)一個(gè)單元地址字節(jié)
             BANKSEL     SSPBUF
             MOVWF       SSPBUF                        ;開(kāi)始一次字節(jié)寫(xiě)操作
             CALL        WRTACKTEST                    ;檢測(cè)應(yīng)答信號(hào)
    SENDDATA                                           ;發(fā)送數(shù)據(jù)字節(jié)
             BANKSEL     SSPSTAT
             BTFSC       SSPSTAT,0                     ;BF      檢測(cè)寄存器滿(mǎn)標(biāo)志位
             GOTO        $-1                          
             MOVF        DATA_W,0                      ;寫(xiě)一個(gè)數(shù)據(jù)字節(jié)
             BANKSEL     SSPBUF

     MOVWF       SSPBUF                        ;開(kāi)始一個(gè)字節(jié)寫(xiě)操作
             CALL        WRTACKTEST                    ;檢測(cè)應(yīng)答信號(hào)
             BANKSEL     PIR1
             BCF         PIR1,3                       ;SSPIF   清除MSSP的中斷標(biāo)志位 
    WRTSTOP
             BANKSEL     SSPCON2
             BSF         SSPCON2,0                    ;SEN       停止
             BANKSEL     PIR1
             BCF         PIR1,3                      

        RETURN
    ;-----------------------------------------------------------------------
    READ
    READSTART
             CALL        I2C_IDLE
      BANKSEL     PIR1
      BCF         PIR1,3             

     

      BANKSEL     SSPCON2
             BSF         SSPCON2,0            

     

             BSF         SSPCON2,RSEN
             BANKSEL     PIR1
             BTFSS       PIR1,3        

     

        GOTO        $-1
    WRTWRITE
             MOVLW       0A0H
            BANKSEL     SSPBUF
             MOVWF       SSPBUF
             CALL        WRTACKTEST
    WRTADDRESS
             MOVLW       ADDRESS
             BANKSEL     SSPBUF
             MOVWF       SSPBUF
            CALL        WRTACKTEST
             CALL        DELAY10MS
    RESTART
             CALL        I2C_IDLE
             BANKSEL     PIR1
      BCF         PIR1,3               ;SSPIF
             BANKSEL     SSPCON2
             BSF         SSPCON2,0           ;SEN
             BANKSEL     PIR1
             BTFSS       PIR1,3              ;SSPIF
             GOTO        $-1

    WRTREAD
             MOVLW       0A1H
             BANKSEL     SSPBUF
             MOVWF       SSPBUF
             CALL        WRTACKTEST
             BANKSEL     PIR1
             BCF         PIR1,3                ; SSPIF
    STARTREAD
             BANKSEL     SSPCON2
             BSF         SSPCON2,3             ;RCEN
    READDATA
             BANKSEL     PIR1
             BCF         PIR1,3                ;SSPIF
             BTFSS       PIR1,3                ;SSPIF
             GOTO        $-1
      BANKSEL     SSPBUF
             MOVF        SSPBUF,0

     MOVWF       DATA_R
             BANKSEL     PIR1
             BCF         PIR1,3                 ;SSPIF
    SENDREADNACK
             BANKSEL     SSPCON2
             BSF         SSPCON2,5                ;ACKDT
             BSF         SSPCON2,4                ;ACKEN
             BANKSEL     PIR1
             BTFSS       PIR1,3                    ;SSPIF
             GOTO        $-1

    READSTOP
             BANKSEL     SSPCON2
             BSF         SSPCON2,2                 ;PEN
             BANKSEL     PIR1
             BTFSS       PIR1,3                    ; SSPIF
      GOTO        $-1
      BCF         PIR1,3                     ;SSPIF
             RETURN
    ;----------------------------------------------------------------------
    WRTACKTEST
             BANKSEL     PIR1
             BCF         PIR1,3                    ;SSPIF
             BTFSS       PIR1,3
             GOTO        $-1
             RETURN               

     

    ;-----------------------------------------------------------------------------
    I2C_IDLE
             BANKSEL     SSPSTAT
             BTFSC      SSPSTAT,2            ;R_W
      GOTO       $-1
             MOVF       SSPCON2,0
      ANDLW      1FH
             BTFSS      STATUS,2             ;Z
             GOTO       $-3
             RETURN

    ;------------------------------------------------------------------------
    INIT_I2C
             BANKSEL    TRISC
             BSF        TRISC,SDA
             BSF        TRISC,SCL
      BCF        TRISE,WP
             BANKSEL    PORTE
             BCF        PORTE,WP
             BANKSEL    SSPADD

      MOVLW      9
             MOVWF      SSPADD
             BCF        SSPSTAT,6
      BSF        SSPSTAT,7
      BANKSEL    SSPCON
      MOVLW      38H
      MOVWF      SSPCON
            
             RETURN
    ;------------------------------------------------------------------------
    DELAY10MS
    MOVLW    0FFH
        MOVWF     7FH
    L1      MOVLW     0FFH
    MOVWF     7EH
    L2 DECFSZ    7EH,1
    GOTO      L2
    DECFSZ    7FH,1
            GOTO      L1
            RETURN
            END


    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>