Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

Ngat ngoai trong avr

Atmega16 có 3 ngắt ngoài INT0(PORTD.2) INT1(PORTD.3) và INT2(PORTB.2)

Khi xảy ra một trong các sự kiện đối với các chân này :

Low level - Điện áp ở chân ngắt xuống mức logic 0 V

Any change - Bất kì sự thay đổi điện áp từ chân ngắt

Falling Edge - Khi có 1 sườn điện áp xuống (5V->0V)

Rising Edge -Khi có 1 sườn điện áp lên (0V->5V)

Sau đó 1 cờ ngắt sẽ dựng lên 1 và báo cho biết có ngắt , nhảy đến chương trình con thực hiện ngắt .

Ví dụ : Dùng ngắt để báo động khi xảy ra sự cố của hệ thống .

Khi hệ thống xảy ra sự cố , chân PORTD3(INT1 ) sẽ có giá trị là 0V chương trình sẽ bật đèn đỏ để cảnh báo .Khi kết thúc sự cố bật trở lại đèn xanh .

Ban đầu khởi tạo ta sẽ để đèn xanh bật đỏ tắt , PORTD.3 treo lên 5V , là port vào

PORTD=0x08;

DDRD=0x00;

Chọn ngắt INT1 chế độ Low level (khi nào chân PD3 có mức logic 0V là xảy ra ngắt )

GICR|=0x80;

MCUCR=0x00;

MCUCSR=0x00;

GIFR=0x80;

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

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/29/2007

Author : le ngoc tuan

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.4

#define den_do PORTB.5

// External Interrupt 1 service routine

interrupt [EXT_INT1] void ext_int1_isr(void)

{

// Place your code here

den_xanh=1;den_do=0;//bat den do ,tat den xanh

}

void main(void)

{

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

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

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

PORTA=0x00;

DDRA=0x00;

// 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;

// Port C initialization

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

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

PORTC=0x00;

DDRC=0x00;

// Port D initialization

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

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

PORTD=0x08;

DDRD=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: On

// INT1 Mode: Low level

// INT2: Off

GICR|=0x80;

MCUCR=0x00;

MCUCSR=0x00;

GIFR=0x80;

// Global enable interrupts

#asm("sei")

while (1)

{

den_xanh=0;den_do=1;

};

}

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

Tags: #saoxathubk