Một cách giải thích khác:
+ output_bit (pin, value) : xuất giá trị bit là "value"(1 hoặc 0) ra chân "pin" (PIN_A0, PIN_A1,...). Tùy vào chỉ thị #DEFINE *._IO sau cùng mà nó có thực hiện việc set TRIS lại hay không.
+ shift_left (address, bytes, value) : dịch trái và ghi giá trị bit là "value" vào bit (LSB) trên 1 mảng có chiều dài "bytes" phần tử tại địa chỉ "address", giá trị trả về là giá trị bit MSB của mảng "adsress" ban đầu đã bị shift out.
+ output_bit( PIN_B0, shift_left(&data,1,input(PIN_B1))) -> dịch trái và ghi giá trị bit chân PIN_B1 đọc được vào bit LSB của mảng 1 byte là data, sau đó ghi giá trị trả về là bit MSB của mảng data ban đầu đã bị shift out vào chân PIN_B1. Hiểu nghĩa của lệnh là PIN_B0 là trạng thái của PIN_B1 đọc được từ 8 lần shift trước.
Regards
|