Thông báo

Collapse
No announcement yet.

[Help] Timer0 của 18F4431 chạy chậm

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

  • [Help] Timer0 của 18F4431 chạy chậm

    Chào mọi người .... mình đang gặp vấn đề sử dụng timer0 của 18F4431 thì timer chạy rất chậm ... cả trên mô phỏng lẫn thực tế ... mạch thật mình sử dụng thạch anh 20M + tụ 15p

    Code:
    #include <18F4431.h>
    
    
    #device adc=16
    
    #FUSES NOWDT                    //No Watch Dog Timer
    #FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
    #FUSES HS                          //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
    #FUSES NOBROWNOUT          //No brownout reset
    #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    
    
    #use delay(clock=20000000)
    
    #define LCD_RS_PIN      PIN_B7                                    ////
    #define LCD_RW_PIN      PIN_B6   
    #define LCD_ENABLE_PIN  PIN_B5                                    ////
    
    #define LCD_DATA4       PIN_B4                                    ////
    #define LCD_DATA5       PIN_B3                                    ////
    #define LCD_DATA6       PIN_B2                                    ////
    #define LCD_DATA7       PIN_B1    
    
    #include <lcd.c>
    
    
    
    int8 count=0;
    int8 dem=0;
    #INT_TIMER0
    void ngat()
     { 
      count++;                                           
    
     }
    
    
    void main()
    {
    
       enable_interrupts(int_timer0);
       setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8);
       enable_interrupts(global);
       set_timer0(6);//  0.4ms
       
       lcd_init();
       delay_ms(100);
       lcd_gotoxy(1,1);
       lcd_putc("Timer 0");
    
       
    
       
     while(TRUE)
      {
          if(count==50)                 //20ms
          {
             dem++;
             lcd_gotoxy(1,2);
             printf(lcd_putc,"%d",dem);
             count=0;
          }
    
         
       }
    
    }


    Mình sử dụng protues 7.10 ... Rất mong mọi người giúp đỡ ....
    Attached Files

  • #2
    Chậm là chậm thế nào

    Comment


    • #3
      Mình so sánh chương trình trên với chương trình

      Code:
      while(TRUE)
        {
               delay_ms(20);
               dem++;
               lcd_gotoxy(1,2);
               printf(lcd_putc,"%d",dem);
         }

      Trong chương trình sử dụng TImer thì vòng lặp 20ms nhưng phải chờ mấy s , vòng while mới thực hiện một lần ... mình đã test trên mạch thật ... cũng như trên mô phỏng đều bị ....
      Thì thấy chậm hơn ... cả 2 đều delay 20 ms mà ???

      Comment


      • #4
        2 cái không xuất phát cùng lúc thì làm sao phát hiện nó chậm hay nhanh ?

        Code:
        int x;
        while(true)
        {
             set_timer0(0);
             delay_us(400);
             x=get_timer0();
             lcd_gotoxy(1,2);
             print....(.....,x);
        }
        Trong thời gian trễ 400us thì timer 0 đếm được tầm 250. x nhận giá trị trả về là 250. Kiểm tra kết quả hiện thị x trên lcd xem sao nhé.

        Mà quên. Timer0 của 18F4431 là 16 bit cơ mà. Chả trách chậm

        Comment


        • #5
          he he ...! đọc lại datasheet về timer0 đi
          Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

          Comment


          • #6
            Thanks duong_act ! mình làm được rồi !!! Timer0 của 18F4431 có 2 chế độ 8bit và 16bit

            Comment


            • #7
              muốn nó là 8 bit thì T016bit=1;
              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              • bqviet
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi bqviet
                Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                06-12-2025, 17:17
              • nguyendinhvan
                Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                bởi nguyendinhvan
                Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                05-12-2025, 19:59
              • afrendly
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi afrendly
                Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                04-12-2025, 01:27
              • nick22
                Trả lời cho Máy điện châm ?
                bởi nick22
                Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                01-12-2025, 13:23
              Đang tải...
              X