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 11-05-2011, 12:18 PM   #1
pantovi
Nhập môn đệ tử
 
pantovi's Avatar
 
Tham gia ngày: Feb 2011
Bài gửi: 5
:
RS232 và PIC16f877a

Code của mình như thế này mà nó không chạy, có ai biết sai chỗ nào không ?
Mục đích là khi nhận kí tự 1 từ máy tính thì sẽ set RA0=0, nhận kí tự 2 sẽ set RA1=0

#include <16F877a.h>
#include <def_877a.h>
#use delay(clock=20MHz,crystal)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#define role1 RA0
#define role2 RA1

unsigned char data;
#int_rda
void ngat()
{
data = getc();
}


void main()
{
TRISA = 0x00;
PORTA = 0xFF;
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
while(1){
if (data==0x31) role1=0;
if (data==0x32) role2=0;
}
}
__________________
Kí một phát: roẹt roẹt roẹt

thay đổi nội dung bởi: pantovi, 12-05-2011 lúc 06:50 PM. Lý do: sai
pantovi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 10:01 PM   #2
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
-Bạn khai báo Port A ngõ vào ra số như vậy là không được rồi...Muốn port A là ngõ-vào ra số thì phải tác động vào thanh ghi ADCON1 ->tất cả các pin là digital
-Vì port A-E được cấu hình mặc định sau khi Reset là ngõ vào Analog.Trong datasheet có ghi rất rõ phần này..
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 12:27 AM   #3
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
mình thấy khai báo trisa thế cũng ổn rồi mà,mình cũng điều khiển port a để kích opto thấy ok cả mà,nhưng ko làm giao tiếp như pantovi.
tienchuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 10:23 AM   #4
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
while(1){
if (data=='A') role1==1;
if (data=='B') role2==1;
}

Bạn viết như thế này là không ổn rồi !
Bạn phải hiểu role1==1 khác với role1=1.

+role1==1 tức là so sánh.
+role1=1 gán giá trị.
Mà mình cũng ko hiểu vì sao bạn lại cho PORTA=0XFF..làm như vậy thì vừa vào chương trình Role đã đóng hết rồi..cần gì đk nữa..
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 05:29 PM   #5
tanbka
Đệ tử 5 túi
 
Tham gia ngày: Dec 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 91
:
Chắc bạn không để ý, chứ nếu bạn ghi lệnh
if (data=='A') role1==1;
if (data=='B') role2==1;
thì chương trình dịch sẽ báo lỗi chứ.
Với lại giá trị khởi tạo ban đầu thì PORTA = 0x00, bạn để 0xFF thì nó bằng 1 hết rồi, nhận hay không nhận dữ liệu nó cũng ko thay đổi gì nữa.
tanbka vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 06:52 PM   #6
pantovi
Nhập môn đệ tử
 
pantovi's Avatar
 
Tham gia ngày: Feb 2011
Bài gửi: 5
:
mình đã sửa lại yêu cầu và code rồi, nhưng vẫn chưa chạy, có câu hỏi này: "khi nào thì PIC biết nhận dữ liệu mà ngắt rda hoạt động ?"
__________________
Kí một phát: roẹt roẹt roẹt

thay đổi nội dung bởi: pantovi, 12-05-2011 lúc 06:55 PM. Lý do: sai
pantovi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 07:44 PM   #7
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
Ngắt RDA xảy ra khi nhận được 1 ký tự trong bộ đệm nhận..dùng ngắt để tránh việc khỏi phải chờ dữ liệu nhận về..đơn giản vậy thôi..Bạn viết ngắt như trên là ổn rồi...
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 08:05 PM   #8
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
đúng là code bạn ko thấy sai chỗ nào cả,hôm nay mới đọc kĩ
mình nghĩ bạn thử thay thạch anh 11.0592Mhz thử,hình như con thạch anh này tạo ra tốc độ baud (9600)chuẩn hơn thạch anh 20Mhz của bạn,mình chưa làm phần này nên cũng suy luận vậy thôi,pantovi thử xem,chúc thành công.mà nếu có làm được thì báo cho ae biết nhỉ
Thân,bạn có thể pm hỏi mấy anh admin thử, có thể mấy anh sx giúp bạn giải quyết được.
tienchuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-01-2012, 11:59 PM   #9
acestartn
Nhập môn đệ tử
 
Tham gia ngày: Oct 2010
Bài gửi: 2
:
Arrow mong các bạn giúp mình với

mình đang làm đề tài giao tiếp máy tính,điều khiển thiết bị và đo nhiệt độ.
mình có tham khảo chương trình của Stupid11.Mình làm theo,kết nói được nhưng đèn trên vb ko sáng.các bạn có thể giúp mình gửi nhiệt độ lên vb được ko?
File Kèm Theo
File Type: rar gui.rar (21.3 KB, 18 lần tải)
acestartn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 10:46 PM   #10
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
Bạn thử lấy chương trình này để test thử xem sao..mình thấy giao tiếp RS232 giữa PIC và PC cũng không khó lắm quan trọng là 2 phía phải hiểu định dạng dữ liệu của nhau...
File Kèm Theo
File Type: rar Test_VB.rar (4.30 MB, 1403 lần tải)
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-05-2011, 11:42 PM   #11
khienpzo
Đệ tử 5 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 107
:
hay quá lại gặp Dũng ở đây !! cũng đang làm VB giao diện điều khiển thiết bị đây . Nhưng qua mạng truyền thông RS485 và chỉ sử dụng 2 dây giao tiếp với 3 thiết bị thôi ... Đã tìm hiểu vấn đề này chưa góp ý cho tớ với ...Ah quên đồ án ông sao rồi ??
khienpzo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-05-2011, 11:46 PM   #12
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
Tôi cũng làm truyền thông qua RS485(1 master 3 slave)..Chương trình VB với Code trên VĐK cũng khá ngon lành rồi..giờ đang làm phần cứng..hôm nào xong qua xem chơi...Hjjj.
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-05-2011, 10:12 AM   #13
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
tại sao không thấy max232 vậy bạn.vậy có sự khác biệt nào giữa hai cái này không tức là có max232 va không có max232 thì truyền nhận có khác nhau không.mình đang tìm hiểu vb mà chưa có kết quả gì hết .ai có tài liệu về lập trình vb trong truyền nhận cho mình với.thank nhiều
phatcddt08a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-05-2011, 11:18 AM   #14
khienpzo
Đệ tử 5 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 107
:
uh hôm nào tớ rỗi tớ qua ...tớ cũng làm vấn đề đó nên cũng muốn xem thử .Ròi có gì thì chỉ giáo với .hihi
khienpzo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-05-2011, 01:52 PM   #15
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
xong không có ai chỉ mấy cái tuyệt chiêu nhỉ.mình giờ đang rối tung lên rồi.cú với mọi người
phatcddt08a 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à 03:06 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