音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

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

設(shè)計(jì)問題請教

作者:羽翔 欄目:單片機(jī)
設(shè)計(jì)問題請教
我用PIC16C56芯片實(shí)現(xiàn)I2C slave模式,其中需檢測一start信號,波形如下:
SDA-------------------
                      |
                      |
                      ------------------------
SCL----------------------------------
                                     |
                                     |
                                     ---------
在SCL高電平期間,如果檢測到有一SDA的下降沿,就為start信號
由于56芯片沒有中斷功能,我將RTCC腳和RB的第0腳短接,并和MASTER方的SCL腳相連,用來檢測SCL的上升沿和低電平,RB的第1腳和MASTER的SDA相連,其子程序如下:

DETECTSTART
        INCF    LFSR30,F
DETECTSCL
          BTFSS   RTCC,0          ; high?
        GOTO    DETECTSCL
        BTFSS   RB,SDA
        GOTO    DETECTSCL
SDA0
        BTFSS   RB,SCL
        GOTO    DETECTSCL
      BTFSC   RB,SDA         ; SDA goes low during SCL high?
        GOTO    SDA0
        CLRF    RTCC
        RETLW   0

可是檢測的時(shí)候卻有一些誤判,不知各位DX有何高見,有什么辦法可以解決,請賜教!

* - 本貼最后修改時(shí)間:2003-6-4 10:05:02 修改者:羽翔

2樓: >>參與討論
羽翔
怎么沒人回答?
幫幫忙啦!

3樓: >>參與討論
羽翔
哎!
全部是我自言自語,難道這里就沒高手嗎?

4樓: >>參與討論
張明峰
各有方法不同
沒有時(shí)間去分析你用TMR0(RTCC)測IIC總線START條件的玄機(jī)。要是我,最簡單的方法就象下面的代碼所示:

DETECTSTART
     movf    PORTB,w      ;讀PORTB
     andlw   b'11'        ;只關(guān)心RB1/0
     xorlw   b'11'        ;
     skpz                 ;RB1/0 = 11
     goto    DETECTSTART  ;等待IIC總線為Idle

     ;等待START條件
WAIT_START
     movf    PORTB,w      ;讀PORTB
     andlw   b'11'        ;只關(guān)心RB1/0
     xorlw   b'01'        ;
     skpnz                ;RB1/0 != 01
     retlw   0            ;START條件滿足,結(jié)束
     xorlw   b'01'^b'11'  ;RB1/0 = 11?
     skpnz
     goto    WAIT_START   ;等待IIC總線產(chǎn)生START
     goto    DETECTSTART  ;RB1/0既不時(shí)11也不是01,重新開始



5樓: >>參與討論
羽翔
RE:張明峰
非常感謝你的回答,我馬上就去試一下。
我用RTCC主要是考慮到這個(gè)引腳是SMT輸入,可以濾波(用于工業(yè)控制,要求抗干擾性強(qiáng)),省卻了幾條濾波語句(要與IIC的MASTER方速度匹配,語句多了速度就跟不上了),再者是因?yàn)橥ㄟ^直接檢測寄存器RTCC的第0位就可知道RTCC腳上有沒有來一個(gè)上升沿。

6樓: >>參與討論
羽翔
還有沒有誰能給點(diǎn)意見啊
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
那種PIC單片機(jī)可記1--99999個(gè)TTL脈沖數(shù)
偶會C51的編程,現(xiàn)在想學(xué)PIC,應(yīng)該看什么書?
怎么我的PICC8.01PL3里沒有16F675要用的PIC16630.H文件.
請教怎樣用C調(diào)用pic的匯編程序
茫然
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號