Giao tiếp UART RS232 giữa Pic16f877a và PC

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • cuocsong6so
    Nhập môn đệ tử
    • Sep 2016
    • 1

    #1

    Giao tiếp UART RS232 giữa Pic16f877a và PC

    Chào mọi người.
    mọi người cho mình hỏi với.mình dùng pic16f877a giao tiếp uart với máy tính.dùng máy tính để điều khiển đóng ngắt relay.dùng thạch anh 20mhz baud 38400.Trước làm trên bo thì cả truyền và nhận đều ok

    Nhưng bây giờ chuyển qua mạch in thì bị lỗi là chỉ truyền lên được chứ máy tính gửi xuống không được nữa.mình test mạch in các kiểu rồi.đo nhiệt độ và truyền lên PC vẫn ok nhưng mà bây giờ gửi xuống không gửi được.mình cũng đã thay 2 con tụ 33p rồi nhưng vẫn không được.
    có ai giúp mình được ko
    mình cảm ơn.
    Code của mình đây:
    #include <main.h>


    char C;
    char Data[20];
    char Index=0;
    int1 Finish=0;

    #INT_RDA

    void NgatUART(void)
    {
    C = getc();
    if(C!='.')
    {
    Data[Index]=C;
    Index=Index+1;
    if(Index>19)
    {
    Index=0;
    }
    }
    else
    {
    Index=0;
    Finish=1;
    }
    }


    void main(void)
    {
    int1 TrangThai[] = {0,0};
    int8 hightemp=37, lowtemp=28;
    float temperature;
    lcd_init();
    lcd_putc('\f');
    clear_interrupt(INT_RDA);
    enable_interrupts(INT_RDA);
    enable_interrupts(GLOBAL);
    //set_tris_b(0x80);

    output_bit(Bulb,0);
    output_bit(Fan,0);
    lcd_gotoxy(1,1);
    printf(lcd_putc,"Waiting.....");

    while(TRUE){
    //

    if(Finish==1)
    {

    Finish=0;
    lcd_gotoxy(1,2);
    printf(lcd_putc,"%s",Data);
    printf("%s",Data);

    for(Index=0;Index<20;Index++)
    {
    Data[Index]=' ';
    }
    Index=0;
    }



    Temperature = ds18b20_read();
    lcd_gotoxy(1,1);
    printf(lcd_putc,"Temp=%3.2f",temperature);
    lcd_putc(223);
    lcd_putc("C");
    printf("%3.2f:",temperature);



    }
    delay_ms(100);
    }


    Mọi người giúp mình được không,mình cảm ơn trước ạ
Working...