MCS-51系列單片機并行P2口也有兩種功能,對于內(nèi)部有程序存貯器的單片機(如定制的8051),P2口可以作為輸入口或輸出口使用,直接連接輸入/輸出設備;也可以作為系統(tǒng)擴展的地址總線口,輸出高8位地址A8~A15。對于內(nèi)部沒有程序存貯器的單片機,必須外接程序存貯器,一般情況下P2口只能作為系統(tǒng)擴展的高8位地址總線口,而不能作為外部設備的輸入/輸出口。
1、P2口的輸出驅(qū)動器上有一個多路電子開關(見圖5-1(c)),當輸出驅(qū)動器轉(zhuǎn)接至P2口鎖存器的Q端時,P2口作為第一功能輸入 /輸出線,這時P2口的結構和P1口相似,其功能和使用方法也和P1口相同。
2、當輸出驅(qū)動器轉(zhuǎn)接至地址時,P2口作為地址總線口,引腳狀態(tài)由所輸出的地址確定。
3、 CPU訪問外部的程序存貯器時,P2口輸出程序存貯器的高8位地址A8~A15,該地址來源于內(nèi)部的程序計數(shù)器PC的高8位;
4、當CPU以16位地址指針DPTR訪問外部RAM/IO的時候,P2口輸出的地址來源于DPH。
P2口操作:
1、對于內(nèi)部有程序存貯器的單片機所構成的基本系統(tǒng)(如8751或定制的8051),既不擴展程序存貯器,也不擴展RAM I/O 口,這時P2口作為通用I/O口使用。
XRL P2 ,#1 ;P2.0取反
CPL P2.0 ;P2.0取反
2、對于只擴展少量外部RAM I/O口,其地址范圍在0~255之間,P2 口也可以作為I/O口使用。對外部RAM I/O口操作,只能使用R0或R1作地址指針,不能用DPTR作址址指針。
將33H寫入外部RAM的50H單元,CPU執(zhí)行下面的程序段不影響P2口輸出狀態(tài),因而是正確的:
MOVR0 ,#50H
MOV A,#33H
MOVX @R0,A
CPU執(zhí)行下面的程序段將影響P2口的輸出狀態(tài),因而是錯誤的;
MOV DPTR,#50H
MOV A,#33H
MOVX @DTPR ,A
3、對于既擴展程序存貯器,又擴展外部RAM/IO口的系統(tǒng),P2口不能作為I/O口使用,對外部RAM/IO口操作則可以做DPTR、P2 R0、P2 R1三個16位地址指針的高8位。
將33H寫入外部RAM的8200H,下面的程序段都是正確的:
(1)MOVP2,#82H
MOVR0,#0
MOV A,#33H
MOVX @R0 ,A
(2)MOV P2,#82H
MOV R1,#0
MOV A,#33H
MOVX @R1,A
(3)MOV DPTR,#8200H
MOV A,#33H
MOVX @DPTR,A