8051アセンブリプログラミングを学んでいます。私は自分の本で「ポートを入力ポートにするためには、ポートのすべてのビットに 1 を書き込むことによってポートをプログラムする必要がある」と読みました。でも、これは間違っていませんか?
すべてのビットを 1 に設定し、入力時に入力したい場合は、1010
2 番目のピンと 4 番目のピンに接続されているボタンを押して 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:
移動 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 にリセットしないと、デフォルトでポート値に依存するジャンプ命令が true になります。