當前位置:首頁 » 數據倉庫 » 如何看懂埠配置寄存器對應引腳
擴展閱讀
怎麼清除預覽圖片的緩存 2022-11-30 14:15:11
c語言創建有序鏈表 2022-11-30 14:08:06

如何看懂埠配置寄存器對應引腳

發布時間: 2022-09-25 08:41:16

1. 通用輸入輸出引腳如何通過專用寄存器控制

通用輸入輸出引腳通過專用寄存器控制方法如下:S3C2440有130個I/O埠,分為A-J共9組:GPA、GPB,GPJ,可以通過設置寄存器來確定某個引腳用於輸入、輸出還是特殊功能,比如:可以設置GPH6作為輸入、輸出、或者用於串口,直接進行控制。

通過寄存器來操作GPxCON寄存器它用於配置引腳的功能埠A與埠B-J在功能上有所不同,GPACON中每一位對應一根引腳共23根引腳當某位為0時,對應引腳為輸出。此時在GPADAT中相應位寫入0或1,讓此引腳輸出低電平或高電平,當某位被設為1時,對應引腳為地址線或用於地址控制,此時GPADAT保留不用。

GPACON通常被設為全1,以便訪問外部存儲設備埠B-J在寄存器操作上完全相同,PxCon中每兩位控制一根引腳,00表示輸入,01表示輸出,10表示特殊功能,11保留不用。

GPxDAT寄存器它用於讀寫引腳,當引腳被設為輸入時,讀此寄存器得到對應引腳的電平狀態是高還是低;當引腳被設為輸出時,寫此寄存器相應位可令此引腳輸出高低電平。

GPxUP寄存器GPxUP,某位為1時,相應引腳無內部上拉電阻,為1時,相應引腳使用內部上拉電阻上拉電阻、下拉電阻的作用在於,當GPIO引腳出於第三態非高低電平,而是高阻態,即相當於沒接晶元時,它的電平狀態由上拉電阻和下拉電阻確定,這樣就可以實現控制了。

2. 埠配置寄存器有哪兩種

埠配置寄存器分別為埠配置低寄存器(CRL)和埠配置高寄存器(CRH)。

每四位配置一個埠,如11 01,11就是選擇開啟功能,01就是選擇模式和確定最大速度,但有一點不一樣,低寄存器的偏移地址為0x00,高寄存器的偏移地址為0x04。

以PC15為示例,相應埠配置器GPIOA_CRL地址為GPIOA的基址+上偏移量,為0x40011004``,而這個埠要開啟,所以要使對應位為相應的值,我這里是0x30000000,設置推挽輸出並設置最大速度為2Mhz。

接下來就是配置埠輸出寄存器(ORD),可以看到偏移量為0xc,所以該寄存器的地址等於埠的基址加上偏移量,在相應的位賦值可以控制輸出電壓,0為低電壓,1為高電壓,以PA7引腳為例子,想要輸出高電壓,就需要在第八位賦1。

埠配置寄存器編譯的方法:

使用mcuisp軟體將程序燒錄到最小版上面,先選擇編譯生成的.hex文件,然後點擊開始編譯,也可以先讀取器件信息再編譯。


3. 埠配置寄存器CRH

這是用I/O口寄存器定義的方法,其實就是
GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12; //把PG11定義為輸入模式,即
GPIOG->CRH=0XFFFF8FFF;則寄存器位配置CNF1、CNF0、MODE1、MODE0分別是1000.
同理GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;//是把PG11定義為推挽輸出模式,即
GPIOG->CRH&=0XFFFF3FFF;則寄存器位配置CNF1、CNF0、MODE1、MODE0分別是0011.

4. 關於埠寄存器和鎖存器的問題

