自在自线亚洲а∨天堂在线-中文字幕一区视频播放-扒开双腿猛进入喷水高潮叫声-欧美日本亚洲一区二区-老熟妇高潮偷拍一区二区-国产精品高清一区二区不卡-午夜色福利视频一区二区三区-亚洲国产成人精品福利在线观看-亚洲欧美成人一区二区在线电影

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
AVR的IO端口特性與應(yīng)用
AVR的IO端口特性與應(yīng)用
 更新時間:2008-7-26 19:30:33  點擊數(shù):3
【字體: 字體顏色

AVR的IO端口特性分析:

 

分析IO引腳Pxn。DDRxn 只有為1時,可控單向開關(guān)才工作,PORTxn 的數(shù)值才能通過可控單向開送到 Pxn.

結(jié)論:DDRxn=1 時,為輸出狀態(tài)。輸出值等于PORTxn。所以,DDRxn 為方向寄存器。PORTxn 為數(shù)據(jù)寄存器。

 

分析上拉電阻。E的電位為0時,即D為1時,上拉電阻有效。

從與門的輸入分析,只有以下的條件同時滿足時,上拉電阻才有效

1。PUD 為0

2。DDxn 為0

3。PORTxn 為1

結(jié)論是:只有DDRxn = 0 即管腳定義為輸入狀態(tài),并且 PORTxn=1, 而且UPD設(shè)置為0時,上拉電阻才生效。

 

分析 Pxn 及 SLEEP。只有當 SLEEP = 0 時,可控開關(guān)2才導(dǎo)通,SD1不工作,施密特觸發(fā)器的輸入等于Pxn, 信號送到同步器后讀取。

結(jié)論:Pxn 無論在輸入或輸出狀態(tài)都能被AVR讀取。SLEEP=0時輸入才能被讀取。

AVR的IO端口的使用注意事項:

如果有引腳末被使用,建議些引腳賦予一個確定電平。最簡單的保證未用引腳具有確定電平的方法是使能內(nèi)部上拉電阻。

如果剛定義了引腳的輸入狀態(tài),就要立即回讀,可以在回讀前,插入一句 _nop()。

系統(tǒng)復(fù)位時,DDR全部為0,Port也全部為0,故上拉電阻在復(fù)位時會失效。

如何用C語言操縱AVR的IO端口(以ICCAVR為例):

舉例一:將PB0定義為輸出,且輸出為高電平

DDRB=BIT(0); //定義 PB0為輸出

PORTB|=BIT(0); // PB0 輸出高電平

舉例二:將PB0、PB1定義為輸出,且PB0輸出低電平,PB1均為高電平

DDRB|=BIT(0)|BIT(1); //定義 PB0、PB1為輸出

PORTB|=BIT(0)|BIT(1);// PB0、PB1 輸出高電平

舉例三:將PB0數(shù)據(jù)寄存器的數(shù)值翻轉(zhuǎn),即如果是1時變成0,如果是0時變成1

PORTB^=BIT(0); // PB0 輸出高電平

舉例四:將PB0、PB1數(shù)據(jù)寄存器的數(shù)值翻轉(zhuǎn),即如果是1時變成0,如果是0時變成1

PORTB^=BIT(0)|BIT(1); // PB0 輸出高電平

舉例五:將PB2、PB3定義為輸入,不帶上拉電阻

DDRB&=~(BIT(2)|BIT(3)); //定義 PB2、PB3為輸入

PORTB&=~(BIT(2)|BIT(3)); // 將 PORT 置0,沒有上拉電阻

舉例六:將PB2、PB3定義為輸入,帶上拉電阻。即沒有引用這些引腳時,缺省值為高電平

SFIOR&=~BIT(PUD); // SFIOR寄存器的上拉電阻控制位PUD置0,在整個代碼中,這句話可以不出現(xiàn),或僅出現(xiàn)一次即可。因為它是一個控制全部上拉電阻的控制位。

DDRB&=~(BIT(2)|BIT(3)); //定義 PB2、PB3為輸入

PORTB|=BIT(2)|BIT(3); // 將 PORT 置1,滿足上拉電阻的另一個條件

舉例七:DDRB=BIT(0)|BIT(1) 與 DDRB|=BIT(0)|BIT(1) 的區(qū)別

假定在執(zhí)行上面兩句指令前,DDRB 的狀態(tài)為: 1000 0000

如果執(zhí)行 DDRB=BIT(0)|BIT(1) ,DDRB的狀態(tài)變?yōu)椋?0000 0011
如果執(zhí)行 DDRD|=BIT(0)|BIT(1),,DDRB的狀態(tài)變?yōu)椋?1000 0011

那前一句會先清空以前的所有狀態(tài),后一句保留前面的狀態(tài)。

在實際應(yīng)用中,后一句更常用。

舉例八:將第三位置1,除了用BIT(3),還有其它的表達方法嗎?

DDRB|=BIT(3);

DDRB|=1<<3;

DDRB|=0x08;

DDRB|=0b00001000;

  • 上一篇: AVR圖形聲音發(fā)生器范例
  • 下一篇: AVR單片機的DS1302操作程序
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1