單片機讀端口與讀引腳的區(qū)別
不是P0口、P1口的“口”,而是鎖存器的Q端口,也就是讀鎖存器Q端的輸出信號然后送
三態(tài)緩沖器輸入,經過緩沖器輸出到單片機內部總線。而讀引腳則是直接把芯片引腳上
的外部數(shù)據,經過三態(tài)緩沖器把數(shù)據放到內部總線。
例如,用MOV進行讀引腳操作:
MOV P1,0FFH
MOV A,P1
編程時須先置I/O口引腳為高電平的原因如下(請查看口電路結構圖):
51單片機的P0口是雙向口,P1~3口是準雙向口,其I/O口引腳都和單片機內部的場效應管
FET漏極連接。首先我們不妨假設init時引腳為低電平(我不知道單片機reset時
引腳缺省電平是低還是高?還是不定?),即FET漏極為低電平,因為此時FET是導通的,
所以無論外部輸入1還是0,都會產生拉電流,拉為低電平,從而無法正確判斷外部輸入
的是1還是0.嚴重的話,如果拉電流過大,還可能燒壞FET。
因此,init時只好將引腳設為高電平,例如MOV P1,0FFH,由單片機口電路的結構圖可以
看出,這條指令的內部電路邏輯是這樣的:
先把0FFH放到內部總線,鎖存器輸入端(D端)從內部總線取數(shù)據,鎖存,然
后從Q非端輸出到FET柵極,顯然此時Q非為0,F(xiàn)ET截止,通過漏極上拉電阻輸出高電平,
不會影響外部輸入電平(相當于和外部輸入邏輯與)。
評論