Tất cả các chân I/O trên MCU ( ngoại trừ các chân VDD, VSS, AVDD, AVSS, MCLR, OSC1/CLK1) có thể vừa đóng vai trò là chức năng tổng quát (General Purpose) vừa có đóng vai trò sử dụng đặt biệt. Các chức năng tổng quát cho phép dsPIC33F giám sát và điều khiển các thiết bị khác. Hầu hết các I/O đều được kết hợp nhiều chức năng riêng biệt khác nhau. Sự kết hợp các chức năng này tùy thuộc vào
SVTH: Nguyễn Văn Chung – Lớp TBĐ-ĐT1-K51 42 đặc điểm trên loại MCU xác định. Và khi một I/O được sử dụng với chức năng chuyên biệt thì I/O đó có thể sẽ không thể được sử dụng với chức năng tổng quát.
4.4.1 Các thanh ghi điều khiển :
Tất cả các I/O Port trong MCU thuộc họ 12F, 16F,18F,30F ... đều có 3 thanh ghi trực tiếp liên quan đến phương thức hoạt động của các Port , các thanh ghi đó là TRISx, PORTx, LATx, trong đó x là tên tương ứng của các Port trong MCU. Mỗi chân I/O đều có một bit tham chiếu tương ứng trong ba thanh ghi trên.
4.4.2 Thanh ghi TRIS:
Các bits điều khiển trong thanh ghi TRIS xác định trạng thái hoạt động của các I/O là input hay output. Nếu bit TRIS của một I/O là 1 thì I/O đó sẽ đóng vai trò như là một ngõ input, ngược lại nếu bit TRIS của một I/O là 0 thì I/O đó sẽ đóng vai trò như là một ngõ output. Điều cần lưu ý là tất cả các I/O sẽ đóng vai trò là input ngay sau khi MCU bị Reset.
4.4.3 Thanh ghi PORT:
Dữ liệu trên một I/O được truy xuất thông qua thanh ghi PORT, sự kiện đọc thanh ghi PORTx sẽ đọc giá trị của của I/O tương ứng và sự kiện ghi vào thanh ghi PORTx sẽ ghi giá trị vào Port chốt dữ liệu.
Một số lệnh như BSET và BCLR là các lệnh cho phép Read-Modify-Write dữ liệu trên các Port. Việc ghi vào một Port nghĩa là các I/O của Port đó sẽ được đọc vào, giá trị đó sẽ được hiệu chỉnh lại, sau đó được ghi vào Port chốt dữ liệu.Một điều cần chú ý là khi các lệnh Read- Modify-Write sử dụng trên một thanh ghi PORTx thì các I/O có liên quan của Port đó phải được cấu hình như là ngõ input. Nếu một I/O được cấu hình như là ngõ input bị chuyển sang cấu hình là output
SVTH: Nguyễn Văn Chung – Lớp TBĐ-ĐT1-K51 43 trong khi thực hiện các lệnh Read-Modify-Write thì sẽ dẫn đến những kết quả không mong muốn trên I/O đó.
4.4.4 Thanh ghi LAT:
Thanh ghi LATx liên quan đến một chân I/O hạn chế các sự cố có thể xảy ra đối với các lệnh Read-Modify-Write. Việc đọc thanh ghi LAT sẽ trả về giá trị được cất giữ trong Port chốt ngõ ra ( Port output latches), thay vì giá trị trên chân I/O port. Lệnh Read-Modify-Write trên thanh ghi LAT, liên quan đến một I/O, tránh khả năng ghi giá trị của chân input vào Port chốt. Và trình tự ghi vào thanh ghi LATx cũng tương tự như trên.
Sự khác nhau giữa thanh ghi PORT và LAT có thể được tóm tắt như sau:
Việc ghi vào thanh ghi PORTx sẽ ghi giá trị dữ liệu vào Port chốt (Port latch) Việc ghi vào thanh ghi LATx sẽ ghi giá trị dữ liệu vào Port chốt
Việc đọc từ thanh ghi PORTx sẽ đọc giá trị dữ liệu trực tiếp trên chân I/O Việc đọc từ thanh ghi LATx sẽ đọc giá trị dữ liệu được cất giữ trong Port chốt.