最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請(qǐng)問(wèn)張工

作者:shaoguang 欄目:單片機(jī)
請(qǐng)問(wèn)張工
張工你好:你書上的關(guān)于I2C通訊程序范例,都是通過(guò)驗(yàn)證的嗎?特別是PIC單片機(jī)通過(guò)I2C通訊,的硬件主模式程序,
我調(diào)試沒(méi)通過(guò)呀!!
我想請(qǐng)教一下用I2C時(shí)是采用硬件方式好調(diào)試那,還是用軟件模擬I2C方式好那?
我在一個(gè)板子里用兩片PIC16F877A采用I2C方式通訊,一個(gè)采用主模式,另一個(gè)采用中斷從模式.
請(qǐng)張工給個(gè)調(diào)試過(guò)的例子,多謝!!!

2樓: >>參與討論
xieyuanbin
這是我兩年前的發(fā)送例程,調(diào)試通過(guò)。
;這是一個(gè)由16F87X硬件I2C主模式向地址為76H的從設(shè)備SAA1064發(fā)送若干字節(jié)的源程序,
;發(fā)送的字節(jié)數(shù)包括從設(shè)備地址存在COUNTI2C中,發(fā)送時(shí)從BUFADD開(kāi)始依次讀取COUNTI2C個(gè)字節(jié)并發(fā)送.
;從設(shè)備為SAA1064T四LED八段數(shù)碼管顯示控制器,子地址從00H開(kāi)始,每寫入一個(gè)字節(jié)地址自動(dòng)增1.
;硬件主模式中,發(fā)送/接收時(shí)使用SSPADD作為波特率發(fā)生器的基數(shù),SCL的頻率為 晶體振蕩頻率/(4*(sspadd+1))
;本程序主要部分在PIC16F872向SSA1064芯片發(fā)送數(shù)據(jù)通訊中運(yùn)行通過(guò),
         LIST    P=PIC16F872
        INCLUDE "P16F872.INC"
CBLOCK  20H
BUFADD        ;從地址,76
BUFSADD        ;從設(shè)備子地址00開(kāi)始
BUFCOM        ;子地址為00H的控制字節(jié)
BUFDIS1        ;數(shù)據(jù)1
BUFDIS2        ;數(shù)據(jù)2
COUNTI2C    ;發(fā)送字節(jié)計(jì)數(shù)器
ENDC
    ORG    0x0000
    GOTO    START
START
    BSF    STATUS,RP0    ;BANK1
    MOVLW    B'11000'
    MOVWF    TRISC        ;設(shè)置SCL,SDA為輸入
    MOVLW    H'9'
    MOVWF    SSPADD        ;設(shè)置波特率發(fā)生器的波特率基數(shù),頻率=1M/(SSPADD+1)(晶振為4M)
    BCF    STATUS,RP0    ;BANK0
    CLRF    PORTC
    MOVLW    B'101000'    ;開(kāi)MSSP模塊,設(shè)置I2C為主控模式.SCL頻率為 振蕩頻率/(4*(sspadd+1)).這里約為100KHZ
    MOVWF    SSPCON
    MOVLW    H'76'
    MOVWF    BUFADD        ;將從設(shè)備地址76H存入
    CLRF    BUFSADD        ;從 從設(shè)備子地址為00開(kāi)始寫入
    MOVLW    B'11000'    ;將從設(shè)備控制字節(jié)寫入
    MOVWF    BUFCOM
    MOVLW    H'30'
    MOVWF    BUFDIS1
    MOVLW    H'4F'
    MOVWF    BUFDIS2        ;向從設(shè)備寫入的數(shù)據(jù).
    MOVLW    H'5'
    MOVWF    COUNTI2C    ;設(shè)置寫入字節(jié)數(shù)為5個(gè).
    CALL    SENDDATA    ;調(diào)用發(fā)送數(shù)據(jù)子程序.
    GOTO    START        ;返回.
;-----------------------------------------------------------------------------------
SENDDATA            ;主模式傳送開(kāi)始
    MOVLW    BUFADD        ;將第一個(gè)字節(jié)的地址存入FSR
    MOVWF    FSR
    BCF    PIR1,SSPIF    ;清中斷標(biāo)志.
    BSF    STATUS,RP0    ;BANK1
    BSF    SSPCON2,SEN    ;發(fā)送START條件.
    BCF    STATUS,RP0    ;BANK0
TESTSTART
    BTFSS    PIR1,SSPIF    ;查詢SSPIF中斷標(biāo)志,看是否收到START條件,也可在中斷中查詢.
    GOTO    TESTSTART
    BCF    PIR1,SSPIF    ;清中斷標(biāo)志.
LOOPSEND
    MOVF    INDF,0        ;將FSR所指向的寄存器中的內(nèi)容存入發(fā)送/接收緩存SSPBUF
    MOVWF    SSPBUF
TESTASK
    BTFSS    PIR1,SSPIF    ;1字節(jié)發(fā)送完成否?這里采用中斷標(biāo)志查詢方式,也可使用中斷方式;
    GOTO    TESTASK        ;這期間MCU通過(guò)SSPSR寄存器自動(dòng)向SDA(PORTC,4)逐位發(fā)送數(shù)據(jù),用戶可以干其它事等待中斷發(fā)生.
    BTFSC    PORTC,3        ;檢測(cè)是否有應(yīng)答.有應(yīng)答繼續(xù).
    GOTO    NOACK        ;無(wú)應(yīng)答轉(zhuǎn)無(wú)應(yīng)答處理程序.
    INCF    FSR        ;地址加1
    BCF    PIR1,SSPIF    ;清中斷標(biāo)志
    DECFSZ    COUNTI2C    ;計(jì)數(shù)器減1,
    GOTO    LOOPSEND    ;繼續(xù)發(fā)送下一個(gè)字節(jié)
    BSF    STATUS,RP0
    BSF    SSPCON2,PEN    ;發(fā)送STOP條件.
    BCF    STATUS,RP0
TESTSTOP
    BTFSS    PIR1,SSPIF
    GOTO    TESTSTOP
    BCF    PIR1,SSPIF
    RETURN
NOACK                ;無(wú)應(yīng)答處理子程序,這里略,一般是改變SSPADD里的值從新確定波特率
                ;或改變BUFADD里的值重新尋址
........
END



3樓: >>參與討論
shaoguang
多謝樓上的朋友!
 
4樓: >>參與討論
shaoguang
張工現(xiàn)在真的很忙了,希望他多來(lái)做做
 
5樓: >>參與討論
xieyuanbin
一個(gè)禮拜能見(jiàn)到他2-3次已經(jīng)不錯(cuò)了。
老是亂跑的。

6樓: >>參與討論
wurg
亂跑
亂跑是為了找黃金.

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
RI-R6S-001A
picc探討:圣經(jīng)P405中清零問(wèn)題!
請(qǐng)教版主,dsPIC和TMS320LF2407有的比嗎?
16F84偶爾也復(fù)位
中斷中寫入buf[0]與buf[a]有什么不同
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào)