c8051f020 I/O配置小結(jié)
c8051f020 I/O配置小結(jié)
注意的問題:
1.低端口既能按位尋址,也可以按字節(jié)尋址;高端口只能按字節(jié)尋址。
2.沒有被分配到的引腳作為一般的數(shù)字通用I/O口。
3.P1口還可以用作ADC1的模擬輸入。
4.P0MDOUT~P3MDOUT用于控制I/O端口每一位的輸出狀態(tài)。
5.EMIF(外部存儲器接口)是用于CPU與片外XRAM之間的數(shù)據(jù)傳輸通道,通過寄存器EMI0CF和EMI0CN選擇和管理端口實現(xiàn)數(shù)據(jù)的傳輸。
6.為了能訪問片外存儲器空間,必須設(shè)置EMI0CN寄存器的內(nèi)容為片外存儲器的空間頁地址。
7.如果把外部存儲器接口(EMIF)設(shè)置在高端口則首先要把EMI0CF的PRTSEL位設(shè)置為1,選擇高端口,同時選擇地址的復用或非復用方式,在把XBR的外部寄存器的EMIFLE位設(shè)置為0。
8.復用方式配置:在復用方式下,數(shù)據(jù)總線和地址總線的第8位共用相同的引腳(AD0~AD7)。在該方式下,要用一個外部鎖存器(如74HC373或相同功能的鎖存器)保持RAM地址的低8位。外部鎖存器由ALE(地址鎖存使能)信號控制,ALE信號由外部存儲器接口邏輯驅(qū)動。
9.在總線復用時,需要把地址數(shù)據(jù)復用端口配置為漏極開路。
10.ALE高/低脈寬占1個SYSCLK周期,地址建立/保持時間占0個SYSCLK周期,/WR和/RD占12個SYSCLK周期,EMIF工作在地址/數(shù)據(jù)復用方式,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;配置EMIF的步驟是:先將EMIF選到低端口或高端口;然后選擇復用方式或非復用方式;再選擇存儲器的模式(只用片內(nèi)存儲器、不帶塊選擇的分片方式、帶塊選擇的分片方式或只用片外存儲器);然后設(shè)置EMI0TC;最后通過寄存器PnMDOUT和P74OUT選擇所期望的相關(guān)端口的輸出方式。如:
void PORT_Init (void)
{
}
11.避免高端口處于“浮空”狀態(tài),以避免因輸入浮空為無效邏輯電平而導致不必要的功率消耗,為此應采取如下措施的任何一種:a.將XBR2.7位設(shè)置為邏輯0選擇弱上拉狀態(tài)
R/W
WEAKPUD
位7
位7 WEAKPUD 弱上拉禁止位
0 弱上拉全局允許
1 弱上拉全局禁止
位6 XBARE 交叉開關(guān)允許位
0 交叉開關(guān)禁止端口0 1 2 和3 的所有引腳被強制為輸入方式
1 交叉開關(guān)允許
位5 未用讀0 寫=忽略
位4 T4EXE T4EX 輸入允許位
0 T4EX 不連到端口引腳
1 T4EX 連到端口引腳
位3 T4E T4 輸入允許位
0 T4 不連到端口引腳
1 T4 連到端口引腳
位2 UART1E UART1 I/O 允許位
0 UART1 I/O 不連到端口引腳
1 UART1 TX 和RX 連到兩個端口引腳
位1 EMIFLE 外部存儲器接口低端口允許位
0 P0.7 P0.6 和P0.5 的功能由交叉開關(guān)或端口鎖存器決定
1 如果EMI0CF.4 = 0 外部存儲器接口為復用方式
則P0.7 (/WR) P0.6 (/RD)和P0.5 (/ALE)被交叉開關(guān)跳過它們的輸出
狀態(tài)由端口鎖存器和外部存儲器接口決定
1 如果EMI0CF.4 = 1 外部存儲器接口為非復用方式
則P0.7 (/WR)和P0.6 (/RD)被交叉開關(guān)跳過它們的輸出狀態(tài)由端口鎖
存器和外部存儲器接口決定
位0 CNVSTE 外部轉(zhuǎn)換啟動輸入允許位
0 CNVSTR 不連到端口引腳
1 CNVSTR 連到端口引腳;
b.令P74OUT=0xFF,將高端口輸出方式配置為推拉方式(P74OUT為高端口輸出方式寄存器);
c.向高端口數(shù)據(jù)寄存器P4、P5、P6和P7寫0。
12.配置端口引腳的輸出方式
每個端口引腳的輸出方式都可被配置為漏極開路或推挽方式。在推挽方式下向端口數(shù)據(jù)寄存器中的相應位寫邏輯0 將使端口引腳被驅(qū)動到GND 寫邏輯1 將使端口引腳被驅(qū)動到VDD ,在漏極開路方式下向端口數(shù)據(jù)寄存器中的相應位寫邏輯0 將使端口引腳被驅(qū)動到GND 寫邏輯1 將使端口引腳處于高阻狀態(tài),當系統(tǒng)中不同器件的端口引腳有共享連接。即多個輸出連接到同一個物理線時(例如SMBus 連接中的SDA 信號),使用漏極開路方式可以防止不同器件之間的沖突。(推挽方式在有些書中稱為推拉方式)
轉(zhuǎn)載-關(guān)于開漏、推挽方式2008-01-27 17:53漏級開路即高阻狀態(tài),適用于輸入/輸出,其可獨立輸入/輸出低電平和高阻狀態(tài),若需要產(chǎn)生高電平,則需使用外部上拉電阻或使用如LCX245等電平轉(zhuǎn)換芯片。有些朋友,尤其是未學過此方面知識的朋友,在實際工作中將I/O口設(shè)置為漏開,并想輸出高電平,但向口線上寫1后對方并未認出高電平,但用萬用表測量引腳確有電壓,這種認為是不對的,對于高阻狀態(tài)來說,測量電壓是無意義的,正確的方法應是外加上拉電阻,上拉電阻的阻值=上拉電壓/芯片引腳最大灌(拉)電流。
推挽方式可完全獨立產(chǎn)生高低電平,推挽方式為低阻,這樣,才能保證口線上不分走電壓或分走極小的電壓(可忽略),保證輸出與電源相同的高電平,推挽適用于輸出而不適用于輸入,因為若對推挽(低阻)加高電平后,I=U/R,I會很大,將造成口的燒毀。
對與C8051F的很多型號片子,將I/O口設(shè)置為推挽方式的做法為:PnMDOUT=0xff,Pn=0x00,這樣設(shè)置I/O口為推挽,并輸出低電平(可降低功耗)將I/O口設(shè)置為漏開方式的做法為:PnMDOUT=0x00,Pn=0x11,這樣設(shè)置I/O口為漏開。
如果學過三極管放大電路一定知道,前置單管放大器和功放末級放大電路的區(qū)別。單片機內(nèi)部的邏輯經(jīng)過內(nèi)部的邏輯運算后需要輸出到外面,外面的器件可能需要較大的電流才能推動,因此在單片機的輸出端口必須有一個驅(qū)動電路。
推挽方式可完全獨立產(chǎn)生高低電平,推挽方式為低阻,這樣,才能保證口線上不分走電壓或分走極小的電壓(可忽略),保證輸出與電源相同的高電平,推挽適用于輸出而不適用于輸入,因為若對推挽(低阻)加高電平后,I=U/R,I會很大,將造成口的燒毀。
推挽輸出0的時候和開漏特性一樣,就是1的時候可以當作直接接VCC.
推挽輸出的驅(qū)動能力相當強,因為輸出1就等于接到了VCC.而同時推挽輸出的IO也需要注意不要直接接到地,否則一旦輸出1,就等于VCC通過內(nèi)部的場效應管直接到地了,這時候IO端發(fā)熱就很大,時間長就就拜拜了.
你看到DX32實驗板上,按鍵部分都是串了個300歐才到地的,就是為了避免IO誤操作,使這些輸入變成推挽輸出1而做的保護.
以此為設(shè)計依據(jù),一般情況下,所有的IO都盡量避免直接到地,即使這個IO你是打算用來做輸入的.
評論