序:
以前一直用的是STC51 + 飛思卡爾xs128組合,簡(jiǎn)單的就用51寫,復(fù)雜的用xs128,對(duì)于AVR、PIC、STM系列是只聞其聲,不見(jiàn)其人。最近因?yàn)橐鲲w思卡爾電磁磁場(chǎng)發(fā)生器而開(kāi)始第一次接觸AVR,頓有相見(jiàn)恨晚之感。
簡(jiǎn)單點(diǎn)說(shuō),有內(nèi)部上拉電阻,引腳30ma的拉電流和灌電流,內(nèi)部硬件PWM和ADC等,而且價(jià)格也不貴,我正式?jīng)Q定用atmege8代替51。
對(duì)端口操作: AVR端口是真正的雙向端口,不像51偽雙向。這也是AVR的一項(xiàng)優(yōu)勢(shì),只是操作時(shí)大家注意DDRn就可以了。真正雙向端口在模擬時(shí)序方面不如偽雙向的方便。
DDRn PORTn PINn 解釋:n為端口號(hào):ABCDE
DDRn:控制端口是輸入還是輸出,0為輸入,1為輸出。個(gè)人記憶方法:一比零大所以往外擠,即1為輸出,0為輸入。
PORTn:從引腳輸出信號(hào),當(dāng)DDRn為1時(shí),可以通過(guò)PORTn=x等端口操作語(yǔ)句給引腳輸出賦值。
PINn:從引腳讀輸入信號(hào),無(wú)論DDRn為何值,都可以通過(guò)x=PINn獲得端口n的外部電平。
DDxn PORTxn PUD (in SFIOR) I/O 上拉電阻 說(shuō)明
0 0 X 輸入No 高阻態(tài) (Hi-Z)
0 1 0 輸入Yes 被外部電路拉低時(shí)將輸出電流
0 1 1 輸入No 高阻態(tài)(Hi-Z)
1 0 X 輸出 No 輸出低電平 ( 漏電流)
1 1 X 輸出No 輸出高電平 ( 拉電流)