PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp cổng COM và LPT (http://www.picvietnam.com/forum/forumdisplay.php?f=44)
-   -   Pic rs232 ???!!! (http://www.picvietnam.com/forum/showthread.php?t=4169)

thientaisodo 25-05-2009 06:41 PM

Pic rs232 ???!!!
 
Có ai giúp em với ?! Giao tiếp PIC16F877A - RS232, nó vẫn gửi và nhận dữ liệu từ máy tính bình thường, những mỗi tội là ký tự rờ rờ, chả đúng gì cả, gửi 1 ký tự từ máy tính xuống , nó hiển thị lên LCD và phát trở lại máy tính mà sai bét , hu hu, ai giúp em với :((


Code:


#include <16f877a.h>
#include <def_877a.h>
#device *=16                                     
#use delay(clock=20000000)                                                 
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stop=1)     
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#include <lcd_lib_4bit.c>       
                                                             
char c;                                           
char d[]="Test RS232";
int8 i;
                                                     
#INT_RDA                           
void Receive_isr()                   
{                                 
    c=getc();                         
    delay_us(10);                                       
    //printf(c);
    putc(c);
}                                                 
/////////////////////////////////////////////

void main()                 
{                                       
  ENABLE_INTERRUPTS(INT_RDA);                                 
  enable_interrupts(global);             

  lcd_init();
                                     
  for(i=0;i<10;i++)
  {
      //printf(d[i]);                   
      putc(d[i]);                             
  }                       


  while(1)
  {                                 
      lcd_putcmd(0xC0);
      lcd_putchar(c);
  } 
}


thientaisodo 25-05-2009 07:18 PM

Hic, thử nối 2 con PIC với nhau thì vẫn truyền hình như chẳng đúng, bó tay bó cẳng, nếu không có ai giúp nữa có lẽ là bó bột :(

thientaisodo 28-05-2009 11:15 AM

HIc, chuối cả nải các bác ạ, cắm cái LCD vào thì nó bị nhiễu ngay, em đoán là nó hút dòng của Max232 nên sinh ra điện áp sai :(. Bây giờ lại có vấn đề là truyền nhận ký tự thì ok, nhưng mà số thì hình như theo một cách nào đó thì phải, ví dụ khi gõ số 0 từ máy tính và gửi sang PIC thì PIC phản hồi về hiển thị được củ đậu gì đó, đọc dạng hex thì là 0xF0, tương tự số 1 là 0xF1 ... số 9 là 0xF9 ..........
Ai có thể giải thích giúp em đc ko?

ngotuyen 28-05-2009 06:05 PM

Mã ACSII của số 0 là 0x30, còn tùy xem bạn truyền số 0 được hiểu theo nghĩa như thế nào:
- Nếu là số nhị phân thì bạn có thể hiểu theo hai cách: 0b00000000 (0x00 theo Decimal = 0) hay 0b00110000 (0x30 mã ACSII của số 0)
- Tương tự như thế số 9: 0b00001001 (0x09 theo Decima = 9) hay 0b00111001 (0x39 mã ACSII của số 9)

TANDEM 06-06-2009 05:19 PM

Hi thientaisodo! Bạn lưu ý một vấn đề nhỏ đó là: Xung nhịp của Thạch anh trên mạch phải đúng bằng xung nhịp khai báo trong CCS.

ThaoBinh90 09-06-2009 12:33 PM

Theo mình thấy vấn đề của bạn thientaisodo không phải là ở code PIC, cơ bản là bạn đã giao tiếp được với PC và đã truyền nhận dữ liệu được. Vấn đề của bạn là bạn xử lý dữ liệu PC nhận được chưa phù hợp. Không biết bạn kiểm tra dữ liệu nhận được từ PIC như thế nào? Bạn lưu vào file, xuất ra màn hình? Bạn viết chương trình trên PC giao tiếp vơi PIC dùng phần mềm gì ?

manhha2799 09-06-2009 03:03 PM

Bạn tét cổng com trước. Nối tx và rx lại. Xem cổng com có sao ko đã. KO được tìm cách khác. Coi chừng com hư.


Múi giờ GMT. Hiện tại là 10:17 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam