MCS-51 僅 P1 口為純雙向 I/O,P0/P2/P3 佔用總線/二級功能。系統擴展通常針對 P0 口 (AD0–AD7) 進行並行 I/O 擴展。
// 地址線選法:P2.7 為片選信號
// 讀操作:MOVX A, @DPTR
// 當 P2.7=0 且 RD=0 時,74HC244 輸出使能,數據送上 P0 總線
程序示例:
MOV DPTR, #7FFFH ; 習慣用最高地址
MOVX A, @DPTR ; 讀入輸入數據
線選法副作用:32 KB 地址空間 (0000H–7FFFH) 均映射同一設備,建議統一用最高地址編程。
// P2.6 為片選 (G),WR 連接 CLK
// 寫操作:MOVX @DPTR, A
// 當 P2.6=0 且 WR 上升沿時,數據鎖存到 Q0–Q7
程序示例:
MOV DPTR, #0BFFFH ; 地址 1011 1111 1111 1111B
MOV A, #DATA
MOVX @DPTR, A ; 寫入並鎖存
| 端口 | 驅動能力 (TTL 負載) |
|---|---|
| P0 | 8 |
| P1/P2/P3 | 4 |
超負載需加 74HC244/245 緩衝驅動。
74HC244 (輸入三態) + 74HC377 (輸出鎖存) + 74LS138 (全地址譯碼) 構成經典、可靠、低成本的 MCS-51 I/O 擴展方案,廣泛應用於工控板卡。