今日はいつもにも増してお馬鹿だったので書く。
表題の通り、TRISAの値を「0x11111111」と書いてRA1の挙動がおかしいと悩んでいたのだった。
Inputとして使うつもりで…。
正しくは「0b11111111」と書くか、あるいは「0xFF」と書く、当たり前だが。
間違えて書いた「x」は16進数をあらわすので、「0x11111111」はこうで、
いかにも2番目のビットが1のように思えるが、実際には2進数でこういう値を設定したことになる。
つまり、2番目のビットは0で、RA1はInputでなくOutputとして使う設定になってたというわけ。
そりゃうまく動かんわ。
8ビットのレジスタだということは分かっているんだから、コンパイラが教えてくれても良さそうな感じもするが、教えてくれない。
Tweet