DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
No Result
View All Result
Home Vi Điều Khiển AVR

[HỌC AVR] Bài 2: NGẮT NGOÀI VỚI AVR

26 Tháng Sáu, 2022
in AVR, Vi Điều Khiển
347 15

 Xin chào các bạn!
Trong nội dung bài viết này, tôi xin trình bày để các bạn có thể thiết lập và sử dụng được ngắt ngoài trên họ vi điều khiển AVR, cụ thể là vi điều khiển ATmega8.

Chú ý : Source code bài viết dưới đây được biên dịch bằng phần mềm CodeVisionAVR để biên dịch code không lỗi xin vui lòng Download bảnCodeVisionAVR Tại Đây

I.NGẮT NGOÀI TRÊN Atmega8.

 – Ngắt ngoài (External Interrupt) là loại ngắt độc lập với các thiết bị của vi điều khiển. Atmega 8 có hai ngắt ngoài là:

  • INT0 (chân 4: PD2). 
  • INT1 (chân 5: PD3).

– Trên AVR, Có 3 thanh ghi liên quan đến ngắt ngoài:

MCUCR: thanh ghi lựa chọn chế độ ngắt cho ngắt ngoài.
Chế độ ngắt ngoài cho INT1:

 (Tương tự với INT0: ISC01, ISC00)
·GICR: thanh ghi điều khiển ngắt chung.
   Bit INT1 = 1: Ngắt ngoài 1 được sử dụng.
   Bit INT0 = 1: Ngắt ngoài 0 được sử dụng.
·GIFR: thanh ghi cờ ngắt chung.

II.BÀI TOÁN VÍ DỤ.

 Để các bạn hiểu rõ hơn cách sử dụng ngắt ngoài trên vi điều khiển Atmega8, tôi xét bài toán cụ thể sau:
Sử dụng INT1 và INT0:

  • Khi có ngắt ngoài 1: truyền chuỗi “MINHHAGROUP” lên máy tính.
  • Khi có ngắt ngoài 0: truyền chuỗi “BANLINHKIEN.VN” lên máy tính.

1.CÁCH THIẾT LẬP NGẮT NGOÀI BẰNG CodeVisionAVR.
   Trình biên dịch CodeVisionAVR đã hỗ trợ để các bạn có thể sử dụng tốt các ngắt ngoài.
   Sau khi lập Project mới à chọn CodeWizardAVR à chọn External IRQ

   Các bạn tích vào ô để sử dụng INT1, INT0. Chọn chế độ ngắt ở Mode (trên đây tôi chọn chế độ ngắt cạnh xuống).
Trong bài tập này tôi có sử dụng thêm USART để truyền dữ liệu lên máy tính (các bạn có thể hiểu rõ ở các bài sau).

2.CODE MẪU.
  Khi ngắt ngoài xảy ra, chương trình sẽ thực hiện yêu cầu của các bạn trong trình phục vụ ngắt của từng ngắt.

#include <main.h>
 
// TRINH PHUC VU NGAT NGOAI 0
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
    puts("BANLINHKIEN.VN "); // TRUYEN LEN MAY TINH
}
 
// TRINH PHUC VU NGAT NGOAI 1
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// Place your code here
    puts("MINHHAGROUP ");    // TRUYEN LEN MAY TINH
}
 
void main(void)
{
// Declare your local variables here
 
// Input/Output Ports initialization
// Port B 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
PORTB=0x00;
DDRB=0x00;
 
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// 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=0x0C;
DDRD=0x00;
 
// KHOI TAO NGAT NGOAI
// INT0: On
// INT0 Mode: Falling Edge    (NGAT CANH XUONG)
// INT1: On
// INT1 Mode: Falling Edge    (NGAT CANH XUONG)
GICR|=0xC0;    // Cho phep su dung INT1, INT0
MCUCR=0x0A;    // Thiet lap che do ngat ngoai
GIFR=0xC0;    // Bat co ngat chung
 
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
 
// KHOI TAO USART
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;    // TOC DO TRUYEN 9600
 
// Global enable interrupts
#asm("sei")    // CHO PHEP NGAT TOAN CUC
 
while (1)
      {
      // Place your code here
 
      }
}

Các bạn có thể tham khảo code mẫu và mô phỏng tại đây:

DOWNLOAD FULL SRC+ Mô Phỏng TẠI ĐÂY

Tags: arduinoatmega8avr
Share269Tweet168

Related Posts

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK
Điện Tử Cơ Bản

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK

19 Tháng Sáu, 2022
Mạch điều khiển thiết bị và giám sát nhiệt độ qua Internet dùng App Blynk
Arduino

Mạch điều khiển thiết bị và giám sát nhiệt độ qua Internet dùng App Blynk

26 Tháng Sáu, 2022
Lập Trình Arduino – Chia Sẻ Mạch Quản lý Bãi Đỗ Xe Bằng Thẻ RFID
Arduino

Lập Trình Arduino – Chia Sẻ Mạch Quản lý Bãi Đỗ Xe Bằng Thẻ RFID

26 Tháng Sáu, 2022
Next Post
[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20

[HỌC AVR] Bài 3: TIMER - COUNTER TRÊN AVR

[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20

[HỌC AVR] Bài 4: ĐO TẦN SỐ TÍN HIỆU VỚI AVR

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

No Result
View All Result
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz