PDA

View Full Version : Port A làm port I/0, ai biết chỉ mình với???


tuankobe
29-01-2007, 04:57 PM
Mình dùng port A làm port I/0, nhưng chân A4 không dùng được, dù mình có dùng lệnh output_low(PIN_A4) hay out_put_high(PIN_A4) đều không được.
Mình dùng điện trở kéo lên VCC thì chạy lung tung, không chính xác.
Rất mong nhận được sự chỉ bảo của các bạn.
Mình xin chân thành cảm ơn

TTL
29-01-2007, 06:29 PM
Khi dùng portA làm I/O port thì bạn phải cấu hình lại port A là port I/O chứ ko để là ngõ vào Analog nữa. Bạn thử tìm trong datasheet nó có hướng dẫn đấy á.

namqn
29-01-2007, 07:25 PM
Port A được cấu hình là analog sau khi reset chip, muốn dùng như digital I/O thì phải cấu hình cho nó thành digital pin, tức là thiết lập giá trị thích hợp cho thanh ghi ADCON1 (tôi lấy ví dụ chip PIC16F877A, vì bạn không nói rõ đó là chip nào), sau đó chọn chiều dữ liệu bằng thanh ghi TRISA.

Ngoài ra, RA4 của PIC16F877A còn ở dạng cực máng hở, do đó có thể cần phải có 1 điện trở kéo lên.

Thân,

TTL
29-01-2007, 08:40 PM
Anh Nam cho em hỏi tí. Em vẫn chưa hiểu cực máng hở và cực máng đóng để làm gì ? Tại sao người ta phải tao ra 2 loại trên -----> cực máng hở còn tốn thêm 1 con điện trở. Hic hic.

Em cám ơn anh.

falleaf
30-01-2007, 12:29 AM
http://www.mcc-us.com/Open-collectorFAQ.htm
http://www.piclist.com/techref/logic/opencollector.htm

Bạn đọc tài liệu này, rất đơn giản và dễ hiểu.

Chúc vui

tuankobe
30-01-2007, 08:45 AM
Cảm ơn bạn namqn và các bạn trên diễn đàn. Mình cũng ko có kinh nghiệm lắm nên chủ yếu lập trình bằng CSS cho PIC 16F877A. Bạn có đoạn code nào bằng CSS để thiết lập port A thành port I/O thuần túy chỉ cho mình với.
Xin chân thành cảm ơn

ntc
30-01-2007, 05:23 PM
Bạn đọc thêm trong datasheet, trong đó có hướng dẫn đầy đủ cả, có cả code ví dụ viết bằng asm, nhưng chuyển qua C thì mấy hồi.

namqn
30-01-2007, 06:36 PM
Dùng RA4 của PIC16F877A như một ngõ ra, cần một điện trở kéo lên khoảng vài kiloohm (4.7k chẳng hạn), và đoạn code sau trong CCS C:


ADCON1 = 0x06;
TRISA = 0x00;

Toàn bộ port A sẽ là ngõ ra.

Thân,

no_problems
12-04-2011, 10:29 AM
EM dùng porta để điều khiển mấy chân rw,e,cs1.cs2.. của glcd.khi mô pỏng thì chạy tít, nhưng cứ đưa vào mạch thật thì không được.
phần cứng đã nối full 10k lên vcc rùi.
code đã setup_adc_port(no_analog) rui
vậy mà vẫn không được.Ai bít lỗi này chỉ em với.

no_problems
12-04-2011, 10:37 AM
em khai bao vay sao bao loi
Undefined identifier ADCON1

vth_87
26-04-2011, 02:09 PM
theo mình thì bạn nên
ANEEL = 0;// TẤT CẢ 8 NGÕ ĐẦU LÀ DIGITAL(=1 THÌ SẼ LÀ ANALOG)
ANSELH = 0;// 6 NGÕ CÒN LẠI LÀ DIGITAL
TRISA = 0x00;// tất cả Port A là ngõ ra
VÌ VỚI 16F887 NÓ CÓ TỔNG LÀ 14 NGÕ ANALOG/DIGITAL