Thứ Ba, 22 tháng 12, 2015

BÀI 11 : TIMER 1 PIC16F877A CCS

Chào các bạn trong bài đăng trước mình đã hướng dẫn các bạn về timer0 và trong bài đăng này mình sẽ tiếp tục hướng dẫn các ban về timer1 của PIC16F877A. Timer 1 và 0 là 2 loại timer mà chúng ta rất hay sử dụng vì vậy các bạn phải nắm chất về 2 bộ timer này nha. Ok bây giờ mình sẽ đi vào vấn đề chính ngay.
Về phần lý thuyết các bạn đọc Datasheet hoặc lên mạng tìm hoặc qua bên TUT về PIC16F877A XC8 tìm đọc nha !
Chúng ta sẽ tính toán các thông số để cài đặt cho Timer 1 theo công thức sau : Ví dụ muốn định thời 50ms = 50000us sử dụng prescaler 1:8, Fosc = 4 Mhz thì ta có công thức tính như sau :
GT = 65536 - Tdelay.Fosc/(4.Kprescaler)
Từ công thức trên thay số vào ta được như sau :
GT = 65536 - 50.10^-3.4.10^6.(4/8) = 59286
Đây là ảnh mô phỏng protues.
timer 1 pic16f877a ccs
- Đây là code chương trình.
#include <16F877a.h>
#include <def_877a.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use Delay(Clock=4000000)
#define led RC0
#int_TIMER1
void TIMER1_isr(void) 
{
set_timer1(59286);
led=!led;
}
void main()
{
set_tris_c(0x00);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(59286);
enable_interrupts(INT_TIMER1);
enable_interrupts(GlOBAL);
while(true)
{

}
}
- Link download project Click here


EmoticonEmoticon