PORTA ใน PIC16F87X

 

I/O ports บางตัวของ PIC เป็นแบบ multiplexed ซึ่ง อาจเป็นทั้ง I/O หรือ peripheral features (เช่น A/D, Serial, IIC) ซึ่งเมื่อ ขาเหล่านี้ใช้งานในส่วน peripheral ก็จะไม่สามารถใช้งานในลักษณะของ I/O ได้ PORTA และ TRISA register

PORTA มีขนาด 6 bit ซึ่งเป็น port ที่เป็นได้ทั้ง Input และ Output โดยต้องเลือกแบบใดแบบหนึ่ง สามารถเลือกได้จาก register ที่มีชื่อว่า TRISA ซึ่งถ้า TRISA bit ถูก set เป็น ‘1’ PORTA ที่มีหมายเลขบิตเดียวกันนั้นก็ทำงานเป็น input (ทำให้ port นั้นอยู่ในสถานะ hi-impedance) ส่วนถ้า TRISA bit ถูก set เป็น ‘0’ PORTA ที่มีหมายเลขบิตเดียวกันนั้นก็จะทำงานเป็น output (port จะอยู่ในสถานะ output latch) การอ่านค่า PORTA register คือการอ่านค่าสถานะของ ขา PORTA ในขณะนั้น ส่วนการเขียนค่าไปยัง PORTA คือการเขียนไปยัง latch ของ port ลักษณะการเขียนจะเป็นแบบ read-modify-write operations ซึ่งหมายความว่า ในการเขียนไปยัง port จะเริ่มด้วยการ อ่านค่า port นั้นมาก่อนแล้วทำการเปลี่ยนแปลงค่า จากนั้นก็ทำการเขียนกลับไปยัง port latch อีกครั้งหนึ่ง

ขา RA4 จะ multiplexed กับ Timer0 module clock input ซึ่งจะเรียกรวมๆ ว่า RA4/T0CKI โดยที่ ขา RA4/T0CKI จะเป็นลักษณะ Input แบบ Schmitt Trigger และ Output แบบ open drain. Port RA ทั้งหมด จะมี TTL input level และ มี output แบบ full CMOS drivers ส่วน PORTA ขาอื่นๆ จะ multiplex กับ analog inputs และ Vref ของ A/D input ซึ่งการกำหนดการทำงานของแต่ละขา สามารถเลือกได้โดย clear หรือ set control bits ใน ADCON1 register

 

TRISA register มีหน้าที่ควบคุมว่าขา PORTA ใดจะเป็น input/output ในกรณีที่ใช้ PORTA เป็น analog input TRISA register จะต้องถูก set ตัวอย่างการ INITIALIZING PORTA

BCF STATUS, RP0
CLRF PORTA ; ทำการ clear output data ของ PORTA
BSF STATUS, RP0 ; เลือก BANK1
MOVLW 0xCF ; ใส่ค่าคงที่ลงใน W register
MOVWF TRISA ; กำหนดให้ PORTA 0-3 เป็น input , กำหนดให้ PORTA 4-5 เป็น output

 

BACK