PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 14-10-2009, 10:30 AM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi bluexylitol View Post
Đầu tiên e cám ơn bác namqn vì bác luôn tận tình giúp đỡ!
Đoạn code gửi nhận ký tự của em thế này, em không dùng ngắt:
//function name: putch_uart
//Description: send a character to serial port
//return: none
void putch_uart(unsigned char byte){
/* output one byte */
while(!TXIF) /* set when register is empty */
continue;
TXREG = byte;
}
////////////////////////////////////////////////////////////////
//function name: getch_uart
//Description: get a character from serial port
//return: received character
unsigned char getch_uart(void){
/* retrieve one byte */
while(!RCIF) /* set when register is not empty */
continue;
return RCREG;
}
////////////////////////////////////////////////////////////////
//function name: getche_uart
//Description: get a character and resend the character via
// serial port
//return: received character
unsigned char getche_uart(void){
unsigned char c;
putch_uart(c = getch_uart());
return c;
}
trong hàm main e viết thế này (trích)
{
//...
putch_uart('D');
while(1) getche_uart();
//..
}
thì ký tự nhận được không phải là D mà là cụm ba 00 00 FC
hàm getche_uart() cũng gửi về ký tự không giống ký tự gửi lên. Em cũng gửi từ PC xuống ký tự D thì nhận được từ PIC lên hoặc là E0 hoặc là 00
(E chọn phần mềm quan sát trên PC là Terminal, và set up baud là 9600)
Các từ khóa continue không có tác dụng gì trong trường hợp của bạn.

Ở main(), bạn chỉ nên xuất một ký tự và chờ nhận 1 ký tự, không nên đặt lệnh gọi hàm getche_uart() vào vòng while (1).

Theo hiện tượng bạn đã mô tả, tôi cho là baud rate hai bên không giống nhau. Bạn hãy kiểm tra lại tốc độ xung clock của PIC xem có đúng như bạn đang giả thiết hay không.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:12 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam