help set timer 0

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • maino17771
    Nhập môn đệ tử
    • Jun 2011
    • 4

    #1

    help set timer 0

    Mình muốn sao mỗi giây thì tăng giá trị của Port D lên 1 lần.

    Sao mình mô phỏng trên protues thì lâu hơn 1 giây nó mới tăng lên 1 lần.Không lẽ mình giá trị của set_Timer0 không đúng.
    Ai giúp mình với.

    #include <16F877A.h>
    #include <DEF_877a.h>
    #fuses NOWDT,PUT,XT,NOPROTECT
    #use delay(clock=4000000)
    #byte PORTB = 0x06

    int16 count;
    int8 a,b;
    int8 c;
    //Chuong trinh ngat TMR0
    #int_timer0
    void interrupt_timer0()
    {
    set_timer0(6);
    ++count;
    if(count == 2000) // 2000*500us = 500000us = 1s
    {
    count=0;
    a++;
    if(a ==10)
    {
    a=0;
    b++;
    if(b==6)
    b=0;
    }
    c=b<<4;
    c=c+a;
    PORTD = c;
    }
    }
    //Chuong trinh chinh
    void main(void)
    {
    set_tris_d(0);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
    enable_interrupts(int_timer0|global);
    set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us
    a=0;
    b=0;
    c=0;
    while(true)
    {
    }
    }
  • pstin
    Đệ tử 7 túi
    • Jul 2010
    • 190

    #2
    Cái này trên mạch thật tui thấy cũng có sai chút ít về thời gian!!!!!!!!. Đoán là trong CCS nó bị trễ vài chu kỳ lệnh ở chổ nào đó!!!!!!!!!.
    Chơi cùi là tính toán nhập lại giảm giá tri của count hoặc set lại giá trị ban đầu của timer0 sao cho nó đúng 1S là OK thôi!!!!!!!!!!!!!

    Comment

    • dinhthem
      Đệ tử 2 túi
      • Apr 2008
      • 34

      #3
      Không phải đâu, thời gian trong Protues bị sai đó!
      Mình đã làm rồi, nếu không tin thì bạn xài realtime của nó, chạy chậm hơn 5 - 6s / 1 phút
      Góp ý thêm cho bạn là dùng timer1, 16bit + 3bit prescale = 19 bit rồi, sẽ hạn chế nhiều chu kì lệnh, thời gian sẽ chính xác hơn. (khi đó biến count của bạn = 2 là đủ)

      Comment

      • onkhacdokh
        Nhập môn đệ tử
        • Mar 2012
        • 4

        #4
        có bạn nào hiểu tường tận về timer và counter không giúp mình với và minh còn có một thắc mắc nữa là làm thế nào để tăng thêm cổng nhập dữ liệu cho pic nhỉ

        Comment

        Working...