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 03-11-2008, 04:29 PM   #16
naivatho
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Nơi Cư Ngụ: BKHCM
Bài gửi: 17
:
bác toàn ơi sao chương trình chạy được nhưng vẫn chưa truyền nhận được
đây là code của em
trên vb
Private Sub cmdtruyen_Click()
Dim rstr As String
rstr = txttruyen.Text
If (Val(rstr) < 1000) And (Val(rstr) > 0) Then
l = Len(rstr)
If (l = 1) Then
rstr = "000" + rstr
End If
If (l = 2) Then
rstr = "00" + rstr
End If
If (l = 3) Then
rstr = "0" + rstr
End If
End If
MSComm1.Output = rstr
End Sub

Private Sub Form_Load()
With MSComm1
.CommPort = 1
.Settings = "19200,N,8,1"
.PortOpen = True
.RThreshold = 1
End With
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then
txtnhan.Text = txtnhan.Text + MSComm1.Input
End If
End Sub
code tren pic
#include<18f452.h>
#include <stdlib.h>
#use delay(clock=20000000)
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7)
int y;
void getvalue()
{
int16 x;
int i;
char s[1]; //khai báo so^' lu+o+.ng chuo^~i truye^`n
for(i=0;i<4;i++) //so^' ký tu+. truye^`n xuo^'ng
s[i]=getc(); //nhan s vao tu tu dang chuoi
x=atol(s); //chuyen chuoi sang so
y=x; //so^' ba.n ca^`n truye^`n ?ây
printf("%lu",x); //xuat gia tri x ra pc so ko dau
}

void main()
{
while(1)
{
if (y==0)
getvalue();
}

}
e vẫn chưa hiểu đoạn bác gán y =0 để làm gì!!!!
và chỗ getvalue(); là lấy giá trị đúng không bác
sao e vẫn chưa truyền nhận được
mong bác sớm hồi âm
e truyền số 100 mà không được
naivatho vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2008, 04:29 PM   #17
naivatho
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Nơi Cư Ngụ: BKHCM
Bài gửi: 17
:
bác toàn ơi sao chương trình chạy được nhưng vẫn chưa truyền nhận được
đây là code của em
trên vb
Private Sub cmdtruyen_Click()
Dim rstr As String
rstr = txttruyen.Text
If (Val(rstr) < 1000) And (Val(rstr) > 0) Then
l = Len(rstr)
If (l = 1) Then
rstr = "000" + rstr
End If
If (l = 2) Then
rstr = "00" + rstr
End If
If (l = 3) Then
rstr = "0" + rstr
End If
End If
MSComm1.Output = rstr
End Sub

Private Sub Form_Load()
With MSComm1
.CommPort = 1
.Settings = "19200,N,8,1"
.PortOpen = True
.RThreshold = 1
End With
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then
txtnhan.Text = txtnhan.Text + MSComm1.Input
End If
End Sub
code tren pic
#include<18f452.h>
#include <stdlib.h>
#use delay(clock=20000000)
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7)
int y;
void getvalue()
{
int16 x;
int i;
char s[1]; //khai báo so^' lu+o+.ng chuo^~i truye^`n
for(i=0;i<4;i++) //so^' ký tu+. truye^`n xuo^'ng
s[i]=getc(); //nhan s vao tu tu dang chuoi
x=atol(s); //chuyen chuoi sang so
y=x; //so^' ba.n ca^`n truye^`n ?ây
printf("%lu",x); //xuat gia tri x ra pc so ko dau
}

void main()
{
while(1)
{
if (y==0)
getvalue();
}

}
e vẫn chưa hiểu đoạn bác gán y =0 để làm gì!!!!
và chỗ getvalue(); là lấy giá trị đúng không bác
sao e vẫn chưa truyền nhận được
mong bác sớm hồi âm
e truyền số 100 mà không được
naivatho vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2008, 06:34 PM   #18
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
mình gửi cho bạn chuơng trình mình đã test đây,sẵn giao diện luôn,bạn thao khảo đi,mình đã test ok roi
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2008, 07:02 PM   #19
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
-mình viết 1 cái đơn giản cho bạn test thư cái này mình đã test ok rồi,bạn tham khảo thử
-nuế kô chạy có thể phần cứng bạn có vấn đề, bạn kiểm tra lại phần cứng thư,chú ý chiều khi gắn tụ...
File Kèm Theo
File Type: rar pic_viet_nam.rar (6.7 KB, 465 lần tải)
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2008, 07:07 PM   #20
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
đoạn code trên chỉ nhận được một lần(quên cho y=0 trong hàm getvalue),khi cho y = 0 thì quá trình luôn được tiếp diễn vì trong hàm chính dò nuế y=0 thì xảy ra quá trình nhận, bạn có thể dùng ngắt nối tiếp RDA để truyền nhận cũng được
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2008, 11:40 PM   #21
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
cho hỏi ở đây ai đã truyền số thập phân xuống và xuất số đó ra lcd chưa,xin chỉ giáo tiểu đệ,ví dụ truyền số 0.001,sao đó xuất y chang số đó ra lcd,và truyền một lúc 10 số như vậy xuất ra tuần tự,nói rõ công dụng hàm atof() (chuyển đổi string sang số chấm động)
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-11-2008, 08:59 PM   #22
naivatho
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Nơi Cư Ngụ: BKHCM
Bài gửi: 17
:
Bác Toàn ơi!!
Sao Bác gởi cho em cái chương trình trên VB mà chỉ có cái form thôi
Ko có chương trình nên e chưa test được
Mong bác sớm gởi lại cho tiểu đệ
Chương trình của bác xuất ra lcd à.e chỉ cần pic nhận được sau đó xuất lên lại màn hình trên VB ở ô nhận thôi.để em biết rằng pic đã nhận được giá trị mà mình truyền xuống.
E đã viết chương trình trên VB rồi,nó truyền tốt và khi nối chân 2,với 3 của cổng Com lại thì nó hiển thị giá trị em truyền trên ô nhận nhưng khi đưa vào mạch pic thì khi truyền ô nhận trên VB chẳng xuất hiện được giá trị e muốn truyền !!!!!!
Mong các cao nhân giúp đỡ tiểu đệ
naivatho vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-11-2008, 10:03 PM   #23
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
cái đó file.exe đó chạy thôi,code trên píc là gửi cho bạn rồi,đã test mà sao kô chạy,chương trình đó có trả giá trị mà bạn gửi xuống pic nữa bạn xem ky đi,bạn chỉ cần dịch chương trình mình gửi nạp file hex vào chạy file.exe đó,nhấn connect sau đó đánh chuỗi cần truyền vào input, output sẽ hiện ở dòng dưới coi như ok
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-01-2009, 04:55 PM   #24
thang8831
Đệ tử 2 túi
 
