CHƯƠNG 2– TÌM HIỂU VỀ PIC16F877A
2.11. GIAO TIẾP SONG SONG PSP (PARALLEL SLAVE PORT).
Ngoài các cổng nối tiếp và các giao diện nối tiếp, vi điều khiển PIC 16F877A còn được hỗ trợ một cổng giao tiếp song song và chuẩn giao tiếp song song thông qua PORTD và PORTE. Do cổng song song chỉ hoạt động ở
chế độ Slave mode nên vi điều khiển khi giao tiếp qua giao tiếp diện này sẽ chụi sự điều khiển của thiết bị bên ngoài thông qua các chân của PORTE, trong khi dữ liệu sẽ được đọc hoặc ghi theo dạng bất đồng bộ thông qua 8 chân của PORTD.
Bit điều khiển PSP là PSMODE (TRISE<4>). PSPMODE được Set sẽ thiết lập chức năng các chân của PORTE là các chân cho phép dữ liệu
, và chân chọn vi điều khiển phục vụ cho việc truyền nhận dữ liệu song song thông qua Bus dữ liệu 8 bit của PORTD. PORTD lúc này đóng vai trò là thanh ghi chốt dữ liệu 8 bit, đồng thời tác động của thanh ghi TRISD cũng sẽ được bỏ qua do PORTD lúc này chụi sự điều khiển của các thiết bị bên ngoài. PORTE vẫn chụi sự tác động của thanh ghi TRISE, do đó cần xác lập trạng thái các chân PORTE là Input bằng cách Set các bit TRISE<2:0>. Ngoài ra cần đưa giá trị thích hợp các bit PCFG3:PCFG0 (thanh ghi ADCON1<3:0>) để ấn định các chân của PORTE là các chân I/O dạng số.
Khi các chân và cùng ở mức thấp, dữ liệu từ bên ngoài sẽ được ghi lên PORTD. Khi một trong 2 chân trên chuyển lên mức logic cao, cờ hiệu báo dữ liệu trong Buffer đã đầy BIF (TRISE<7>) sẽ được Set và cờ ngắt PSPIF (PIR<7>) được Set để báo hiệu kết thúc ghi dữ liệu. Bit BIF chỉ được xóa về 0 khi dữ liệu nhận được ở PORTD được đọc vào. Bit báo hiệu dữ liệu nhận được trong Buffer bị tràn IBOV (TRISE<5>) sẽ được Set khi vi điều khiển nhận dữ liệu tiếp theo trong khi chưa đọc vào dữ liệu đã nhận được trước đó.
Khi các chân và cùng ở mức logic thấp, Bit báo hiệu Buffer truyền dữ liệu đã đầy BOF(TRISE<6>) sẽ được xóa ngay lập tức để báo hiệu PORTD đã sẵn sàng cho quá trình đọc dữ liệu. Khi một trong hai chân trên chuyển sang mức logic cao thì cờ ngắt PSPIF sẽ được Set để báo hiệu quá trình đọc dữ liệu kết thúc. Bit BOF vẫn được giữ ở mức logic 0 cho tới khi dữ liệu tiếp theo được đưa vào PORTD.
Hình 2.22: Sơ Đồ Khối Của PORTD và PORTE Ở Chế Độ PSP Slave Mode.
Các thanh ghi liên quan đến PSP bao gồm:
- Thanh ghi PORTD (địa chỉ: 08h): chứa dữ liệu cần đọc hoặc ghi. - Thanh ghi PORTE (địa chỉ: 09h): chứa giá trị các chân PORTE. - Thanh ghi TRISE (địa chỉ: 89h): chứa bit điều khiển PORTE và
PSP.
- Thanh ghi PIR1 (địa chỉ: 0Ch): chứa cờ ngắt PSPIF.
- Thanh ghi PIE1 (địa chỉ: 8Ch): chứa bit cho phép ngắt PSP. - Thanh ghi ADCON1 (địa chỉ: 9Fh): điều khiển khối ADC tại
PORTE.