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...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 29-03-2010, 02:39 AM   #16
anhtuongpro88
Nhập môn đệ tử
 
Tham gia ngày: Mar 2010
Bài gửi: 2
:
em mới học pic. em muốn viết một ctrinh nhân một kí tự (A) từ pc qua cổng rs232 xuống vdk pic6f877a và lập trình cho vdk đó xuất tín hiệu ra chân B0 để dk thiết bị ngoại vi. rât mong được sự giúp đỡ của các pác. thanks!
anhtuongpro88 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-03-2010, 12:24 AM   #17
anhtuongpro88
Nhập môn đệ tử
 
Tham gia ngày: Mar 2010
Bài gửi: 2
:
các pác giup em chuong trinh nhận một ki tu A tu may tinh xuong pic 16f877a, va tu do lap trinh cho vdk xuất tín hiêu ra chan B0 di ạ. chuong trinh viet bang ccs. cac pác giup em voi!
anhtuongpro88 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2010, 01:31 AM   #18
nguyenthanhdt5
Nhập môn đệ tử
 
Tham gia ngày: Sep 2008
Bài gửi: 3
:
Anh Hard ơi cho em hỏi một chút. Nếu truyền dữ liệu dạng khung có nhiều trường như anh nói( kích thước lớn) qua UART thì làm thế nào?
Mọi người cho em xin ý kiến!
Thanksss!
nguyenthanhdt5 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-05-2010, 10:29 PM   #19
thuc101
Nhập môn đệ tử
 
Tham gia ngày: Mar 2009
Bài gửi: 8
:
truyền nối tiếp rs232
mình mới vào nghề pic6f877a cho mình hỏi cái này chút:
nếu như mình gửi xuống bằng vb6 thì khi gửi xuống cho pic nó sẽ hiểu là mã ascii phai không vậy thì làm sao để pic có thể hiểu được nhỉ
chương trình mình dùng vb6 với mscomm gửi các số từ 0 dến 150 xuống cho pic6f877a(dùng ccs)vậy thì có 2 vấn đề xảy ra như thế này:
-khi truyền từ pc vb6 sẽ truyền mã ascii phải ko ạ như vậy số 1 mà pc truyền la 49 vậy pic nhận như thế nào để xuất ra portd là 00000001 và gửi lên pc là số bao nhiêu để vb6 hiển thị số 1
-và 1 vấn đề nữa là khi gửi số có 2 chữ số trở lên thì phải gửi như thê nào nữa ví dụ mình gửi số 127 từ pc xuống pic rồi hiển thị bằng cách quét led với portd va porte.rồi mình gửi từ pic lên cho pc số 132 để hiển thị lên text2.text trên vb6
MONG CÁC BÁC LÂU NĂM TRONG NGHỀ GIÚP ĐỠ!
RẤT MONG ĐƯỢC HỒI ÂM CỦA CÁC BẠN TRONG DIỄN ĐÀN VÌ MÌNH ĐANG RẤT CẦN
thuc101 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-05-2010, 10:30 PM   #20
thuc101
Nhập môn đệ tử
 
Tham gia ngày: Mar 2009
Bài gửi: 8
:
mong được các bác giúp đỡ để mình có thể làm được
nếu có ai vô tình ghé qua thì cũng xin góp ý cho minh với
cam on rat nhieu!
thuc101 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-05-2010, 05:50 PM   #21
tungbka
Đệ tử 1 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 11
:
Trích:
Nguyên văn bởi thuc101 View Post
truyền nối tiếp rs232
mình mới vào nghề pic6f877a cho mình hỏi cái này chút:
nếu như mình gửi xuống bằng vb6 thì khi gửi xuống cho pic nó sẽ hiểu là mã ascii phai không vậy thì làm sao để pic có thể hiểu được nhỉ
chương trình mình dùng vb6 với mscomm gửi các số từ 0 dến 150 xuống cho pic6f877a(dùng ccs)vậy thì có 2 vấn đề xảy ra như thế này:
-khi truyền từ pc vb6 sẽ truyền mã ascii phải ko ạ như vậy số 1 mà pc truyền la 49 vậy pic nhận như thế nào để xuất ra portd là 00000001 và gửi lên pc là số bao nhiêu để vb6 hiển thị số 1
-và 1 vấn đề nữa là khi gửi số có 2 chữ số trở lên thì phải gửi như thê nào nữa ví dụ mình gửi số 127 từ pc xuống pic rồi hiển thị bằng cách quét led với portd va porte.rồi mình gửi từ pic lên cho pc số 132 để hiển thị lên text2.text trên vb6
MONG CÁC BÁC LÂU NĂM TRONG NGHỀ GIÚP ĐỠ!
RẤT MONG ĐƯỢC HỒI ÂM CỦA CÁC BẠN TRONG DIỄN ĐÀN VÌ MÌNH ĐANG RẤT CẦN
Mình cũng mới học qua về phần truyền nhận này, mình nghĩ bạn có thể làm như sau:
- Gửi từ PC xuống, bản có thể gửi theo 1 chuỗi xuống với ký tự cuối cùng là @ chẳng hạn để vi điều khiển có thể nhận biết và vi điều khiển sẽ nhận từng ký tự cất vào 1 mảng. Chương trình có thể tham khảo như sau:

#INT_RDA
void Receive_isr()
{
text[dem]=getc();
if(text[dem]=='@') //kiem tra dieu kien ket thuc
{
flag =1; //ket thuc nhan, bat co bao
dem=0;
}
else dem++;
}

- Còn truyền từ vi điều khiển lên thì chỉ cần dùng hàm printf là được.
VD: hiển thị số 132 là printf("%Lu",132)
tungbka vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-05-2010, 03:11 PM   #22
Non_Stop(^_^)
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 1
:
cảm ơn all các bạn rất nhiều .
Non_Stop(^_^) vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-11-2010, 08:30 AM   #23
TheHouse
Đệ tử 1 túi
 
Tham gia ngày: Feb 2010
Bài gửi: 13
:
Mình vẫn chưa giao tiếp được, mặc dù mình chỉ truyền nhận 1 ký tự thôi..

Code:
#include <16f877a.h>
#use delay (clock=20000000)
#use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7)
#byte portb=0x06
#byte trisb=0x86
#byte portc=0x07
#byte trisc=0x87


void main()
{
trisb=0;
while(true)
{
   portb = 0x00;
   putc(0x00);
   delay_ms(100);
   portb = 0xff;
   putc(0xff);
   delay_ms(100); 
}
}
TheHouse vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2011, 09:40 AM   #24
huuminhtsqtt
Nhập môn đệ tử
 
Tham gia ngày: Mar 2011
Bài gửi: 2
:
mình sử dụng 2 con pic 16f877 để giao tiếp với nhau qua cổng RS232. nhưng chúng không hiểu được nhau. Bạn nào đã làm rồi cho mình xin code hoặc hướng dẫn giúp mình nhé. mình xin cảm ơn nhiều.
huuminhtsqtt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-03-2011, 09:01 PM   #25
stupid11
Đệ tử 6 túi
 
stupid11's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TP.Hồ Chí Minh
Bài gửi: 133
:
Send a message via Yahoo to stupid11
Trích:
Nguyên văn bởi tungbka View Post
Mình cũng mới học qua về phần truyền nhận này, mình nghĩ bạn có thể làm như sau:
- Gửi từ PC xuống, bản có thể gửi theo 1 chuỗi xuống với ký tự cuối cùng là @ chẳng hạn để vi điều khiển có thể nhận biết và vi điều khiển sẽ nhận từng ký tự cất vào 1 mảng. Chương trình có thể tham khảo như sau:

#INT_RDA
void Receive_isr()
{
text[dem]=getc();
if(text[dem]=='@') //kiem tra dieu kien ket thuc
{
flag =1; //ket thuc nhan, bat co bao
dem=0;
}
else dem++;
}

