PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 15-08-2021, 03:44 PM   #1
t10000
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 6
:
Lại là TIMER0 ?

Tóm tắt Code của em:
setup_timer_0(RTCC_DIV_2);
enable_interrupts(int_timer0);
enable_interrupts(global);
set_timer0(6);

////////////
#INT_TIMER0
void TIME0_src()
{

CLEAR_INTERRUPT(INT_TIMER0);
DISABLE_INTERRUPTS(GLOBAL);
counter++;
if(counter==10000) // 1s
{
counter=0;
if(counter==0) read_time=1; //doc du lieu DS1307
}
SET_TIMER0(6);
ENABLE_INTERRUPTS(GLOBAL);
}
em tính toán theo công thức thì với thạch anh 20MHz thời gian xảy ra ngắt là 100 micro giây, đoạn code trên giúp em dùng hiển thi trên LCD để kiểm tra thì thấy thời gian xảy ra ngăt là ít hơn nhiều
1. anh chị giúp dỡ có vấn đề gì sai sai trên?
2. em vẫn chưa rõ lắm về tần số F dùng trong công thức value = (256-set_num )*DIV*4/f thì tần số này nó dùng thế nào khi khai báo
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
nó sẽ dùng tần số thạch anh hay tần số dao động nội, trong trường hợp dùng #FUSES INTRC_IO này thì chỉ thị
#use delay(clock=8000000) - chỉ thế thôi không thể là 20000000
cái delay clock này nó có liên quan gì với F trong công thức tính TIMER0 hay không?
(em dùng CCS C compiler nhé anh chj)

thay đổi nội dung bởi: t10000, 15-08-2021 lúc 04:46 PM.
t10000 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Tags
timer0


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 04:01 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam