Vao ra trong avr

Màu nền
Font chữ
Font size
Chiều cao dòng

Đây là bài đầu tiên của loạt bài về AVR. Sau khi kết thúc bài đầu tiên bạn dễ dàng lập trinh input và output cho AVR

Tóm tắt : Lập trình điều khiển led bật tắt ,sử dụng cách định nghĩa PIN và PORT ,cách dùng thư viện delay.h của codevision.

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 .Giá trị 1 là ra và 0 là vào .

Ví dụ 1 : Nhấp nháy lần lượt đèn xanh và đèn đỏ , khi ấn nút bấm chỉ có đèn đỏ sáng.

Phần cứng : đèn xanh PORTB.4 , đèn đỏ PORTB.5 , nút bấm PINB.7

Chú ý :

định nghĩa 1 chân là chân vào PIN x.x

#define nut_bam PINB.7

định nghĩa 1 chân là chân vào PORT x.x

#define den_do PORTB.5

Trong bài này PORT B có 2 biến đầu ra là PB5 và PB6

DDRB=0b00110000 =0x30

Khởi tạo chân PB7 cần được treo lên 5V , khi ấn nút bấm sẽ thông GND(0V) nên ta có PORTB=0b10000000=0x80;

Sau khi định nghĩa , nếu bạn den_do=1; đèn led đỏ sẽ tắt

den_do=0; đèn sẽ sáng .

( do cách thiết kế mạch đầu dương led nối 5V còn đầu âm nối vào VĐK)

delay.h có 2 cách gọi là trễ theo ms và us

delay_ms(time);

delay_us(time);

/*****************************************************

This program was produced by the

CodeWizardAVR V1.24.8d Professional

Automatic Program Generator

© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :

Version :

Date : 12/27/2007

Author : LENGOCTUAN

Company : VAGAM

Comments:

Chip type : ATmega16

Program type : Application

Clock frequency : 8.000000 MHz

Memory model : Small

External SRAM size : 0

Data Stack size : 256

*****************************************************/

#include <mega16.h>

#include <delay.h>

// Declare your global variables here

#define den_xanh PORTB.5

#define den_do PORTB.6

#define nut_bam PINB.7

void main(void)

{

// Port B initialization

// Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T

PORTB=0x80;

DDRB=0x30;

while (1)

{

// Place your code here

//khi nut bam chua duoc bam logic nut_bam=1

if(nut_bam)

{

den_xanh=1;den_do=0;

delay_ms(500);

den_xanh=0;den_do=1;

delay_ms(500);

}

//khi nut bam duoc an nut_bam=0 chi den do sang

else

{den_xanh=1;den_do=0;}

};

}

Bạn đang đọc truyện trên: Truyen2U.Pro