Ⅰ 請問 用PIC 單片機 的 I/O 口,怎麼同時設置成為輸入、輸出。
看來這是個比較有爭議的話題喲,上面兩位都說DHLFAN說的不對,我倒是有點說法了,將埠配置為模擬輸入並不代表打開AD模塊,ADGO沒有置位嘛.並且當埠為模擬輸入時候內部就等於是懸空的,因為AD模塊是通過一個多路開關選擇和某個通道接通的,平時不被選中的通道基本等於懸空,選中的通道也基本算是接一個幾十PF的保持電容,電流幾乎為0。在說說設置為普通輸入和輸出的問題,當設置為普通輸入時,雖說此時為高阻抗,但是晶元內部的整形電路需要工作,(這個不要解釋了吧?)此時你再將這個埠懸空的話,因為輸入阻抗高的原因,在實際使用時內部的整形電路不斷翻轉,要消耗不少電流的哦,另外什麼WDT BOD,不再問題范圍就不說了,還有降低頻率這些個地球人都知道!!什麼?你不知道內部的整形電路是啥東東?好吧,我就說說,大家都知道設置為普通輸入(數字輸入)的埠只能讀到兩個狀態,0、1 。但是當此埠的電壓為0.5V時呢?大家都會說為0為1V時呢?大家還是說為0.為2.5V呢????大家會說為1了吧???為什麼2.5V會為1?為什麼1V時不為1,(當然事實上還有不同邏輯電平(特性)的輸入端。什麼施密特輸入啊,TTL輸入啊就不說了)這個時候就是靠內部的整形電路來將這個埠的電壓值轉換為0或者1,當設置為普通輸入時這個電路就要幹活了,而且是每個埠有一個,就等著消耗電流吧。
Ⅱ PIC單片機I/O口輸出高電平時電壓多高
PIC系列的單片機通用電壓多為5V和3.3V,如果使用13V的電源系統需要加降壓穩壓電路,比較簡單的3端穩壓器就可以了。
IO輸出高電壓接近於電源電壓,也就是5V或3.3V左右,可以驅動某些MOS管,但要有與之相匹配的柵極開通電壓,4.5V開通的MOS管比較容易買到,3V以下的品種少一些;
如果負載的介面電平比較高的話,最好使用電平轉換電路進行連接,比如74ls07、ULN2003等
Ⅲ PIC單片機的IO口如何操作更穩定
問題問的不清楚
我就是做這個的 ,我常用的是 PIC18F4480 對IO口進行讀寫操作一般都沒什麼問題
寫程序
一般先初始化,設定IO口方向 輸入還是輸出 TRIS
設定IO口初態 高電平還是低電平 PORT
此步驟完成後
對IO口通常都不是直接操作 比如RA0=0;(可以這樣寫但不推薦)
通常的做法是設定中間變數 TEMP
在執行函數中對TEMP進行一系列賦值和運算
最終在主函數中把TEMP的值付給(比如)A口
PORTA=TEMP;
這東西沒什麼復雜的知識在裡面,結合數據手冊看 結合前輩的程序看 哪怕你C語言修為不是很高,也能寫出來的
Ⅳ PIC單片機的某些I/O口沒有電平變化喚醒功能,要如何讓這些I/O口也能喚醒程序
PIC單片機有電平變化喚醒功能的。一般是PORTB口上可以有電平變化喚醒。(前提是這款晶元要有PORTB口,有的很簡單的PIC是沒有這個口的。比如PIC10系列PIC12系列。PIC16以上系列都有PORTB口的。)
其實不僅僅是PIC所有的單片機如果要從休眠模式下喚醒用的方法都是差不多的。
1. 復位(上電復位,看門狗復位等等)
2. 就是你要用到的方法。中斷喚醒。比如說像這個電平變化喚醒。當你PORTB某一個或幾個I/O上電平有變化。則晶元產生一個中斷標志位。利用中斷然後就能喚醒單片機了。
我幫你查了一款用的比較多的PIC16F886晶元。
根據數據手冊它的中斷喚醒有以下幾種:
下列外設中斷可以將器件從休眠狀態喚醒:
1. TMR1 中斷。Timer1 必須用作非同步計數器。
2. ECCP 捕捉模式中斷。
3. A/D 轉換(當A/D 時鍾源為FRC 振盪器時)。
4. EEPROM 寫操作完成。
5. 比較器輸出狀態變化。
6. 電平變化中斷。
7. 來自INT 引腳的外部中斷
8. EUSART 間隔檢測, I2C 從動模式。
Ⅳ ,PIC單片機IO口什麼時候設置為輸入,什麼時候設置為輸出,這個輸入輸出的我好像還不是很明白原理,
如果要用某個引腳控制一個東西,如讓它高電平或低電平,則這個引腳就得設置為輸出。如果你想知道某個引腳是高電平或低電平,則這個引腳就得設置為輸入。還有如果作為AD轉換,相應的引腳就得做為輸入。設置引腳是輸出或輸入,就是把對應的TRISx的寄存器的位設為0為1,這個容易記住:0象OUTOUT的第一個字母,它就是輸出;1象INPUT的第一個字母,它就是輸入。
單片機,全稱單片微型計算機(英語:Single-Chip Microcomputer),又稱微控制器(Microcontroller),是把中央處理器、存儲器、定時/計數器(Timer/Counter)、各種輸入輸出介面等都集成在一塊集成電路晶元上的微型計算機。與應用在個人電腦中的通用型微處理器相比,它更強調自供應(不用外接硬體)和節約成本。它的最大優點是體積小,可放在儀表內部,但存儲量小,輸入輸出介面簡單,功能較低。由於其發展非常迅速,舊的單片機的定義已不能滿足,所以在很多應用場合被稱為范圍更廣的微控制器;從上世紀80年代,由當時的4位、8位單片機,發展到現在的32位300M的高速單片機。
Ⅵ PIC單片機IO口無法控制
在PIC18系列裡,PORT寄存器不是用來做輸出的,LAT才是用來做輸出的。如LATB=0xff;
PORT寄存器是用來讀取IO的狀態,而LAT其實是讀-修改-寫操作。
如果對PORT寄存器進行寫操作,只是會將你要寫的數據放到IO口的鎖存器中,但並不會發送到IO上。而寫LAT則是先讀鎖存器的數據,然後像用PORT操作那樣將其修改寫到IO口的鎖存器中,最後發送到IO引腳上。
其實,數據手冊上在IO口那一章的開始就明確指出:
「每個埠有三個與其相關的寄存器」
「TRIS寄存器(數據方向)」
「PORT寄存器(讀取引腳的電平)」
「LAT寄存器(輸出鎖存)」
玩PIC,只要你仔細閱讀對應的數據手冊,你不需要看其他書籍都能弄懂。而且大部分都有官方中文版。
Ⅶ PIC單片機在讀I/O口的時候需要對寄存器寫一嗎
對於PIC單老蔽搏片機來講,要想讀出某個I/O口的電平值,首先應該設置管腳為輸入方式(對應寄存器TRISx),然後讀取管腳電平值就可以了。當然如果管腳有第三功能(例如AD口或者SPI匯流排等)還要考慮首先要設置其為普通數並蔽字IO口。例如讀取RA0口的電平值:
ANSELA = 0x00; //因為RA0一般都有AD的功能,通過設置模擬選擇寄存器使RA口全為數字IO口
TRISA = 0x01; //TRISx為方向控制寄存器,0為輸出,1為輸入。
...//其他操作
unsigned char value = 0; //聲明個變數
value = RA0; //這樣就能讀出RA0埠的電侍祥平值了,value的值即為讀到的RA0的值
Ⅷ PIC單片機IO口無法控制
在PIC18系列裡,PORT寄存器不是用來做輸出的,LAT才是用來做輸出的。如LATB=0xff;
PORT寄存器是用來讀取IO的狀態,而LAT其實是讀-修改-寫操作。
如果對PORT寄存器進行寫操作,只是會將你要寫的數據放到IO口的鎖存器中,但並不會發送到IO上。而寫LAT則是先讀鎖存器的數據,然後像用PORT操作那樣將其修改寫到IO口的鎖存器中,最後發送到IO引腳上。
其實,數據手冊上在IO口那一章的開始就明確指出:
「每個埠有三個與其相關的寄存器」
「TRIS寄存器(數據方向)」
「PORT寄存器(讀取引腳的電平)」
「LAT寄存器(輸出鎖存)」
玩PIC,只要你仔細閱讀對應的數據手冊,你不需要看其他書籍都能弄懂。而且大部分都有官方中文版。
Ⅸ pic單片機上電復位後所有I/O引腳將被 成什麼工作方式
復位後IO腳為輸入狀態。默認是普通的IO口作為數字式輸入模式,就是對應tris位被配置成1。
而如果這個IO引腳復用做AD輸入的話,就默認配置為模擬輸入。如果還被復用為和比較器相關的引腳,那麼就被配置為比較器輸入。
有的IO引腳復用為MCLR上電復位引腳,那麼它會根據你程序設置的配置位來決定其復位後是作為IO輸入還是作為MCLR引腳。
簡介
單片機也被稱為單片微控器,屬於一種集成式電路晶元。在單片機中主要包含CPU、只讀存儲器ROM和隨機存儲器RAM等,多樣化數據採集與控制系統能夠讓單片機完成各項復雜的運算,無論是對運算符號進行控制,還是對系統下達運算指令都能通過單片機完成。
由此可見,單片機憑借著強大的數據處理技術和計算功能可以在智能電子設備中充分應用。簡單地說,單片機就是一塊晶元,這塊晶元組成了一個系統,通過集成電路技術的應用,將數據運算與處理能力集成到晶元中,實現對數據的高速化處理。
Ⅹ 增強型PIC單片機IO口讀取問題
設置TRIS為輸入
設置ANSEL為digital
參考「http://ww1.microchip.com/downloads/en/DeviceDoc/41391D.pdf」
的120頁, 12.2.2
如果都做了還不行,那應該是晶元的問題。
另外,如果要讀取編程口MCLR, 那麼還需要額外的設置。