BÀI 11 : TIMER 1 PIC16F877A CCS

1:47:00 AM
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

Share this

Related Posts

Previous
Next Post »

3 nhận xét

Write nhận xét
September 28, 2016 at 6:34 AM delete

Toàn dùng ngắt ko v? Làm cái ví dụ ko dùng ngắt được ko cậu ơi?

Reply
avatar
September 28, 2016 at 4:53 PM delete

Timer dùng để định thời với đếm sự kiện giờ kêu làm ví dụ khác sao làm !

Reply
avatar
May 13, 2020 at 8:43 AM delete

a có thể giải thích thêm về các hàm ngắt cuối chương trình... mới học tới timer nên e chưa hiểu đoạn đó

Reply
avatar