Ngắt RB0 Pic16f877a with CCS

1:30:00 AM
Chào các bạn.
Hôm nay mình sẽ hướng dẫn các bạn sử dụng chức năng ngắt ngoài trong PIC16F877A.
1. Ngắt ngoài
Trong PIC 16F877A có 1 ngõ vào ngắt ngoài tại chân INT (RB0). Khi có một sự kiện trên chân INT (cạnh xuống hoặc cạnh lên) sẽ sinh ra một ngắt (nếu được cho phép).
Để sử dụng chức năng ngắt ngoài ta phải làm như sau:
· Chọn kiểu ngắt: (cạnh lên hoặc cạnh xuống).
· Kích hoạt ngắt ngoài.
· Kích hoạt ngắt toàn cục.
2. Ví dụ ngắt ngoài
Trong ví dụ này, mỗi lần có ngắt ngoài sx thực hiện lệnh xóa LCD16x2. Trong chương trình chính tôi sẽ cho hiện từng chữ trong chữ "chiasedientu" lên LCD16x2. Khi có ngắt sẽ xóa LCD, như vậy các dòng chữ "chiasedientu" sẽ không hiển thị hoàn chỉnh. (các bạn load code và mô phỏng bên dưới se hiểu hơn).
Hàm ngắt ngoài

HTML:
#INT_EXT
void ngat_ngoai(void)
{ 
  LCD_Clear();
}
Chương trình chính:
#include <16F877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
int led=0,time_delay;     // default int=int8

#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE)) 
   { 
      //Kiem tra sw1
      {
      if(RB4==0)
         {
         led=0b00000001; //led1 sang
         time_delay=250;
         } 
      }
      //Kiem tra sw2      
      {
      if(RB5==0)
         {
         led=0b00000011; //led1,2 sang
         time_delay=200;
         } 
      }
      //Kiem tra sw3
      {
      if(RB6==0)
         {
         led=0b00000111; //led1,2,3 sang
         time_delay=150;
         } 
      }
      //Kiem tra sw4
      {
      if(RB7==0)
         {
         led=0b00001111; //led1,2,3,4 sang
         time_delay=100;
         } 
      }
   RBIF=0; //Xoa co ngat RB      
   }
}
// Chuong trinh chinh
void main(void)
{
TRISB= 0xF0;
PORTB= 0x0F;
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
while(true)
   {
   PORTB=led;
   delay_ms(time_delay);
   PORTB=0x00;
   delay_ms(time_delay);  
   }

}

Ảnh mô phỏng protues.


ngắt rb0 pic16f877a ccs

Link download project.
http://adf.ly/11512871/ngat-rb0

Share this

Related Posts

Previous
Next Post »