AVR I/O口使用方法
AVR單片機(jī)寄存器 DDRx PORTx PINx 與對(duì)應(yīng)IO端口之間的關(guān)系(x代表某個(gè)端口,如A端口、B端口等)
下表以端口B的第2位PB2為例子加以說明,并且假設(shè)PB2為懸空狀態(tài)
DDRB.2
PORTB.2
讀取PINB.2的結(jié)果
引腳PB2的狀態(tài)
1
1
1
PB2推挽輸出
1
1
0
0
PB2推挽輸出
0
0
1
1
PB2弱上拉,可作輸入
0
0
×
PB2高阻抗,可作輸入
讀取PINB.2時(shí),就是讀取PB2引腳的實(shí)際電平,
如果PB2直接接VCC,那么任何時(shí)候讀取PINB.2的結(jié)果都是1
如果PB2直接接GND,那么任何時(shí)候讀取PINB.2的結(jié)果都是0
下面是一個(gè)標(biāo)準(zhǔn)C語言例子:
#include mega48.h>
unsigned char abc; //定義一個(gè)變量
void main(void) //主函數(shù)
{
DDRB = 0b11110000;
PORTB = 0b11001100;
while (1) //主循環(huán)
{
abc = PINB; //讀取B端口的實(shí)際電平
}
}
如果整個(gè)B端口都是懸空的話,
那么abc的結(jié)果就是:0b110011**
如果B端口第7位接GND 、第0位接VCC 、其它位懸空,
那么abc的結(jié)果就是:0b010011*1 (PB7工作在“短路”狀態(tài))
其中“*”表示不確定,理想狀態(tài)下可以看作0
端口聲明:include iom16v.h>
#include "D:ICC_HCmmICC.H"
#define OUT_BUZ sbi(DDRB,3) //PB3
#define BUZ_ON cbi(PORTB,3)
#define BUZ_OFF sbi(PORTB,3)
/*--------------------------------------------------------------------
程 序名稱:
程序功能:
注意事項(xiàng):
提示說明:
輸 入:
返 回:
--------------------------------------------------------------------*/
void main(void)
{
OUT_BUZ; //設(shè)置相應(yīng)的IO口為輸出
while(1)
{
BUZ_ON; //我叫
delay50ms(20);
BUZ_OFF; //我不叫
delay50ms(20);
}
}
系統(tǒng)調(diào)試
將語句:delay50ms(20);改為語句:delay50ms(1);可以聽到 叫的頻率更高,吵死人了!
以ATMEGA16為例,用輕松幽默的講解方式,講解AVR的每個(gè)功能部件,配合給出 Protel電路圖及ICCAVR源代碼。
都是網(wǎng)上找的資料,整理了一下,大伙湊或者學(xué)吧!
第一課 AVR IO輸出之LED顯示程序
系統(tǒng)功能 c語言相關(guān)文章:c語言教程
使用AVR控制8位LED,做到想閃就閃,不想閃就不閃,左閃右閃,拚命閃,演示AVR單片機(jī)之“點(diǎn)燈術(shù)”。
硬件設(shè)計(jì)
關(guān)于AVR的I/O結(jié)構(gòu)及相關(guān)介紹詳見Datasheet,這里僅對(duì)作部分簡(jiǎn)單介紹,下面是AVR的I/O引腳配置表:
AVR I/O 口引腳配置表
DDRXn PORTXn PUD I/O 方式 內(nèi)部上拉電阻 引腳狀態(tài)說明
0 0 X 輸入 無效 三態(tài)(高阻)
0 1 0 輸入 有效 外部引腳拉低時(shí)輸出電流 (uA)
0 1 1 輸入 無效 三態(tài)(高阻)
1 0 X 輸出 無效 推挽 0 輸出,吸收電流 (20mA)
1 1 X 輸出 無效 推挽 1 輸出,輸出電流 (20mA)
雖然AVR的I/O口單獨(dú)輸出“1”時(shí),可輸出較大電流足已點(diǎn)亮一盞燈,但AVR總的I/O輸出畢竟是有限的,所以,有經(jīng)驗(yàn)的點(diǎn)燈者考慮到除了點(diǎn) 燈外可能還有其它費(fèi)勁的活兒要干,會(huì)將AVR的I/O口設(shè)計(jì)為輸出“0”時(shí)點(diǎn)燈,輸出“1”時(shí)熄燈。這種接法亦叫“灌電流接法”。
相關(guān)推薦
-
-
-
flyingbxf | 2004-09-13
-
kongkonghu | 2004-07-23
-
-
-
comice | 2004-09-02
-
-
Naiqa | 2002-11-20
-
-
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論