針對C8051F系類單片機的埠初始化步驟如下:
1.
用埠輸入方式寄存器(PnMDIN)選擇所有埠引腳的輸入方式(模擬或數字)。
2.
用埠輸出方式寄存器(PnMDOUT)選擇所有埠引腳的輸出方式(漏極開路或推挽)。
3.
用埠跳過寄存器(PnSKIP)選擇應被交叉開關跳過的那些引腳。
4.
將引腳分配給要使用的外設(XBR0、XBR1、XBR2)。
5.
使能交叉開關(XBARE
=
1)。
埠鎖存器是一個硬體電路模塊,用於輸出信號穩定和輸入信號鎖存的具體固件。
埠寄存器是為了方便程序員讀寫埠數據而在數據存儲空間開辟的一個內存單元。每個埠寄存器都有其自己固定的地址,每個單元是個8位的空間,對應埠的8個引腳。
編程序的時候我們很少操作到鎖存器,因為一般情況下寄存器的內容和鎖存器的內容應該是一致的。但是在微控制器中,一條匯編寫埠代碼(讀埠代碼)是分好幾條微控制指令的:
首先是寫匯流排(即,寫埠鎖存器,匯流排和鎖存器向連);
然後是控制輸出。
為什麼要在配置引腳為輸入的時候向寄存器寫「1」呢。這要看內部電路圖,如下:
很明顯,要讀入數據Q2必須處於截止狀態才行,否則讀入的數據就是0.這就是向埠寫「1」的作用。當然並不是每次讀數據前都要寫1.只要埠輸出配置沒有變化,只要在初始化的時候寫一次就夠了,因為輸出埠有輸出鎖存,可以保持Q2的狀態截止。

5. 單片機的引腳和寄存器的關系

對引腳的操作就是對寄存器的操作,因此如果寫寄存器相應的引腳也會立即重寫。

6. 如何理解單片機P0~P3埠與特殊功能寄存器P0~P3的關系

51單片機
P0埠對應特殊寄存器地址:80H
P1埠對應特殊寄存器地址:90H
P2埠對應特殊寄存器地址:0A0H
P3埠對應特殊寄存器地址:0B0H
而且這四個寄存器是可以進行位定址操作的

7. 關於埠寄存器和鎖存器的問題

針對C8051F系類單片機的埠初始化步驟如下:

1. 用埠輸入方式寄存器(PnMDIN)選擇所有埠引腳的輸入方式(模擬或數字)。

2. 用埠輸出方式寄存器(PnMDOUT)選擇所有埠引腳的輸出方式(漏極開路或推挽)。

3. 用埠跳過寄存器(PnSKIP)選擇應被交叉開關跳過的那些引腳。

4. 將引腳分配給要使用的外設(XBR0、XBR1、XBR2)。

5. 使能交叉開關(XBARE = 1)。


埠鎖存器是一個硬體電路模塊,用於輸出信號穩定和輸入信號鎖存的具體固件。

埠寄存器是為了方便程序員讀寫埠數據而在數據存儲空間開辟的一個內存單元。每個埠寄存器都有其自己固定的地址,每個單元是個8位的空間,對應埠的8個引腳。

編程序的時候我們很少操作到鎖存器,因為一般情況下寄存器的內容和鎖存器的內容應該是一致的。但是在微控制器中,一條匯編寫埠代碼(讀埠代碼)是分好幾條微控制指令的:

首先是寫匯流排(即,寫埠鎖存器,匯流排和鎖存器向連);

然後是控制輸出。


為什麼要在配置引腳為輸入的時候向寄存器寫「1」呢。這要看內部電路圖,如下:

很明顯,要讀入數據Q2必須處於截止狀態才行,否則讀入的數據就是0.這就是向埠寫「1」的作用。當然並不是每次讀數據前都要寫1.只要埠輸出配置沒有變化,只要在初始化的時候寫一次就夠了,因為輸出埠有輸出鎖存,可以保持Q2的狀態截止。

8. 關於單片機P1口讀所存器與讀引腳!

樓主沒有弄清楚,標准51單片機IO腳採用准雙向口,引腳輸入是沒有鎖存的,只有輸出是帶鎖存器,在設置P1口為高電平時,P1實際上既可以作為高電平輸出,也可以作為輸入(這要求外部源有足夠的驅動能力,至少能夠吸收1mA電流),所以MOV A,P1就是一次讀8個引腳, maxiurui說的邏輯指令可以一次讀一個引腳。若設置設置P1口為低電平時,MOV A,P1讀鎖存器。

需要注意的是,一些新型51單片機設置了專用的引腳功能選擇寄存器,這時MOV A,P1讀的是輸出寄存器還是引腳就需要考慮專用的引腳功能選擇寄存器的設置了。