PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Cơ bản về timer (CCS C) (http://www.picvietnam.com/forum/showthread.php?t=3260)

dream 05-12-2008 05:32 PM

Cơ bản về timer (CCS C)
 
Mình hiện nay cũng đang làm mạch đếm sản phẩm dùng PIC hiển thị số đếm ra LCD . chương trình mình viết dùng CCS Compile . Nhưng hiện nay không biết cách sử dụng Timer của PIC như thế nào . Mong các huynh đệ giúp đỡ .
Sau đây là một đoạn chương trình tham khảo sử dụng Timer mà mình không hiểu :
Code:

        set_timer0(0);      //Gan gia tri ban dau cho counter
        setup_timer_1(T1_EXTERNAL); // khoi tao timer 1 dem xung ngoai
        while (1)
            {

              giatri=get_timer0();  //Lay gia tri trong cac thanh ghi cua counter


              HEX_BCD();          //goi chuong trinh con HEX_BCD
              hienthi();            //goi chuong trinh con hien thi

            }

về phần cứng thì ngõ vào xung ngoại mình cấp là xung clock đưa vào chân RA4/TOCKI/C1OUT . Khi mô phỏng dùng proteus thì đã chạy , nhưng không hiểu rõ timer .
Xin được giúp đỡ . Cám ơn nhiều !

0903579509 07-12-2008 10:26 AM

Ở đoạn chương trình trên, chỉ làm việc ở timer0, không quan tâm đến timer1, bạn nên thay dòng lệnh :
setup_timer_1(T1_EXTERNAL); // khoi tao timer 1 dem xung ngoai
bằng dòng lệnh:
setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1) // khởi tạo timer0 đếm xung ngoài theo cạnh lên, prescaler = 1
Chúc vui!

trungduc 07-12-2008 12:36 PM

Mình cũng đang quan tâm đến vấn đề đếm bằng timer0. Anh em nào có code ASM cho mình tham khảo với.
Thanks!

dream 07-12-2008 11:35 PM

chương trình trên tui thấy khi chạy chương trình thì nó đếm từ 0-->255.
Giờ muốn đặt trước số đếm thì làm sao các Bác .
Nghĩa là tui muốn cho nó đếm từ 0-->100 thôi.
Sau đây tôi có tham khảo được một đoạn chương trình sau .Nhờ các bác phân tích dùm nhé :

setup_counters(rtcc_ext_l_to_h, rtcc_div_1); //khoi tao counter0 o che do dem
// voi he so chia 1
i=208;

while(1)
{
set_rtcc(208); //dat truoc gia tri cho counter vao thanh ghi option*/

while (tmr0!=0) //tang bien dem thanh ghi option*/

{
a=(tmr0-i);
}

HEX_BCD(); //goi chuong trinh con HEX_BCD
hienthi(); //goi chuong trinh con hien thi

}

dream 07-12-2008 11:46 PM

ở chương trình trên : tui thấy hàm set_rtcc(208) có nghĩa là đặt trước số đếm ban đầu là 208. sau đó hàm a=(tmr0-i) là lấy số đếm từ 0-->50.
Như vậy số đếm sản phẩm của chương trình là 50 thoi .
khi tui thử với chương trình của mình thì thấy báo lỗi ở dòng lệnh while(tmr!=0) với thông báo là "undefined identifier tmr0" . Nghĩa là nó không xác định được tmr0 .
theo tui biết thì tmr0 là thanh ghi chứa số đếm của Timer0 .
Vậy không hiểu cái lỗi đó là sao hả các Bác .

các Bác giúp em với !

dream 12-12-2008 01:09 PM

Cơ bản về timer (CCS c)
 
Dưới đây là bài đếm sản phẩm hiển thị LCD tui đã mô phỏng xong .
chương trình mô phỏng proteus , ngôn ngữ C.
Bác nào chưa biết có thể tham khảo .
chúc các bác một ngày vui vẻ

thongdtk3 22-12-2008 01:03 AM

ở đâu vậy?

dream 22-12-2008 11:47 PM

2 Attachment(s)
Bữa trước mình post lên nhưng không được . Nay post được rùi .
Bác nào quan tâm có thể tham khảo nè .

thaithien 16-04-2009 02:00 AM

Có ai giải thích dùm là đếm cạnh lên và cạnh xuống là thế nào không ?Ảnh hưởng tới ngắt như thế nào ?

thaithien 18-04-2009 12:28 AM

Làm ơn giúp dùm đi.Cho hỏi thêm câu nữa về chức năng timer và counter của timer0 đi.Chưa hiểu nhiều lắm mặc dù đã search diễn đàn rồi.

phandinh 18-04-2009 10:38 AM

cạnh lên (rising edge) : thay đổi từ mức 0 ==> mức 1.
cạnh xuống (falling edge) : thay đổi từ mức 1 ==> mức 0.
Timer dùng để delay , đếm (counter), hoặc 1 số timer có chức năng đặc biệt.
việc dùng ngắt timer làm cho chương trình trở nên linh hoat hơn phương pháp tuần tự.

thaithien 18-04-2009 11:47 AM

Ai có chưong trình để thể hiện 2 hiện hai chức năng counter và timer của timer0 cho mình xin.Nếu có các code khác cũng được.Cảm ơn rất nhiều.

the_duyet 13-05-2009 03:45 AM

Trích:

Nguyên văn bởi dream (Post 21614)
Bữa trước mình post lên nhưng không được . Nay post được rùi .
Bác nào quan tâm có thể tham khảo nè .

Cảm ơn bạn,nhưng sao tôi tải về lại không có file dsp.c,bạn có thể share cho mọi người nghiên cứu được không? Rất mong hồi âm của bạn!Cảm ơn!


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam