Vao ra trong avr
Đâ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: AzTruyen.Top