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

Ứng dụng Capture của timer1

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • ndminh1307
    Nhập môn đệ tử
    • Dec 2017
    • 1

    #1

    Ứng dụng Capture của timer1

    Em có chương trình viết để đọc giá trị timer1 khi có xung chân CCP1(RC2). Theo em biết, khi có xung xuống ở chân RC2 thì giá trị timer 1 sẽ được lưu vào thanh ghi CCPR1L (biến CCPRL). Nhưng em cho hiển thị LCD thì giá trị chỉ từ 0 - 255. Mà timer 1 lại là timer 16 bit, giá trị đếm từ 0-65535. Chương trình của em có đúng không ạ? Nếu đúng tại sao giá trị timer1 chỉ từ 0-255 ạ?
    Code CCS:
    #include <16f877a.h>
    #fuses noput,hs,nolvp,nobrownout,noprotect
    #use delay(clock=20M)

    #define LCD_ENABLE_PIN PIN_D2
    #define LCD_RS_PIN PIN_D0
    #define LCD_RW_PIN PIN_D1
    #define LCD_DATA4 PIN_D4
    #define LCD_DATA5 PIN_D5
    #define LCD_DATA6 PIN_D6
    #define LCD_DATA7 PIN_D7

    #include <lcd.c>

    #byte CCPRL = 0x15
    #byte CCPRH = 0x16
    #bit CCP1IF = 0x0c.2
    long int count = 0, i;
    int c1,c2,c3,c4,c5;

    void main(){
    set_tris_c(0xFF);
    setup_CCP1(CCP_CAPTURE_FE);
    setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
    set_timer1(0);
    lcd_init();
    CCPRL = 0;
    CCPRH = 0;
    while(1){
    count = CCPRL;
    i = count;
    c1 = i/10000;
    i = i%10000;
    c2 = i/1000;
    i = i%1000;
    c3 = i/100;
    i = i%100;
    c4 = i/10;
    c5 = i%10;

    lcd_gotoxy(1,1);
    lcd_putc("c=");

    lcd_gotoxy(5,1);
    lcd_putc(c1+48);
    lcd_gotoxy(6,1);
    lcd_putc(c2+48);
    lcd_gotoxy(7,1);
    lcd_putc(c3+48);
    lcd_gotoxy(8,1);
    lcd_putc(c4+48);
    lcd_gotoxy(9,1);
    lcd_putc(c5+48);

    if(CCP1IF == 1){
    count = CCPRL;
    i = count;
    c1 = i/10000;
    i = i%10000;
    c2 = i/1000;
    i = i%1000;
    c3 = i/100;
    i = i%100;
    c4 = i/10;
    c5 = i%10;

    lcd_gotoxy(1,1);
    lcd_putc("c=");

    lcd_gotoxy(5,1);
    lcd_putc(c1+48);
    lcd_gotoxy(6,1);
    lcd_putc(c2+48);
    lcd_gotoxy(7,1);
    lcd_putc(c3+48);
    lcd_gotoxy(8,1);
    lcd_putc(c4+48);
    lcd_gotoxy(9,1);
    lcd_putc(c5+48);
    }

    }
    }
Working...