PDA

View Full Version : Pic rs232 ???!!!


thientaisodo
25-05-2009, 06:41 PM
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 :((




#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,bi ts=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ư.