Thông báo

Collapse
No announcement yet.

Timer0 của pic16f54,57

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Timer0 của pic16f54,57

    Đây là chương trình ngắt timer0 hay làm:
    HTML Code:
    #int_timer0
    void interrupt_timer0()
    {
       set_timer0(6);
       ++count;
       if(count == 2000)   // 2000*500us = 500000us = 1s
          {
             count=0;
             rotate_left(&a,1);
          }
    }
    //Chuong trinh chinh
    void main(void)
    {
       set_tris_b(0);
       enable_interrupts(int_timer0);
       setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); 
       enable_interrupts(global);
       set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us
       a = 0x01;
       
       while(true)
       {
          PORTB = a;
       }
    }

    Mình sử dụng ccs c. Nhưng khi lập trình cho con vdk 16f54 thì ko biết cách gọi ngắt timer của con vdk này. Có bác nào biết xin chỉ giúp.

    Nó ko cho khai báo những hàm như sau:
    - enable_interrupts(INT_TIMER0);
    - enable_interrupts(global);

    Nó chi cho sử dụng hàm sau:
    - setup_TIMER_0(RTCC_INTERNAL );
    - set_timer0();
    get_timer0();

    Vậy thì ko biết nên sử dụng thế nào nữa. Khi nào thì ngắt timer sẽ tràn.

    Mình có thể làm như thế này ko:

    if (get_timer0()=100) { work... }

    Web:[url]www.ledviet.info/url]
    Email:
    DĐ:0949299699

  • #2
    Check lai datasheet PIC16f54, loại PIC này hình như không hỗ trợ ngắt đâu. Nó tối giản thiết kế để giảm chi phí mà. Nếu dùng timer thì chỉ còn cách check giá trị timer để biết có tràn hay không.
    Ethernet-RS232, PIC Webserver, RFID Reader
    CallerID, Cảnh báo BTS, ...
    0988006696
    linhnc308@gmail.com
    http://linhnc308.blogspot.com

    Comment


    • #3
      Làm mãi mà ko được. Bỏ luôn con này.

      Web:[url]www.ledviet.info/url]
      Email:
      DĐ:0949299699

      Comment


      • #4
        Dòng 16F5x không có bất kỳ ngắt nào, làm việc mệt muốn chết. Tuy nhiên vì ít tài nguyên nên cũng rất thú vị khi áp dụng các kỹ thuật lập trình đa nhiệm của hệ điều hành thời gian thực (mutex, semaphore ...) Với các dòng PIC mạnh hơn thì lại chả cần.
        Phần mềm tự do hoặc không dùng máy tính nữa !.

        Comment


        • #5
          Con 16F54 , 16F57 mua ở đâu hả các bác .Muốn thử 1 cái chơi . Dòng này chắc rẻ lắm

          Comment


          • #6
            Tới R&P mua, hai con này lúc nào cũng có.

            Mấy con này bán sỉ thì cực rẻ rồi. Trong dòng nạp lại được (không kể mấy con chip đổ và chip nạp một lần của Tàu) thì nói chung bọn này là thiên hạ vô địch rẻ rồi.

            Chúc vui
            Falleaf
            Công ty TNHH Thương mại và Giao nhận R&P
            58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
            mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

            Comment


            • #7
              Tiện thể Falleaf cho hỏi chỗ R&P có bán pic C không nhỉ

              Comment


              • #8
                Bạn không nên "tiện thể" vì các Mod sẽ không "ngó lơ" với các bài viết "tiện thể" đâu.

                Nếu bạn muốn mua bán gì, xin email cho F, hoặc gọi điện tới công ty. Rất vui nếu bạn định mua phần mềm PICC, vì từ ngay HTPICC được MCHP mua lại, chưa có ai hỏi mua cái này.

                Chúc vui
                Falleaf
                Công ty TNHH Thương mại và Giao nhận R&P
                58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                Comment


                • #9
                  Thấy datasheet có ghi timer0(ngắt nội), mà ko biết làm thế nào. Có anh em nào làm thì chỉ nhé. Giá rẻ mà khó xài quá. Ccs c lập trình ko thành công

                  Web:[url]www.ledviet.info/url]
                  Email:
                  DĐ:0949299699

                  Comment


                  • #10
                    Nguyên văn bởi manhha2799 Xem bài viết
                    Thấy datasheet có ghi timer0(ngắt nội), mà ko biết làm thế nào. Có anh em nào làm thì chỉ nhé. Giá rẻ mà khó xài quá. Ccs c lập trình ko thành công
                    Bác chỉ cho e xem chỗ nào trong datasheet ghi timer0 có ngắt với, xưa giờ e làm với hàng đống ứng dụng với PIC16F54, 57, 59 mà chẳng biết là cái datasheet nó có ghi có ngắt timer0. Với kinh nghiệm mà e làm trên PIC, thì có thể nói, CCS C dịch tốt nhất cho dòng Base Line. Trước giờ e cũng toàn làm bằng CCS C cho dòng Base Line, rất ổn, không có chuyện không thành công. Với dòng Mid Range trở lên, có lẽ Hi-Tech C ổn định hơn
                    Diễn đàn Vi điều khiển:

                    Comment


                    • #11
                      Nguyên văn bởi manhha2799 Xem bài viết
                      Đây là chương trình ngắt timer0 hay làm:
                      HTML Code:
                      #int_timer0
                      void interrupt_timer0()
                      {
                         set_timer0(6);
                         ++count;
                         if(count == 2000)   // 2000*500us = 500000us = 1s
                            {
                               count=0;
                               rotate_left(&a,1);
                            }
                      }
                      //Chuong trinh chinh
                      void main(void)
                      {
                         set_tris_b(0);
                         enable_interrupts(int_timer0);
                         setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); 
                         enable_interrupts(global);
                         set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us
                         a = 0x01;
                         
                         while(true)
                         {
                            PORTB = a;
                         }
                      }

                      Mình sử dụng ccs c. Nhưng khi lập trình cho con vdk 16f54 thì ko biết cách gọi ngắt timer của con vdk này. Có bác nào biết xin chỉ giúp.

                      Nó ko cho khai báo những hàm như sau:
                      - enable_interrupts(INT_TIMER0);
                      - enable_interrupts(global);

                      Nó chi cho sử dụng hàm sau:
                      - setup_TIMER_0(RTCC_INTERNAL );
                      - set_timer0();
                      get_timer0();

                      Vậy thì ko biết nên sử dụng thế nào nữa. Khi nào thì ngắt timer sẽ tràn.

                      Mình có thể làm như thế này ko:

                      if (get_timer0()=100) { work... }

                      pic 16f5x không bao giờ có ngát đâu bạn ạ. kiếm ra cái ngát trong đó là chuyện khó đó bạn.
                      chúc vui
                      email:
                      chỉ được liên lạc từ 19h00 - 21h30



                      Comment

                      Về tác giả

                      Collapse

                      manhha2799 Tìm hiểu thêm về manhha2799

                      Bài viết mới nhất

                      Collapse

                      Đang tải...
                      X