PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-09-2006, 11:26 PM   #31
hoangngoc
Nhập môn đệ tử
 
hoangngoc's Avatar
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 10
:
Mỗi đường truyền RS485 có thể kết nối với 32 thiết bị. Như vậy giả sử có một mạng gồm < 32 kit điều khiển thì chỉ cần dùng 1 cặp max485 (song công), và 32 kit này sẽ được nối với 4 đường dây đó thông qua một mạch ghép nối trung gian?

Em có tham khảo một mạng chỉ có 2 kit điều khiển nhưng dùng 2 cặp max485 như trong hình. 1 kit nối với J7 và 1 kit nối với J3. Vậy là sao?

thay đổi nội dung bởi: hoangngoc, 28-09-2006 lúc 11:29 PM.
hoangngoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-09-2006, 11:33 PM   #32
ghosts_84
Nhập môn đệ tử
 
Tham gia ngày: Sep 2006
Bài gửi: 2
:
các bác có biết lập trình mô phỏng OpenGL ko chỉ cho đệ biết với
Bác nào có tài liệu nào tiếng việt nào ko? chỉ giúp em
ghosts_84 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-09-2006, 03:37 AM   #33
hoangminh1234
Đệ tử 1 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 23
:
Trích:
Nguyên văn bởi NTVinh View Post
Code:
#include <16F877.h>
#device *=16
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=2000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  // 

int8 i;
float temp[32];

#int_rda
void serial_isr() {
*(&temp[0]+i)=getc();
i++;if(i==128)i=0;
}
void main() {
i=0;
do {
//...
} while (TRUE);
}
Nguyen The Vinh.
minh ko hieu cho nay *(&temp[0]+i)=getc(); mong bạn chỉ kỹ hơn tí nhé
hoangminh1234 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-09-2006, 09:55 AM   #34
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Cool

Trích:
Nguyên văn bởi hoangngoc View Post
Mỗi đường truyền RS485 có thể kết nối với 32 thiết bị. Như vậy giả sử có một mạng gồm < 32 kit điều khiển thì chỉ cần dùng 1 cặp max485 (song công), và 32 kit này sẽ được nối với 4 đường dây đó thông qua một mạch ghép nối trung gian?
A: Em có thể đặt lại câu hỏi rõ ràng hơn được không. Nói chung là nếu chuyển nguyên văn câu hỏi trên thành một câu trả lời thì cũng được.
Nguyễn Thế Vinh.

thay đổi nội dung bởi: falleaf, 30-09-2006 lúc 01:50 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-09-2006, 10:05 AM   #35
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Smile

Trích:
Nguyên văn bởi hoangngoc View Post
Em có tham khảo một mạng chỉ có 2 kit điều khiển nhưng dùng 2 cặp max485 như trong hình. 1 kit nối với J7 và 1 kit nối với J3. Vậy là sao?
A: Oki, nối như vậy là được rồi. Tuy nhiên, nối như vậy chỉ mang tính chất là minh hoạ thôi, chứ thực tế ai lại nối như thế đúng không, tốn tiền. Chỉ có hai kit điều khiển thôi mà lại phải làm phức tạp!!! Cái mạch nguyên lý của em "chỉ thích hợp" khi:
1. Em muốn thiết kế một mạng có hơn 32 thành viên tham gia.
2. Em không mua được IC truyền thông RS485 mà IC đó cho phép đấu nối lớn hơn 32 thành viên, ví dụ IL485W.
3. Em cần một mạng truyền thông song công.

Nguyễn Thế Vinh.

thay đổi nội dung bởi: falleaf, 30-09-2006 lúc 01:50 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-09-2006, 10:22 AM   #36
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Talking

Trích:
Nguyên văn bởi hoangminh1234 View Post
minh ko hieu cho nay *(&temp[0]+i)=getc(); mong bạn chỉ kỹ hơn tí nhé.
A: Để dễ hình dung, mình xin lấy một ví dụ mã giả như sau nhé. Cái mã giả này có nội dung là, bạn muốn nhận 32 số kiểu float về vi điều khiển (PIC6F877, AT89C51, DS89C420,...) từ một thiết bị đầu cuối nào đó thông qua cổng truyền thông RS232. Theo chuẩn RS232, và theo đặc điểm của các vi điều khiển đã liệt kê ở trên, ta thực hiên mã giả như sau.
- Khai báo một mảng 32 phần tử dạng float, bắt đầu từ địa chỉ 0x0010 trong ram.
float temp[32] _at_ 0x0010;
- Như vậy, tại địa chi 0x0010 sẽ đựng nôi dung của byte chứa bit dấu của số thực temp[0]..., tại địa chỉ 0x0014 đựng nội dung của byte chứa bit dấu của số thự temp[1]...
- Như vậy thì...ôi, thôi, viết dài quá!!! Bạn tự suy luận tiếp nhé.
Nguyễn Thế Vinh.

