PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp cổng COM và LPT

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

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
Prev Previous Post   Next Post Next
Old 20-03-2012, 02:59 PM   #1
longtu
Đệ tử 6 túi
 
longtu's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Send a message via Yahoo to longtu
Vấn đề giao tiếp RS232 <-->PC một số ký tự nhận đúng, một số ký tự nhận sai.

Chào mọi người.
Vấn đề của mình như sau:
- Mình kết nối Max232 như sau: Xem hình: RS232 Communication.bmp
Lưu ý ở đây mình sử dụng Max232 loại SMD và các tụ điện loại ceramic Capcitor 100nF(104). Tuy nhiên, trong datasheet của Max232 nói rằng việc sử dụng tự không cực tính Ceramic là đuợc chấp nhận. Xem hình: Note(Max232 datasheet).bmp
- Đoạn code mình viết để Test việc giao tiếp RS232 đơn giãn như sau:
Code:
**********************************************************/
#include <18F24K22.h>
#use delay(clock=20000000)//Crystall 20Mhz
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT
#USE RS232(BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7)
//-------------INCLUDED FILES:
#include <historic.c>
#include <main.h> 
Void main()
{
//-------------Enable Inpout/Output:
                          
//-------------Enable Interrup vecter:
   ENABLE_INTERRUPTS(INT_RDA);                                  
   enable_interrupts(global);  
 
   while(1)
   {      
      //Do nothing!
   }
}
//------------------------------------------------------------------------------
#INT_RDA                             
void Receive_isr()                    
{      
char c;
     c=getc();                          
     delay_us(10);                                         
     putc(c);
}
Đoạn code này: PC gửi 1 ký tự nào đó xuống Microcontroller thì Microcontrller sẽ gửi trả lại ký tự đó. Sử dụng ngắt Rs232 làm việc này.
Vấn đề của mình là:Mình tử Test gửi 0, 1, 2, ...9 thì chỉ có một số ký tự đúng.
- Gửi 0 -- nhận 3E(sai) lẽ ra phải nhận 30.
- Gửi 1 -- nhận 3F(sai) lẽ ra phải nhận 31.
- Gửi 2 -- nhận 32(đúng)
- Gửi 3 -- nhận 33(đúng)
- Gửi 4 -- nhận 36(sai) lẽ ra phải nhận 34.
- Gửi 5 -- nhận 36(sai) lẽ ra phải nhận 35.
- Gửi 6 -- nhận 36(đúng)
- Gửi 7 -- nhận 37(đúng)
- Gửi 8 -- nhận 3E(sai) lẽ ra phải nhận 38.
- Gửi 9 -- nhận 3F(sai) lẽ ra phải nhận 39.
(Xem hình: Serial input-output monitor.bmp).

Mình thử đi thử lại nhiều lần, kết quả đều như vậy. Mình không rõ nguyên nhân là do đâu? bạn nào có kinh nghiệm chia sẽ giúp minh nhé?

PS: Mình đã thay IC Max232 khác kết quả vẫn không thay đổi(loại trừ hư IC Max232).

Cám ơn các bạn đã đọc bài.
Thân,
Hình Kèm Theo
File Type: bmp RS232 Communication.bmp (1.67 MB, 91 lần tải)
File Type: bmp Note(Max232 datasheet).bmp (133.8 KB, 36 lần tải)
File Type: png Serial input-output monitor.png (33.4 KB, 12 lần tải)
File Type: png RS232 Communication.png (15.8 KB, 15 lần tải)
File Type: png Note(Max232 datasheet).png (8.9 KB, 12 lần tải)
__________________
--------------------------------------------------------------------------------------
Phùng Minh Tuân
Email: tuan.phmt@gmail.com
"Cuộc đời sóng gió nuôi ta lớn
Bao lần thất bại dạy ta khôn".
longtu 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à 10:35 PM.


Đượ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