Thứ Hai, 28 tháng 12, 2015

BÀI 13 : CHỚP TẮT LED VỚI TẦN SỐ 1S SỬ DỤNG TIMER 1 PIC16F877A CCS

Chào các bạn trong bài đăng về TIMER 1 thì mình đã hướng dẫn các bạn cánh tính toán để cài đăt cho TIMER 1 rồi nên ai chưa đọc thì quay lại bài trước đọc nha ! Còn trong bài đăng này mình sẽ hướng dẫn các bạn dùng TIMER 1 để tạo trễ 1s để chớp tăt LED.
Để delay 1s thì chương trình con ngắt 100ms phải thực hiện 10 lần, mỗi lần ngắt 100ms thì tăng biến đếm ngắt BDN lên 1 đơn vị, kiểm tra nếu bằng 10 thì cho bằng 0 và đảo trạng thái của led, nếu chưa bằng 10 thì thoát và thực hiện tiếp chương trình chính. Ý nghĩa của việc dùng TIMER 1 để delay 1s chính xác hơn khi chúng ta sử dụng lệnh delay_ms().
- Đây là ảnh mô phỏng protues.

 CHỚP TẮT LED VỚI TẦN SỐ 1S SỬ DỤNG TIMER 1

- Đây là code chương trình.
#INCLUDE <16F877a.H>
#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP
#USE DELAY(CLOCK=16M)
INT8 DEM, BDN;
#int_timer1
void INTERRUPT_TIMER1()

BDN++;   
SET_TIMER1(15536);
IF (BDN == 10)   

BDN = 0;  OUTPUT_B(DEM); 
DEM = ~ DEM;
}
}
VOID MAIN()
{    
SET_TRIS_B(0x00);  
DEM = 0X00 ;   
OUTPUT_B(DEM);     
BDN= 0X00 ;
SETUP_TIMER_1(T1_INTERNAL | T1_DIV_BY_8);    
SET_TIMER1(15536);
ENABLE_INTERRUPTS(GLOBAL);    
ENABLE_INTERRUPTS(INT_TIMER1);
WHILE(true)


}
}
- Link download project Click here


EmoticonEmoticon