Tham gia ngày: May 2008
Bài gửi: 37
:
Các bác ah! Em thấy trong chương trình các bác viết không nói gì đến các hoạt động của VDK ở bên ngoài, tức em không thấy trong chương trình có khai báo các port mà VDK sẽ nhận hoặc xuất dữ liệu ra phần cứng và hoạt động của các chân đấy trong quá trình truyền và nhận dữ liệu với PC trên chương trình. Tiểu đệ còn non kiến thức mong các bác chỉ giúp. Cám ơn mọi người nhiều!
thang8831 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-01-2009, 08:25 PM   #25
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
khai báo chân txd và rxd, sử dụng modun rs232 ngay đoạn đầu,
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-01-2009, 11:10 PM   #26
thang8831
Đệ tử 2 túi
 
Tham gia ngày: May 2008
Bài gửi: 37
:
ý em không phải hỏi về 2 chân đó bác ah! Mà em chưa hiểu ở chỗ các chân của các port mà mình thiết kế để điều khiển các phần cứng bên ngoài chẳng hạn xuất mức 1 hoặc 0 ra 1 chân nào đó hoặc dữ liệu nhận về ở 1 chân nào đấy sao không thấy các bác nói đến trong chương trình? Chương trình em chỉ thấy VĐK nhận và truyền trở lại bằng các hàm getc và putc mà chẳng thấy nó điều khiển cái gì thông qua chân nào cả. Mong các bác chỉ giúp em. Cám ơn mọi người nhiều!
thang8831 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-03-2009, 03:21 PM   #27
tranvangvn
Nhập môn đệ tử
 
Tham gia ngày: Feb 2009
Bài gửi: 7
:
Xin hỏi mọi người khai báo cái này mục đich là gì vậy
#include <16F876A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_A2, rcv=PIN_A3)
em viết cho vi điều khiển bằng C nhưng máy tính toàn báo nỗi khung truyền vì thế C có cân không
tranvangvn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2009, 10:45 PM   #28
digan
Đệ tử 1 túi
 
digan's Avatar
 
Tham gia ngày: Jan 2006
Bài gửi: 14
:
Xin chào! Mình thử giao tiếp mãi mà ko dc không biết sai sót ở đâu. mình dùng cachs bật các led ở Port b để báo là có truyền thông
#include <16f877a.h>
#include <def_877a.h>
//#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOWRT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9)
char buf;
int a;
// Ngat Truyen thong
#INT_RDA
Receive_isr()
{

buf=getc();
putc(buf);
PORTB=0x00;

Các cao thủ KT hộ với. tôi nghi là sai phần khai báo(đánh dấu), nhưng mục này thường copy nên ko rõ bản chất
digan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2009, 11:43 PM   #29
phandinh
Đệ tử 6 túi
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
:
bạn phải post toàn bộ code lên chứ. Mình cũng đang làm về cái này, có gì mình cùng thảo luận
phandinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-04-2009, 04:08 PM   #30
digan
Đệ tử 1 túi
 
digan's Avatar
 
Tham gia ngày: Jan 2006
Bài gửi: 14
:
hik mình mới làm truyền thông thui, khi truyền được thì mới làm các thao tác tiếp theo dc.Full code:
#include <16f877a.h>
#include <def_877a.h>
//#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOWRT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)


//=================================
int buf;
// Ngat Truyen thong
#INT_RDA
Receive_isr()
{

buf=getc();
//putc(buf);
PORTB=0xF0;
}


void main()
{
// Cho phep ngat
enable_interrupts(GLOBAL); // Cho phep tao ngat
enable_interrupts(INT_EXT); // Cho phep ngat ngoai tai chan RB0/INT
enable_interrupts(INT_RDA); // Cho phep ngat ngoai tai chan RB0/INT

TRISB = 0x00; // Tat ca PORTB deu la cong xuat du lieu
// Tat het cac LED
PORTB=0x0F;

While(1)
{


}
}
digan 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


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