我正在學習8051彙編編程。我在我的書中讀到「爲了使端口成爲輸入端口,必須通過將所有位寫入1來編程端口。」雖然這不是錯的嗎?從端口輸入
如果我將所有的位設置爲1,並且想要在輸入端輸入1010
,我將按下連接到第二引腳和第四引腳的按鈕來輸入1010,但端口將讀取全1。我已經在Keil uVision Simulation上試過了,發現了這個問題。
這是一個問題還是我誤解了它?
org 00h
Reset:
mov P0,#00h
mov P1,#00h
mov P2,#00h
mov P3,#00h
TakeInput:
jb P2.0,Addition// in assembler simulation, this condition is true if I set P2 to #0ffh, which is not required. The user should set this bit for making this condition true
sjmp TakeInput
Addition:
MOV A,P0 添加A,P1
mov P3,A
acall Delay
ajmp Reset
Delay:
mov R0,#1
here:
mov R1,#1
again:
djnz R1,again
djnz R0,here
ret
end
如果我不重置所有端口爲0,所以它依賴於默認的端口值成爲真正的跳轉指令。
這是代碼,如果我想輸入'1010',我將不得不關閉其餘的位以方便起見,我用零初始化端口。 – Naruto 2013-03-14 14:39:42
如果將所有引腳設置爲「0」,則永遠不應該看到具有標準8051端口的「1」輸入,因爲此時引腳被拉至地(請參見電路圖)。 – Jester 2013-03-14 15:26:59
所以你的意思是模擬工作方式不同於8051端口本身。請問我的代碼在8051上運行正常 – Naruto 2013-03-14 15:30:44