- Còn truyền từ vi điều khiển lên thì chỉ cần dùng hàm printf là được.
VD: hiển thị số 132 là printf("%Lu",132)

Bạn tungbka cho mình hỏi mảng text[dem] bạn khai báo kiểu gì

int text[dem] hay char text[dem] ..mình đang phân vân chỗ này.
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-04-2011, 10:14 PM   #26
121388th
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 12
:
to dang viet chuong trinh dieu khien con robot cung dung rs232 va muon ket hop tong the voi chuong trinh khac : tuc la to muon dung nut bam de chon che do dieu khien theo rs232 hay che do onchip nhung kho hieu sao ma chuong trinh nay kho the chay khi ket hop ca hai chuong trinh dc ?? ai bit lam cach nao de ket hop chung voi nhau xin chi giup to !! thanks rat rat rat rat nhieu
121388th vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-04-2011, 10:17 PM   #27
121388th
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 12
:
to quen mat to dung pic6f877a va ccs de viet chuong trinh va vb de truyen thong
121388th vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-04-2011, 10:29 PM   #28
121388th
Đệ tử 1 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 12
:
cho to hoi chan ngat trong khi dung rs232 la chan nao vay ?? va chuong trinh ngat cho no thi viet tong quat ntn ?? hic hic to moi bat dau hoc nen kho hieu may mong moi nguoi chi giup !!!
121388th vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-04-2011, 11:21 PM   #29
stupid11
Đệ tử 6 túi
 
stupid11's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TP.Hồ Chí Minh
Bài gửi: 133
:
Send a message via Yahoo to stupid11
Smile

Trong PIC16F877A có 2 ngắt truyền thông
-ngắt RDA:ngắt xảy ra khi nhận được 1 ký tự qua cổng nối tiếp.
#int_RDA()
-ngắt TBE:xảy ra khi bộ đệm truyền trống.
#int_TBE()

-Bạn nên xem lại datasheet của pic16f877a
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-05-2011, 05:09 PM   #30
htungtdh3
Nhập môn đệ tử
 
Tham gia ngày: Dec 2009
Bài gửi: 1
:
Trích:
Nguyên văn bởi tungbka View Post
Mình cũng mới học qua về phần truyền nhận này, mình nghĩ bạn có thể làm như sau:
- Gửi từ PC xuống, bản có thể gửi theo 1 chuỗi xuống với ký tự cuối cùng là @ chẳng hạn để vi điều khiển có thể nhận biết và vi điều khiển sẽ nhận từng ký tự cất vào 1 mảng. Chương trình có thể tham khảo như sau:

#INT_RDA
void Receive_isr()
{
text[dem]=getc();
if(text[dem]=='@') //kiem tra dieu kien ket thuc
{
flag =1; //ket thuc nhan, bat co bao
dem=0;
}
else dem++;
}

- Còn truyền từ vi điều khiển lên thì chỉ cần dùng hàm printf là được.
VD: hiển thị số 132 là printf("%Lu",132)
bác cho em hỏi, truyền dữ liệu từ vi điều khiển lên PC cần lưu ý gì nữa không ạ
em sử dụng câu lệnh printf("truyen") nhưng trên PC không nhận đuợc gì cả.
còn truyền từ PC - VDK thì VDK vẫn hiển thị tốt ạ.
htungtdh3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Giao tiếp RS232 trên PC ngohaibac Giao tiếp cổng COM và LPT 193 18-02-2025 09:11 AM
Giao tiếp RS232 trên PC qua Matlab ngohaibac Giao tiếp cổng COM và LPT 47 18-11-2015 03:51 PM
cần mua bộ thu GPS có giao tiếp RS232 kienvq Tìm mua sản phẩm 15 17-03-2011 11:25 PM
Help! Dùng C để giao tiếp RS232 dandiennang Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 6 15-03-2009 06:41 PM
IO Ports và GUI dùng lập trình giao tiếp RS232 ngohaibac Matlab-Simulink & Labview & 20-Sim 0 26-12-2006 10:07 PM


Múi giờ GMT. Hiện tại là 06:48 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