Bài 1: Input and output – AVR Đặc tính: Dưới đây là 3 loại AVR thong dụng nhất, tuỳ vào mục đích sử dụng bạn có thể chọn loại AVR khác nhau.. Cộng dụng cơ bản là như nhau, khác nhau chủ
Trang 1Bài 1: Input and output – AVR
Đặc tính: Dưới đây là 3 loại AVR thong dụng nhất, tuỳ vào mục đích sử dụng bạn có thể
chọn loại AVR khác nhau
Cộng dụng cơ bản là như nhau, khác nhau chủ yếu là số chân vào ra và cách bố trí chức năng
ATmega 8: (or 88) Gồm 28 pin và 23 chân I/O
ATmega 16: Gồm 40 pin và 32 chân I/O
ATmega 128: Gồm 64 pin và 53 chân I/O
Giới thiệu
Trang 2Cấu trúc chân của AVR có thể phân biệt rõ chức năng (vào ra) trạng thái (0 1) từ đó ta có
4 kiểu vào ra cho một chân của avr.Khác với 89 là chỉ có 2 trạng thái duy nhất (0 1) Đặc
biệt nguồn từ chân của AVR đủ khoẻ để điều khiển Led trực tiếp (mA) còn 89 chỉ là vài
uA
Để điều khiển các chân này chúng ta có 2 thanh ghi
->PORTx :giá trị tại từng chân (0 – 1) có thể truy cập tới từng bit PORTx.n
->DDRx : thanh ghi chỉ trạng thái của từng chân , vào hoặc là ra
Ví dụ : Dùng nút ấn điều khiển đèn led bật tắt
Sơ đô mạch:
Trang 3Ta có PortD.0 sẽ là chân ra đèn led , cần có giá trị 1 thì đèn sang và 0 thì đèn tắt PortD.1
sẽ là chân nhận phím bấm ,khi bấm sẽ nhận về avr mức 0 còn bình thường ta để ở trạng thái pull (treo cao trở có logic là 1)
#include
#define led PORTD.0 //khi dinh nghia chan rat a luon ghi la PORTx.x chân vào luon kí hiệu là PINx.x
#define nutbam PIND.1
void main(void)
{
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out // State7=T State6=T State5=T State4=T State3=T State2=T State1=P State0=0
PORTD=0x02; // 0b00000010 Giá trị chân D.1 là 1(treo trở 5V pullup) còn các cổng khác đều có giá trị là 0
DDRD=0x01; // 0b00000001 D.0 là cổng ra , còn các cổng khác là cổng vào while (1)
{
if(!nutbam ) led=!led ; //mỗi khi ấn nút led sẽ đảo trạng thái
}
}