thay đổi nội dung bởi: falleaf, 30-09-2006 lúc 01:51 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-09-2006, 09:37 AM   #37
hoangngoc
Nhập môn đệ tử
 
hoangngoc's Avatar
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 10
:
Em hiểu rồi, cảm ơn anh Vinh nhé. Trong quá trình làm, nếu có gì vướng mắc, em sẽ hỏi tiếp.
hoangngoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-09-2006, 01:54 PM   #38
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Khi cám ơn một bài viết, hãy bấm vào nút cám ơn, thay vì viết một bài khác. Diễn đàn mới có tính năng này. Số lượng bài được mọi người cám ơn sẽ hiện ngay bên dưới nick.

to NTVinh: khi bạn bấm quote một bài để trả lời, bạn xóa hết các phần không quan trọng, nhưng nhớ chừa lại chữ [/quote] để nó hiển thị đúng. Nếu không nó sẽ hiển thị sai và nhìn rất rối rắm.

Rất cám ơn các bạn .

chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-02-2007, 03:20 PM   #39
phamhuydangcdt
Nhập môn đệ tử
 
Tham gia ngày: Jan 2007
Bài gửi: 7
:
chao cac ban cac ban co the cho minh mot cai nhin tong quan nhat ve
CCSC va HTPIC duoc khong ? cam on
phamhuydangcdt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-04-2007, 04:17 PM   #40
hungnp
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 15
:
Chào tất cả các bác,

Tôi cũng có đọc về mạng truyền thông modbus sử dụng chuẩn 485 cho lớp vật lý(lớp 1), và giao thức truyền thông master/slave cho lớp 2(datalink). Tôi có một số thắc mắc mà đến giờ vẫn chưa giải đáp được, mong các bác giúp đỡ.

Câu 1: Về lý thuyết tôi thấy trong giao thức master/slave cho phép kết nối tối đa 256(vì nó dùng một byte để định địa chỉ cho các slave) slave. Nhưng chắc chắn trong thực tế số lượng này là viễn tưởng. vậy các bác có thể đưa ra được những nguyên nhân rõ ràng nhất để mọi người có thể biết một cái RS232/RS485 converter mà họ làm ra có thế kết nối được bao nhiêu slave không?

Câu 2: khả năng tải của cặp dây(nếu dùng loại 2 dây) và đôi cặp dây( nếu dùng loại 4 dây), có nghĩa là độ dài của đường truyền tối đa của nó được ước lượng như thế nào?(trong khi lý thuyết của nó vào khoảng 1200m).

Cảm ơn các bác nhiều.
hungnp vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-10-2007, 10:49 PM   #41
hampic
Đệ tử 1 túi
 
hampic's Avatar
 
Tham gia ngày: Sep 2007
Bài gửi: 14
:
Trích:
Nguyên văn bởi hpecom View Post
Mong anh chỉ bảo:
_ Nếu em muốn truyền một số thực từ máy tính xuống PIC qua RS232 thì có được không?
_ Nếu được mong anh cho em một ví dụ viết trên MS Comm của Visual Basic 6.0.
Cảm ơn anh!
Rất mong anh.
hpecom.
hehe, theo mình nghĩ thì truyền cái gì cũng được nhưng chú ý là rs232 mỗi lần truyền 1 byte cho nên, một số có giá trị lớn hơn 255 thì truyền coi chừng bị sai. Khi đó, bạn nên chuyển sang chuỗi và truyền rồi khi nhận thì ghép lại.
Viết bằng MS Comm trong VB thì dể mà, bạn muốn thử gửi 1 giá trị nào thì có thể tạo một editbox rồi lấy giá trị trong nó gán cho hàm Output. Nhận thì dùng cách bẩy sự kiện OnComm() với CommEvent = comEvReceive rồi nhận giá trị từ hàm Input.
Xem file đính kèm để hiểu rỏ hơn (có ví dụ).

Thân
File Kèm Theo
File Type: pdf Io_ch26.pdf (600.2 KB, 777 lần tải)
__________________
Góp tay đưa điều khiển tiến lên !
CNC - niềm mơ ước của tôi !
hampic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-11-2007, 01:01 AM   #42
LeDuc
Đệ tử 6 túi
 
LeDuc's Avatar
 
Tham gia ngày: Mar 2007
Bài gửi: 150
:
Cho mình hỏi vậy nếu ta truyền một dữ liệu 8bit qua cổng nối tiếp thì làm thế nào vậy?
[code/]
#include <16F877.h>
#device *=16 adc=8
#fuses HS,NOWDT,NOPROTECT,NOLVP

#use delay(clock=20000000)
#use fast_io(a)
#use fast_io(d)
#use rs232(baud=19200,parity=n,xmit=pin_C6,rcv=pin_c7,b its=8)

int8 led[] ={0,1,2,3,4,5,6,7,8,9},k=0;
int8 so[4];
int8 quet[]={128,64,32,16};
int32 a,b,value;

#int_rtcc
void rtcc()
{
set_timer0(99);
b=a;
so[0]=a%10; a/=10;
so[1]=a%10;a/=10;
so[2]=a%10; a/=10;
so[3]=a; a=b;
portd=led[so[k]]+ quet[k]; k++;
if(k==4); k=0;
}

void main()
{
trisa=255;
trisd=0;
setup_adc(adc_clock_internal);
setup_adc_ports(all_analog);
set_adc_channel(0);
set-timer_0(rtcc_internal|rtcc_div_128);
enable_interrupts(int_rtcc);
enable_interrupts(global);
set_timer0(99);
while(true)
{
delay_ms(10);
value=read_adc();
a=value;
}
}
[/code]

Bây giờ để truyền dữ liệu qua cồng nối tiếp , mình phải làm sao đây ?
Bình thường phải tốn hết 8 chân VDK ở port d , nếu truyền qua cổng nối tiếp thì chỉ cần tốn có 2 chân con VDK hà . Rất mong các huynh chi giáo giúp đệ...
Thanks
__________________
_________________________________________________
Le Trung Duc
Industry Research & Application Center
NTT Institute of Hi_technolog
ltduc@ntt.edu.vn
leduc_cktd@yahoo.com.vn
http://www.nttc.edu.vn
CNC DIY : http://quangcaosanpham.com/shop/driverservo
0909300332

thay đổi nội dung bởi: LeDuc, 16-11-2007 lúc 01:11 AM.
LeDuc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-11-2007, 10:35 AM   #43
tiendungkct
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 69
:
Bạn Thử Dung Giao Tiếp I2c Or Usart Xem Sao
Phấn Mền Thì Có Thể Tự Viết Bắng Vc++or Vb
Mình Cũng đang Làm Về Phần Này Hỵ Vọng Sẽ đươc Các Bạn Hỗ Trợ
Thanks
tiendungkct vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-06-2008, 05:55 AM   #44
thuyvu
Nhập môn đệ tử
 
thuyvu's Avatar
 
Tham gia ngày: Oct 2007
Bài gửi: 7
:
Send a message via Yahoo to thuyvu
Trích:
Nguyên văn bởi NTVinh View Post
A: Để dễ hình dung, mình xin lấy một ví dụ mã giả như sau nhé. Cái mã giả này có nội dung là, bạn muốn nhận 32 số kiểu float về vi điều khiển (PIC6F877, AT89C51, DS89C420,...) từ một thiết bị đầu cuối nào đó thông qua cổng truyền thông RS232. Theo chuẩn RS232, và theo đặc điểm của các vi điều khiển đã liệt kê ở trên, ta thực hiên mã giả như sau.
- Khai báo một mảng 32 phần tử dạng float, bắt đầu từ địa chỉ 0x0010 trong ram.
float temp[32] _at_ 0x0010;
- Như vậy, tại địa chi 0x0010 sẽ đựng nôi dung của byte chứa bit dấu của số thực temp[0]..., tại địa chỉ 0x0014 đựng nội dung của byte chứa bit dấu của số thự temp[1]...
- Như vậy thì...ôi, thôi, viết dài quá!!! Bạn tự suy luận tiếp nhé.
Nguyễn Thế Vinh.
Bạn nào có mạch chuyển đổi RS485 sang RS232 thì gửi cho mình xin vơi:xuanvudk2@gmail.com
thuyvu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-06-2008, 10:26 AM   #45
Hard
Đệ tử 2 túi
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Huế
Bài gửi: 26
:
Send a message via Yahoo to Hard
Hi,
Các bác cho tui hỏi cách nhảy đến Địa chỉ = (địa chỉ hiện tại + 2000) trong CCS bằng cách nào. Tui tìm trong Help mà không thấy cách nào để lấy địa chỉ con trỏ chương trình cả. Rất mong các bác chỉ giáo vụ này vì tui cũng chưa tiếp xúc với CCS nhiều.
Thân ái.
Hard 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
Căn bản về xử lý ảnh? falleaf Xử lý ảnh 26 21-08-2016 01:14 AM
bài tập thực hành căn bản orcad tanhot Thực hành 24 05-07-2011 09:26 AM
Tự động hóa nguyên công chế tạo tinhthanthep PIC - Thiết kế và Ứng dụng 1 17-01-2006 09:42 AM


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