PORTB ใน PIC16F87X
PORTB เป็นลักษณะแบบ Port แบบสองทิศทาง ซึ่ง register ที่จะเป็นตัวกำหนดว่า port ใดจะเป็นแบบ input/output จะถูกกำหนดโดย TRISB register ถ้า set TRISB bit ใด (=1) PORTB ที่บิตนั้นก็จะเป็น input ถ้า clear TRISB bit ใด (=0) PORTB ที่บิตนั้นก็จะเป็น output ขาสามขาของ PORTB จะ multiplexed กับ Low Voltage Programming function ซึ่งได้แก่ RB3/PGM, RB6/PGC และ RB7/PGD
การ INITIALIZING PORTB
BCF STATUS, RP0 ; ทำการ Initialize PORTB โดยทำการ clear output data latchs
CLRF PORTB
BSF STATUS,RP0 ; ทำการเลือกไปยัง Bank1
MOVLW 0xCF ; โหลดค่าที่ต้องการ set
MOVWF TRISB ; Set PORTB0-3 เป็น inputs, Set PORTB4-5 เป็น outputs, Set PORTB6-7 เป็น inputs
PORTB แต่ละ port จะมี weak pull-up อยู่ภายใน (ถ้าต้องการ pull-up แข็งๆ ต้องต่อวงจรภายนอก) เราสามารถกำหนดว่าจะใช้ pull-up ภายในหรือไม่จากการ set หรือ clear RBPU\ (OPTION register บิต 7) โดยถ้าเรา clear RBPU\ จะหมายถึง เราทำการ disable pull-up ภายใน และถ้าเรากำหนดให้ PORTB เป็น OUTPUT แล้ว pull-up จะถูก disable โดยอัตโนมัติ
สำหรับ PORTB นั้น ขา RB4-RB7 จะมี feature เพิ่มเติมก็คือ การกำหนดให้เกิด Interrupt เมื่อเกิดการเปลี่ยนแปลงของสถานะของสัญญาณไฟฟ้าที่ขา RB4-RB7 (โดยถ้าขาใดขาหนึ่งเกิดเปลี่ยนสถานะก็จะทำให้เกิด RB Port Change Interrupt ขึ้น ซึ่งจะทำให้ RBIF (INTCON.0) flag ถูก set โดยที่ Interrupt ประเภทนี้สามารถทำการ wake microcontroller จากสถานะ sleep mode ได้
RBIF flag จะถูก Clear ได้ 2 กรณี คือ
หากเราใช้ interrput on PORTB change แล้วไม่ควรจะ enable pull-up ของ PORTB