Thông báo

Collapse
No announcement yet.

Sử dụng xung PWM và Timer0 Pic16f877A

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

  • Sử dụng xung PWM và Timer0 Pic16f877A

    Tôi sử dụng timer 0 để tạo delay 1 giây, khi chưa khai báo xung PWM thì Pic chạy đúng 1 giây,nhưng khi khai báo thì timer 0 chạy sai đi. Mất khoảng 5 giây để tăng 1 đơn vị.

    Đây là code:

    #include <main.h>
    #include <var.h>
    #include "lcd.c"
    #include "timer.c"
    int8 counter,t;
    //==============================================
    //delay timer 1s
    #INT_TIMER0
    void timer0_interrupt(void)
    {
    set_timer0(12);
    counter++;
    if(counter>79)
    counter=0;
    if(counter==79) // 1s
    {
    t++;
    }
    }
    //==============================================
    //chong trình chính
    void main()
    {
    unsigned char str[20];
    LCD_Init();
    setup_timer_2(T2_DIV_BY_1,59,1);
    setup_ccp1(CCP_PWM);
    set_pwm1_duty(50);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
    set_timer0(12);
    enable_interrupts(INT_TIMER0);
    enable_interrupts(GLOBAL);
    LCD_Clear();
    // vong lap
    while(TRUE){
    sprintf(str,"%u",t); //print t(s)
    LCD_Gotoxy(0,0);
    LCD_Puts(str);
    }
    }

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X