08-05-2006, 03:17 PM | #1 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Làm thế nào để timeout khi dùng hàm getc() của CCS sau một thời gian nhất định, định trước? GETC() là một hàm mà CCS đã có sẵn trong thư viện của nó, nhiệm vụ của getc() là chờ nhận một ký tự mà ký tự đó được truyền tới từ một đầu cuối khác thông qua công truyền thông nối tiếp UART. Khi dùng hàm này, chúng ta hết sức cẩn trọng bởi cái việc "chờ" một ký tự được coi là hợp lệ. Vấn đề này giải quyết thế nào đây? CCS đã mách rằng, hãy sử dụng hàm khbit(). Sau đây là một ví dụ mà CCS cung cấp để giải quyết vấn đề này:
Code:
short timeout_error; char timed_getc() { long timeout; timeout_error=FALSE; timeout=0; while(!kbhit&&(++timeout<50000)) // 1/2 second delay_us(10); if(kbhit()) return(getc()); else { timeout_error=TRUE; return(0); } } thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:56 PM. |
08-05-2006, 03:29 PM | #2 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Cách sử dụng hàm timed_getc()
Code:
char temp; //... char timed_getc(){ //... } void main(void){ //... while(1){ //... temp=timed_getc(); //... } } thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:56 PM. |
08-05-2006, 03:37 PM | #3 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Vấn đề kỳ tới, mời các bạn cùng tham gia: "Làm thế nào để truyền đi một số thực thông qua cổng truyền thông nối tiếp UART với CCS?"
Nguyen The Vinh. |
08-05-2006, 03:56 PM | #4 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Ví dụ:
Code:
//... float temp[32]; void main (void) { int8 i; for(i=0;i<32;i++)temp[i]=i; while(1) { //Bây giờ ta muốn truyền temp[0], temp[1],...,temp[i],...,temp[31] //cho PC. Phải làm thế nào đây. Xin mời các bạn! } } thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:57 PM. |
09-05-2006, 01:34 AM | #5 |
PIC Bang chủ
|
Mình di chuyển bài của bạn ra đây, vì lý do bạn post bài không đúng luồng.
Rất cám ơn những bài viết của bạn, nếu được, bạn nên viết bài kèm theo các sơ đồ nguyên lý minh họa để người đọc dễ theo dõi. Chúc vui.
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
09-05-2006, 03:36 PM | #6 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Phương án giải quyết vấn đề truyền mảng số thực
Code:
#include <16F877.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) float temp[32]; void main (void) { int8 i; for(i=0;i<32;i++)temp[i]=i; while(1) { //Bây giờ ta truyền temp[0], temp[1],...,temp[i],...,temp[31] cho PC như sau. for(i=0;i<128;i++) putc(*(&temp[0]+i)); } } thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:58 PM. |
09-05-2006, 03:39 PM | #7 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Vấn đề kỳ tới, mời các bạn cùng tham gia: "Làm thế nào để nhận một mảng số thực thông qua cổng truyền thông nối tiếp UART với CCS?"
Nguyen The Vinh. |
10-05-2006, 11:19 PM | #8 |
Đệ tử 2 túi
Tham gia ngày: Jul 2005
Bài gửi: 35
: |
Theo mình bạn nên dùng thêm 1 hoặc 2 phím để định hướng cho việc truyền dử liệu.Ví dụ phím 1 truyền mảng dử liệu trên,phím 2 dùng cho mục đích khác của chương trình.Như vậy dể kiểm soát hoạt động của chương trình,Theo đoạn code của bạn Pic sẻ liên tục gởi số liệu về PC làm PC có thể chỉ nhận được số liệu đầu tiên.Bạn nên thêm lệnh Delay_ms(x); sau lệnh putc... để PC kịp nhận dữ liệu.
|
11-05-2006, 09:55 AM | #9 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Phương án giải quyết vấn đề nhận mảng số thực
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); } thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:58 PM. |
11-05-2006, 10:04 AM | #10 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Vấn đề kỳ tới, mời các bạn cùng tham gia: "Tạo một lớp liên kết dữ liệu (Datalink layer) trên cơ sở lớp vật lý (Physical layer) là chuẩn truyền thông công nghiệp RS485?"
Nguyen The Vinh. thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 10:54 AM. |
11-05-2006, 10:45 AM | #11 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Vài nét về mô hình OSI.
ISO (International Standardization Organization) có trụ sở tại Giơnevơ, Thụy sĩ. Năm 1977, ISO được giao trách nhiệm thiết kế một chuẩn truyền thông dựa trên lý thuyết về kiến trúc các hệ thống mở, qua đó thiết kế các mạng máy tính. Mô hình này có tên là OSI (Open System Interconnect).
Mô hình OSI tổ chức các giao thức truyền thông thành bảy lớp. Mỗi lớp giải quyết một phần hẹp của việc truyền thông. 7)Application layer 6)Presentation layer 5)Session layer 4)Transport layer 3)Network layer 2)Data link layer 1)Physical layer Trong phạm trù của mạng truyền thông công nghiệp nhất là với bus trường thì Physical layer, Data link layer được xây dựng và đã được chuẩn hóa ví dụ Profibus-DP, DA. Các lớp khác không được xây dựng hoặc nếu có thì là chỉ là sự bổ xung nho nhỏ, ví dụ Application layer. Nguyen The Vinh. thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 10:57 AM. |
11-05-2006, 11:16 AM | #12 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Giới thiệu các lớp trong mô hình OSI
Lớp 1 : lớp vật lý (physical layer)
Qui định về các tính chất vật lý của hệ thống, chú ý rằng OSI không bắt buộc hay nói cách khác không qui định phải dùng một lớp vật lý cụ thể nào. Tầng vật lý liên quan đến nhiệm vụ truyền dòng bit qua đường truyền vật lý, truy nhập đường truyền vật lý nhờ các phương tiện cơ, điện... Lớp này định nghĩa vào đặc tính chính của mạng vật lý, bao gồm: 1. Cấu trúc vật lý của mạng. 2. Các định chuẩn cơ học và điện. 3. Mã hoá và định thời gian việc truyền bit. Lớp 2 : lớp liên kết dữ liệu (data link layer) Cung cấp phương tiện để truyền thông tin qua liên kết vật lý bảo đảm độ tin cậy. Lớp này qui định về sự đồng bộ hóa, đặc tính của khung dữ liệu, đánh số khung, kiểm tra lỗi, kiểm tra luồng dữ liệu trong quá trình liên lạc. Lớp nối kết dữ liệu thực hiện các công việc sau: 1. Định địa chỉ các thiết bị trong mạng. 2. Kiểm tra và có thể chỉnh sửa các lỗi truyền thông. 3. Điều khiển truy nhập bus. ... Các lớp khác không được trình bày ở đây vì mức độ quan trọng của nó trong phạm trù này, cũng như tránh việc gây ra nhiễu người đọc. Nguyen The Vinh. |
11-05-2006, 11:40 AM | #13 |
Đệ tử 2 túi
Tham gia ngày: Apr 2006
Bài gửi: 32
: |
Một ví dụ về xây dựng lớp vật lý
Các bạn xem hình sau. Hình vẽ một trạm thiết bị tham gia trong mạng truyền thông Profibus/RS485, cách ly. Ơ lạ nhỉ, sao không gửi được nhỉ?
Nguyen The Vinh. thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 12:24 PM. |
11-05-2006, 12:26 PM | #14 |
Đệ tử 8 túi
|
Em chưa hiểu rõ lắm về ý định của các bài viết, cũng như các vấn đề có liên quan khác. Anh nói rõ hơn nhé.
Anh đang viết về việc xây dựng một hệ thống mở OSI ?? Hay chỉ xây dựng lớp liên kết dữ liệu dựa trên lớp vật lí RS485?? Nếu như vậy thì nó sẽ bao gồm các vấn đề gì nhẩy? Xây dựng cơ chế định địa chỉ, xây dựng cơ chế sửa lỗi, ..., theo các cách như Profibus-DP, DA đã làm ? Tại sao mình không sử dụng chuẩn Profibus-DP, DA? Nếu như vậy thì vấn đề này có mối liên quan như thế nào đến hệ thống mở OSI. Nếu anh chỉ đặt vấn đề xây dựng lớp liên kết dữ liệu, thì các giao tiếp chỉ mang tính nội bộ, chứ chưa giao tiếp được với hệ thống OSI, vì nó cần đến các lớp cao hơn. Vấn đề về OSI đặt ra ở đây có tác dụng gì nhẩy. Và tại sao phải tuân theo OSI trong trường hợp này? Chưa hiểu rõ lắm. Anh giải thích thêm nhé. Vấn đề này em cũng đang tìm hiểu thôi, theo em biết thì hệ thống OSI tuân theo chuẩn ISO được ứng dụng trong việc trao đổi dữ liệu cho hệ thống máy tính, ngoài ra nó là cơ sở cho các dịch vụ viễn thông (N-ISDN, B-ISDN, ...). Hì, cái này được đó. Chắc sẽ còn hỏi nhiều. thay đổi nội dung bởi: ntc, 11-05-2006 lúc 12:31 PM. |
11-05-2006, 12:28 PM | #15 | |
Đệ tử 8 túi
|
Trích:
|
|
|
|
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 |