|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | 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 |
想討論一下TRISX=0之后PORT口的電平狀態(tài) |
| 作者:xieyuanbin 欄目:單片機(jī) |
我知在復(fù)位后I/O口在高阻輸入狀態(tài),卻不知在TRISX=0后,I/O口在什么電平。后來有本書介紹純軟件I2C通訊時(shí)僅僅通過BCF TRIS*,BIT來使I/O口在低電平和高阻狀態(tài)轉(zhuǎn)換,當(dāng)時(shí)稍試了一下,覺得有些問題,但由于時(shí)間問題沒試下去。前一段時(shí)間又有程序必須使I/O口在低電平和高阻狀態(tài)切換,無奈PIC不支持推挽和開漏之間的選擇,只好又重新和TRIS*過不去,但發(fā)現(xiàn)事實(shí)并不如想象那么簡單,程序有時(shí)行,有時(shí)不行,我就用我現(xiàn)在用的芯片16F72測試,在A、B、C三個(gè)口分別接一個(gè)LED并通過電阻高掛,其中B口打開弱上拉,A口設(shè)置成數(shù)字模式,不用的口懸空,用一個(gè)簡單的程序來隔一定時(shí)間改變TRIS的狀態(tài)。測試結(jié)果有些看不懂,芯片使用外部RC振蕩: 第一次上電:程序如我所愿,在TRIS=1時(shí)LED滅,TRIS=0時(shí)LED亮。 第二次上電:A、C口LED如上,B口始終不亮,經(jīng)測試,B口在TRISB=0時(shí)輸出高電平…… 第三次上電:用導(dǎo)線使B口對(duì)地放電,然后上電,結(jié)果又和第一次一樣; 第N此上電:每次上電時(shí)都用導(dǎo)線使所有的口對(duì)地放電之后上電,結(jié)果B口有大約70%的機(jī)會(huì)在TRISB=0時(shí)輸出高電平,C口有大約20%的機(jī)會(huì)在TRISC=0是輸出高電平,A口則最忠實(shí),一次也沒有出現(xiàn)LED不亮的情況。 每次上電的結(jié)果可能都不一樣,但是上電后就不會(huì)再改變LED顯示的狀態(tài)。 這種現(xiàn)象是DATASHEET里面沒有提到的。 我想知道的是,是否PIC的設(shè)計(jì)人員也不知道TRIS之后端口的電平?是否所有系列的PIC都一樣? 以前沒有碰到這樣的情況,因?yàn)槲颐看味挤浅P⌒,在TRIS之后CLR PORT.現(xiàn)在想起來,還真的有點(diǎn)后怕。 * - 本貼最后修改時(shí)間:2004-9-20 21:00:55 修改者:xieyuanbin |
| 2樓: | >>參與討論 |
| 作者: wuyibang 于 2004/9/20 22:54:00 發(fā)布:
trisx只是設(shè)置I/O的狀態(tài),好像不應(yīng)該用來..... trisx只是設(shè)置I/O的狀態(tài),你好像把它當(dāng)成一條i/o的輸出輸入指令了吧 |
|
| 3樓: | >>參與討論 |
| 作者: 張明峰 于 2004/9/21 7:51:00 發(fā)布:
小問題 上電時(shí)TRISx是確定的全1,但PORTx的值卻不定。只要改變一下順序:在設(shè)置TRISx之前先設(shè)置PORTx,即可滿足一切要求了。 用TRISx控制單片機(jī)引腳狀態(tài)時(shí)需注意“讀-修改-寫”的問題。PORTx有可能在暗地里被改而你沒有及時(shí)更新處理。 |
|
| 4樓: | >>參與討論 |
| 作者: xieyuanbin 于 2004/9/21 10:27:00 發(fā)布:
的確可以這樣設(shè)定: 看到張工書上提到,PORT口有一個(gè)鎖存器,鎖存器在輸入狀態(tài)下并不影響PORT口的值,我現(xiàn)在的理解是當(dāng)TRIS的值變成輸出時(shí)PORT口的狀態(tài)應(yīng)該等于鎖存器的狀態(tài)(不考慮外圍電路的影響) 我特地做了一下實(shí)驗(yàn),仍使用16F72,這下PORT口聽話了:))) 謝謝張工! TO:wuyibang 因?yàn)橛袝r(shí)需要PORT口工作在高阻狀態(tài)和低電平狀態(tài),類似于I/O口只有一個(gè)三極管拉到地,也就是只有吸入電流這樣的狀態(tài),而PIC又不支持開漏與推挽可選,所以只能這樣設(shè)定。這在普通I/O口模擬I2C通訊時(shí)必須要這樣設(shè)置。 |
|
| 5樓: | >>參與討論 |
| 作者: wuyibang 于 2004/9/22 0:35:00 發(fā)布:
謝謝喲,又學(xué)了好東西,請(qǐng)?jiān)徫业臒o知 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |