導航:首頁 > 操作系統 > 單片機io口原理

單片機io口原理

發布時間:2023-08-25 19:57:06

單片機控制IO口輸出高低電平的原理是什麼

名稱:IO口高低電平控制
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件
包含特殊功能寄存器的定義
/*------------------------------------------------
主函數
------------------------------------------------*/
void main (void)
{
P1 = 0xFF; //P1口全部為高電平,對應的LED燈全滅掉,ff
換算成二進制是 1111 1111
P1 = 0xfe; //P1口的最低位點亮,可以更改數值是其他的
燈點亮
//0xfe是16進制,0x開頭表示16進制數,fe換
算成二進制是 1111 1110
while (1) //主循環
{
//主循環中添加其他需要一直工作的程序
}
}

② 請詳解下單片機的 並行IO口,串列IO口,及二者區別

單片機串列通訊與並行通訊區別
一條信息的各位數據被逐位按順序傳送的通訊方式稱為串列通訊。串列通訊的特點是:數據位傳送,傳按位順序進行,最少只需一根傳輸線即可完成,成本低但送速度慢。串列通訊的距離可以從幾米到幾千米。 根據信息的傳送方向,串列通訊可以進一步分為單工、半雙工和全雙工三種。信息只能單向傳送為單工;信息能雙向傳送但不能同時雙向傳送稱為半雙工;信息能夠同時雙向傳送則稱為全雙工。 串列通訊又分為非同步通訊和同步通訊兩種方式。在單片機中,主要使用非同步通訊方式。

串列通訊中,兩個設備之間通過一對信號線進行通訊,其中一根為信號線,另外一根為信號地線,信號電流通過信號線到達目標設備,再經過信號地線返回,構成一個信號迴路。

初級讀者會產生疑問:為何不讓信號電流從電源地線返回?答案:公共地線上存在各種雜亂的電流,可以輕而易舉地把信號淹沒。因此所有的信號線都使用信號地線而不是電源地線,以避免干擾。

這一對信號線每次只傳送1bit(比特)的信號,比如1Byte(位元組)的信號需要8次才能發完。傳輸的信號可以是數據、指令或者控制信號,這取決於採用的是何種通訊協議以及傳輸狀態。串列信號本身也可以帶有時鍾信息,並且可以通過演算法校正時鍾。因此不需要額外的時鍾信號進行控制。

並行通訊中,基本原理與串列通訊沒有區別。只不過使用了成倍的信號線路,從而一次可以傳送更多bit的信號。

並行通訊通常可以一次傳送8bit、16bit、32bit甚至更高的位數,相應地就需要8根、16根、32根信號線,同時需要加入更多的信號地線。比如傳統的PATA線路有40根線,其中有16根信號線和7根信號地線,其他為各種控制線,一次可以傳送2Byte的數據。並行通訊中,數據信號中無法攜帶時鍾信息,為了保證各對信號線上的信號時序一致,並行設備需要嚴格同步時鍾信號,或者採用額外的時鍾信號線。

通過串列通訊與並行通訊的對比,可以看出:串列通訊很簡單,但是相對速度低;並行通訊比較復雜,但是相對速度高。更重要的是,串列線路僅使用一對信號線,線路成本低並且抗干擾能力強,因此可以用在長距離通訊上;而並行線路使用多對信號線(還不包括額外的控制線路),線路成本高並且抗干擾能力差,因此對通訊距離有非常嚴格的限制。

③ 單片機IO口的概述

凌陽單片機IOA,IOB口的一些簡單設置和C語言應用函數 P_IOA_Buffer (讀/寫) (01H)
A口的數據向量單元,用於向數據向量寄存器寫入或從該寄存器讀出數據。當A口處於輸入狀態時,寫入是將A口的數據向量寫入A口的數據寄存器;讀出則是從A口數據寄存器內讀其數值。當A口處於輸出狀態時,寫入輸出數據到A口的數據寄存器。
P_IOA_Dir(讀/寫)(02H)
A口的方向向量單元,用於用來設置A口是輸入還是輸出,該方向控制向量寄存器可以寫入或從該寄存器內讀出方向控制向量。Dir位決定了口位的輸入/輸出方向:即『0』為輸入,『1』為輸出。
P_IOA_Attrib(讀/寫)(03H)
A口的屬性向量單元,用於A口屬性向量的設置。
P_IOA_Latch(讀)(04H)
讀該單元以鎖存A口上的輸入數據,用於進入睡眠狀態前的觸鍵喚醒功能的啟動。 方向向量Dir、屬性向量Attrib和數據向量Data分別代表三個控制口。這三個口中每個對應的位組合在一起,形成一個控制字,來定義相應I/O口位的輸入/輸出狀態和方式。
表3.1具體表示了如何通過對I/O口位的方向向量位Dir、屬性向量位Attrib以及數據向量位Data進行編程,來設定口位的輸入/輸出狀態和方式。
由表3.1可以得出以下一些結論:
Dir位決定了口位的輸入/輸出方向:即『0』為輸入,『1』為輸出。
Attrib位決定了在口位的輸入狀態下是為懸浮式輸入還是非懸浮式輸入:即『0』為帶上拉或下拉電阻式輸入,而『1』則為懸浮式輸入。在口位的輸出狀態下則決定其輸出是反相的還是同相的;『0』為反相輸出,『1』則為同相輸出。
Data位在口位的輸入狀態下被寫入時,與Attrib位組合在一起形成輸入方式的控制字『00』、『01』、『10』、『11』,以決定輸入口是帶喚醒功能的上拉電阻式、下拉電阻式或懸浮式以及不帶喚醒功能的懸浮式輸入。Data位在口位的輸出狀態下被寫入的是輸出數據,不過,數據是經過反相器輸出還是經過同相緩存器輸出要由Attrib位來決定。
例如,假設要把A口的Bit0定義成下拉電阻式的輸入口,則A口_Dir、_Attrib和_Data向量的三個相應的Bit0應組合設為『000』。如果想把A口的Bit1定義成懸浮式並具有喚醒功能的輸入口,只需將Dir、Attrib和Data向量中相應的Bit1組合設置為『010』即可。
A口的IOA0~IOA7作為喚醒源,常用於鍵盤輸入。要激活IOA0~IOA7的喚醒功能,必須讀P_IOA_Latch單元,以此來鎖存IOA0~IOA7管腳上的鍵狀態。隨後,系統才可通過指令進入低功耗的睡眠狀態。當有鍵按下時,IOA0~IOA7的輸入狀態將不同於其在進入睡眠前被鎖存時的狀態,從而引起系統的喚醒。
表3.1 Direction Attribution Data 功能 是否帶喚喚醒功能 功能描述 0 0 0 下拉 是 帶下拉電阻的輸入管腳 0 0 1 上拉 是 帶上拉電阻的輸入管腳 0 1 0 懸浮 是 懸浮式輸入管腳 0 1 1 懸浮 否 懸浮式輸入管腳 1 0 0 高電平輸出
(帶數據反相器) 否 帶數據反相器的高電平輸出
(當向數據位寫入「0」 時輸出「1」) 1 0 1 低電平輸出
(帶數據反相器) 否 帶數據反相器的低電平輸出
(當向數據位寫入「1」時輸出「0」) 1 1 0 低電平輸出 否 帶數據緩存器的低電平輸出
(無數據反相功能) 1 1 1 高電平輸出 否 帶數據緩存器的高電平輸出
(無數據反相功能) P_IOB_Data(讀/寫)(05H)
B口的數據單元,用於向B口寫入或從B口讀出數據。當B口處於輸入狀態時,讀出是讀B口管腳電平狀態; 寫入是將數據寫入B口的數據寄存器。當B口處於輸出狀態時,寫入輸出數據到B口的數據寄存器。
P_IOB_Buffer(讀/寫)(06H)
B口的數據向量單元,用於向數據寄存器寫入或從該寄存器內讀出數據。當B口處於輸入狀態時,寫入是將數據寫入B口的數據寄存器;讀出則是從B口數據寄存器里讀其數值。當B口處於輸出狀態時,寫入數據到B口的數據寄存器。
P_IOB_Dir(讀/寫)(07H)
B口的方向向量單元,用於設置IOB口的狀態。『0』為輸入,『1』為輸出。
P_IOB_Attrib(讀/寫)(08H)
B口的屬性向量單元,用於設置IOB口的屬性。 B口除了具有常規的輸入/輸出埠功能外,還有一些特殊的功能,如下表3.2所示: 口位 特殊功能 功能描述 備注 IOB0 SCK 串列介面SIO的時鍾信號 IOB1 SDA 串列介面SIO的數據傳送信號 IOB2 1,EXT1
2, Feedback_Output1 1,外部中斷源(下降沿觸發)
2,與IOB4組成一個RC反饋電路,以獲得振盪信號,作為外部中斷源EXT1 1,IOB2 設為輸入狀態
2,設置IOB2為反相輸出方式 IOB3 1,EXT2
2,Feedback_Output2 1,外部中斷源(下降沿觸發)
2,與IOB5組成一個RC反饋電路,以獲得一個振盪信號,作為外部中斷源EXT2 1,IOB3 設為輸入狀態
2,設置IOB3為反相輸出方式 IOB4 Feedback_Input1 IOB5 Feedback_Input2 IOB6 --- IOB7 Rx 通用非同步串列數據接收埠 IOB8 APWMO TimerA脈寬調制輸出 IOB9 BPWMO TimerB脈寬調制輸出 IOB10 Tx 通用非同步串列數據發送埠 IO埠設置的C庫函5
SPCE061.lib中提供了相應的API函數如下所示:
1, 函數原型
void Set_IOA_Dir(unsigned int);
void Set_IOB_Dir(unsigned int);
功能說明 設置IO Dircetion信息
用法 Set_IOA_Dir(Direction_A);
Set_IOB_Dir(Direction_B);
參數 1代表輸出,0代表輸入
返回值 無
2,函數原型
unsigned int Get_IOA_Dir(void);
unsigned int Get_IOB_Dir(void);
功能說明 獲取IO Dircetion信息
用法 Direction_A =Get_IOA_Dir();
Direction_B =Get_IOB_Dir();
返回值 1代表輸出,0代表輸入
3.函數原型
void Set_IOA_Data(unsigned int);
void Set_IOB_Data(unsigned int);
功能說明 設置IO Data信息
用法 Set_IOA_Data(Data_A);
Set_IOB_Data(Data_B);
參數 1代表高電平,0代表低電平
返回值 無
4,函數原型
unsigned int Get_IOA_Data(void);
unsigned int Get_IOB_Data(void);
功能說明 獲取IO Data信息
用法 Data_A =Set_IOA_Data();
Data_B =Set_IOB_Data();
參數 無
返回值 1代表高電平,0代表低電平
5,函數原型
void Set_IOA_Buffer(unsigned int);
void Set_IOB_Buffer(unsigned int);
功能說明 設置IO Buffer信息
用法 Set_IOA_Buffer(Buffer_A);
Set_IOB_Buffer(Buffer_B);
參數 1代表高電平,0代表低電平
返回值 無
6.函數原型
unsigned int Get_IOA_Buffer(void);
unsigned int Get_IOB_Buffer(void);
功能說明 獲取IO Buffer信息
用法 Buffer_A =Set_IOA_Buffer();
Buffer_B =Set_IOB_Buffer();
參數 無
返回值 1代表高電平,0代表低電平
7.函數原型
void Get_IOA_Latch(void);
功能說明 讀P_IOA_Latch單元,以此來鎖存IOA0~IOA7管腳上的鍵狀態
用法 Get_IOA_Latch();
參數 無
返回值 無
另外還有:
sp_lib.asm中定義了兩個很有用的IO API,在C中可以調用。它們是SP_Init_IOA(),SP_Init_IOB()。
函數原型
void SP_Init_IOA(unsigned int, unsigned int, unsigned int);
void SP_Init_IOB(unsigned int, unsigned int, unsigned int);
功能說明 同時設置IO Dircetion、Attribution和Data信息
用法 SP_Init_IOA(Direction_A, Data_A, Attribution_A);
SP_Init_IOB(Direction_B, Data_B, Attribution_B);
參數
返回值 無

④ 單片機內部4個並行I/O口各有什麼異同其作用是什麼

p0是雙向數據口用作數據傳輸和低位地址輸出,P1-P3有內部上接電阻,叫准雙向口,P1無特殊功能,P2可輸出高位地址,P3有特殊功能,如中斷,計數等

⑤ 單片機的I/O口是什麼意思

單片機的I/O口的意思是:I/O是 input/output的縮寫,即輸入輸出埠。

每個設備都會有一個專用的I/O地址,用來處理自己的輸入輸出信息。CPU與外部設備、存儲器的連接和數據交換都需要通過介面設備來實現,前者被稱為I/O介面,而後者則被稱為存儲器介面。


(5)單片機io口原理擴展閱讀:

單片機I/O口的輸出模式:

1、准雙向口輸出

准雙向口輸出就是可作為輸出也可作為輸入口,因此這個口是不定的,是准雙向類型,不用重新I/O口的輸出狀態 。准雙向口有3個上拉晶體管以便根據不同的需要設置表不同的參數。這三個晶體管分別是起到強上拉、極弱上拉、弱上拉功能。

2、推挽輸出

推挽輸出是因為它的輸出結構類似於推挽結構,它是一種由兩個三極體(或者其他MOS管等)分別受到一個信號的控制,這信號的互補的,就是說只有一個三極體導通,一個三極體導通的時候另一個就要截止。

