![]() |
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 Xin được giúp đỡ . Cám ơn nhiều ! |
Ở đ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! |
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! |
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 } |
ở 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 ! |
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ẻ |
ở đâu vậy?
|
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è . |
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 ?
|
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.
|
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ự. |
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.
|
Trích:
|
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