最近项目遇到一个问题,很无语,下面记录如下:
需要从P0.4和P0.5口读取状态,进行逻辑处理。但是读取的数据很有问题:
首先是读取状态的代码:
然后是读取状态的结果,即An和Bn的值:
但是端口寄存器的值是:
P0=9F,即An、Bn的值是0和1。但是在液晶显示器上显示的值都是1和1,并且始终是1和1。但是通过示波器上观测到的值是变化的。
通过示波器观察,将P0.4的值调到0.然后再单步调试,结果如下:
An和Bn的值:
端口寄存器的值:
也就是说P0的值是10000111.
通过以上实验可以看出,P0口反映的是端口引脚的状态;但是P0^4的结果不是。需要重新编程。