推挽輸出可以輸出高電平,也可以輸出低電平。當鎖存器為「1」時候可以持續提供強上拉,這種輸出結構可以驅動需要很大電流的器件。

3、開漏輸出

這種結構作為邏輯輸出時候,必須要有外部上拉,上拉電阻要為10K左右比較好,一般是通過電阻加到VCC電源,這樣才可以讀取外部狀態,也就是說此時的開漏輸出的可以作為外部的輸入I/O口。



⑥ 單片機是如何控制IO口輸出高低電平的 不要告訴我試靠程序 我要的是原理 謝謝

單片機控制此漏滑端搜喚輸出相應值,IO輸出端輸出相應值

簡單的森臘反相器示意圖

閱讀全文

與單片機io口原理相關的資料

熱點內容
教育系統源碼達標 瀏覽:884
音效卡驅動安裝程序在哪個文件夾 瀏覽:56
錢還完了銀行不給解壓 瀏覽:169
linux的系統調用表 瀏覽:750
php怎麼轉換頁面 瀏覽:546
我的世界買了伺服器之後怎麼開服 瀏覽:828
r1234yf汽車空調壓縮機 瀏覽:145
ftp伺服器地址欄 瀏覽:900
linux圖形分區 瀏覽:965
安徽到遼寧源碼 瀏覽:577
libs安卓的文件夾叫什麼 瀏覽:871
生意圈app是什麼意思 瀏覽:397
linuxarcgisserver 瀏覽:234
加密pdf怎麼修改文件 瀏覽:138
紅米刷機無命令怎麼辦 瀏覽:356
啥叫美國谷歌外包程序員 瀏覽:260
雲伺服器管家婆 瀏覽:440
發郵件命令 瀏覽:354
程序員好做嗎工作好嗎 瀏覽:886
雲電腦伺服器維護一個月多少錢 瀏覽:882