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ủ 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 Cấ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: Ta 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. } } . 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. PORTD=0x02; // 0b00000 010 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=0x 01; // 0b000000 01 D.0 là cổng ra , còn các cổng khác là cổng vào while (1) { if(!nutbam. ghi -& gt;PORTx :giá trị tại từng chân (0 – 1) có thể truy cập tới từng bit PORTx.n -& gt;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