![]() |
|
Tài trợ cho PIC Vietnam |
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 |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 5
: |
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 } Xin được giúp đỡ . Cám ơn nhiều ! thay đổi nội dung bởi: namqn, 05-12-2008 lúc 05:43 PM. |
![]() |
![]() |
![]() |
#2 |
Đệ tử 4 túi
Tham gia ngày: Mar 2007
Nơi Cư Ngụ: Da Nang
Bài gửi: 69
: |
Ở đ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! |
![]() |
![]() |
![]() |
#3 |
Đệ tử 2 túi
Tham gia ngày: Oct 2008
Bài gửi: 44
: |
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! |
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 5
: |
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 } |
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 5
: |
ở 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 ! |
![]() |
![]() |
![]() |
#6 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 5
: |
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ẻ |
![]() |
![]() |
![]() |
#7 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 7
: |
ở đâu vậy?
|
![]() |
![]() |
![]() |
#8 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 5
: |
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è . |
![]() |
![]() |
![]() |
#9 |
Đệ tử 1 túi
|
![]() |
![]() |
![]() |
![]() |
#10 |
Đệ tử 7 túi
Tham gia ngày: Aug 2007
Bài gửi: 213
: |
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 ?
|
![]() |
![]() |
![]() |
#11 |
Đệ tử 7 túi
Tham gia ngày: Aug 2007
Bài gửi: 213
: |
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.
|
![]() |
![]() |
![]() |
#12 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
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ự. |
![]() |
![]() |
![]() |
#13 |
Đệ tử 7 túi
Tham gia ngày: Aug 2007
Bài gửi: 213
: |
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.
|
![]() |
![]() |
![]() |
|
|