RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Cơ bản về timer (CCS C)

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • dream
    Nhập môn đệ tử
    • Nov 2008
    • 5

    #1

    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 !
    Last edited by namqn; 05-12-2008, 05:43 PM.
  • 0903579509
    Đệ tử 4 túi
    • Mar 2007
    • 69

    #2
    Ở đ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!

    Comment

    • trungduc
      Đệ tử 2 túi
      • Oct 2008
      • 44

      #3
      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!

      Comment

      • dream
        Nhập môn đệ tử
        • Nov 2008
        • 5

        #4
        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

        }

        Comment

        • dream
          Nhập môn đệ tử
          • Nov 2008
          • 5

          #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 !

          Comment

          • dream
            Nhập môn đệ tử
            • Nov 2008
            • 5

            #6
            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ẻ

            Comment

            • thongdtk3
              Nhập môn đệ tử
              • Oct 2008
              • 7

              #7
              ở đâu vậy?

              Comment

              • dream
                Nhập môn đệ tử
                • Nov 2008
                • 5

                #8
                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è .
                Attached Files

                Comment

                • thaithien
                  Đệ tử 7 túi
                  • Aug 2007
                  • 211

                  #9
                  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 ?

                  Comment

                  • thaithien
                    Đệ tử 7 túi
                    • Aug 2007
                    • 211

                    #10
                    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.

                    Comment

                    • phandinh
                      Đệ tử 6 túi
                      • Nov 2008
                      • 131

                      #11
                      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ự.

                      Comment

                      • thaithien
                        Đệ tử 7 túi
                        • Aug 2007
                        • 211

                        #12
                        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.

                        Comment

                        • the_duyet
                          Đệ tử 1 túi
                          • Mar 2008
                          • 18

                          #13
                          Nguyên văn bởi dream View Post
                          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!

                          Comment

                          Working...