AVR,51單片機(jī)IO結(jié)構(gòu)
AVR的真正雙向IO結(jié)構(gòu)就復(fù)雜多了,單是控制端口的寄存器也有4個 PORTx.DDRx,PINx,SFIOR(PUD位),不過功能也強(qiáng)勁多了
作為通用數(shù)字I/O 使用時,所有AVR I/O 端口都具有真正的讀- 修改- 寫功能。
這意味著用SBI 或CBI 指令改變某些管腳的方向( 或者是端口電平、禁止/ 使能上拉電阻) 時不會無意地改變其他管腳的方向( 或者是端口電平、禁止/ 使能上拉電阻)。
輸出緩沖器具有對稱的驅(qū)動能力,可以輸出或吸收大電流,直接驅(qū)動LED。
所有的端口引腳都具有與電壓無關(guān)的上拉電阻。
并有保護(hù)二極管與VCC 和地相連。
* (很多數(shù)字器件都有保護(hù)二極管,在低功耗應(yīng)用時要考慮保護(hù)二極管的電流倒灌的影響)
每個端口都有三個I/O 存儲器地址:
數(shù)據(jù)寄存器 – PORTx
數(shù)據(jù)方向寄存器 – DDRx
端口輸入引腳 – PINx。
數(shù)據(jù)寄存器PORTx和數(shù)據(jù)方向寄存器DDRx為讀/ 寫寄存器,而端口輸入引腳PINx為只讀寄存器。
但是需要特別注意的是,對PINx 寄存器某一位寫入邏輯"1“ 將造成數(shù)據(jù)寄存器相應(yīng)位的數(shù)據(jù)發(fā)生"0“ 與“1“ 的交替變化。
當(dāng)寄存器MCUCR 的上拉禁止位PUD置位時所有端口引腳的上拉電阻都被禁止。
在( 高阻態(tài)) 三態(tài)({DDxn, PORTxn} = 0b00) 輸出高電平({DDxn, PORTxn} = 0b11) 兩種狀態(tài)之間進(jìn)行切換時,
上拉電阻使能({DDxn, PORTxn} = 0b01) 或輸出低電平({DDxn,PORTxn} = 0b10) 這兩種模式必然會有一個發(fā)生。
通常,上拉電阻使能是完全可以接受的,因為高阻環(huán)境不在意是強(qiáng)高電平輸出還是上拉輸出。
如果使用情況不是這樣子,可以通過置位SFIOR 寄存器的PUD 來禁止所有端口的上拉電阻。
在上拉輸入和輸出低電平之間切換也有同樣的問題。
用戶必須選擇高阻態(tài)({DDxn,PORTxn} = 0b00) 或輸出高電平({DDxn, PORTxn} = 0b10) 作為中間步驟。
不論如何配置DDxn,都可以通過讀取PINxn 寄存器來獲得引腳電平
PINxn寄存器的各個位與其前面的鎖存器組成了一個同步器。
這樣就可以避免在內(nèi)部時鐘狀態(tài)發(fā)生改變的短時間范圍內(nèi)由于引腳電平變化而造成的信號不穩(wěn)定。
其缺點(diǎn)是引入了延遲。
手機(jī)電池相關(guān)文章:手機(jī)電池修復(fù)
51單片機(jī)相關(guān)文章:51單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
上拉電阻相關(guān)文章:上拉電阻原理
評論