PDA

View Full Version : HỎi về I/O?


dvnccbmacbt
17-06-2007, 05:28 PM
Chào mọi người!
Em mới học PIc nhưng có một điều không hiểu ngay từ đầu!
Việc thiết lập chân input và output (set_tris) có ý nghĩ như thế nào? Vì em đã học qua 8051 và không thấy có chức năng này! Có thể cho em một đoạn code đề ví dụ được không! Em cảm ơn nhiều.

namqn
17-06-2007, 09:22 PM
Chào mọi người!
Em mới học PIc nhưng có một điều không hiểu ngay từ đầu!
Việc thiết lập chân input và output (set_tris) có ý nghĩ như thế nào? Vì em đã học qua 8051 và không thấy có chức năng này! Có thể cho em một đoạn code đề ví dụ được không! Em cảm ơn nhiều.
Một chân của PIC thường có thể thực hiện chức năng của cả ngõ vào lẫn ngõ ra, do đó các chân này có một thanh ghi quy định chức năng (thực tế là điều khiển trạng thái của một chân tuân theo chuẩn logic 3 trạng thái, do đó thanh ghi mới có tên là TRIS (viết tắt của tristate).

Việc bạn dùng set_tris trong câu hỏi khiến tôi cho rằng bạn đang dùng một ngôn ngữ cấp cao nào đó. Nếu đúng thì bạn cho biết ngôn ngữ và trình biên dịch bạn đang dùng luôn thì sẽ thuận tiện hơn cho người trả lời.

8051 không sử dụng logic 3 trạng thái, do đó mỗi khi bạn muốn đọc trạng thái của chân đó thì phải xuất logic '1' ra trước.

Thân,

dvnccbmacbt
18-06-2007, 12:10 AM
Vâng em dùng CCS để lập trình cho PIC! Nhưng em vẫn chưa hiểu rõ lắm! Nếu ko có Set_tris thì sao? "chuẩn logic 3 trạng thái" là gì vậy? Em còn mù mờ lắm, mong các bác thông cảm giúp. Nếu thấy em mất căn bản quá các bác giúp em một cuốn sách nhé. Em tìm mãi mà không sao giải thích được chỗ này.

namqn
18-06-2007, 03:39 AM
Vâng em dùng CCS để lập trình cho PIC! Nhưng em vẫn chưa hiểu rõ lắm! Nếu ko có Set_tris thì sao? "chuẩn logic 3 trạng thái" là gì vậy? Em còn mù mờ lắm, mong các bác thông cảm giúp. Nếu thấy em mất căn bản quá các bác giúp em một cuốn sách nhé. Em tìm mãi mà không sao giải thích được chỗ này.
Nếu bạn không dùng set_tris thì bạn sẽ không đảm bảo được bit tương ứng trong thanh ghi TRIS sẽ mang giá trị mà bạn mong muốn. Do đó, giả sử bạn định xuất thông tin ra chân RB1 chẳng hạn, nhưng bit tương ứng của nó trong thanh ghi TRISB (bit 1) lại được thiết lập là 1, khi đó thông tin mà bạn xuất ra có khả năng không xuất hiện tại chân này (vì nó đang được thả nổi để đọc tín hiệu vào).

Logic 3 trạng thái dùng để giao tiếp giữa các vi mạch nối chung vào 1 bus. Đơn giản là khi muốn dùng một chân nào đó của vi mạch làm ngõ vào thì dùng trạng thái thứ ba, tức là thả nổi nó, không kéo lên Vdd hay kéo xuống Vss như khi dùng làm ngõ ra. Lúc đó trạng thái của chân sẽ do mạch ngoài quyết định, và như vậy chúng ta có thể đọc được trạng thái logic do mạch ngoài thiết lập.

Nếu bạn có học điện tử thì đọc lại phần high-Z, hay tri-state, nếu không học điện tử thì hãy chấp nhận quy định trên: nếu dùng làm ngõ vào thì bit tương ứng trong thanh ghi TRIS tương ứng là '1', nếu dùng làm ngõ ra thì bit đó là '0'.

Thân,