|
Tài trợ cho PIC Vietnam |
Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển... |
|
Ðiều Chỉnh | Xếp Bài |
|
15-12-2016, 11:44 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Sep 2016
Bài gửi: 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 ạ |
Tags |
ds18b20, pic16f877a, rs232, uart |
|
|