利用IOSET和IOCLR寄存器可更改GPIO引脚的位。
但是IOSET和IOCLR对应写入“1”的位才能设置成高/低电平。例如:将P0口的[7:0]由状态0xA5改变为0x5A,
通过设置IO0SET和IO0CLR两步走会产生一段中间过程(有的系统允许存在这段时间的延时)。
对于只读寄存器IOPIN进行写操作可以解决上面产生中间状态的问题。仅需执行语句:
" IO0PIN = (IO0PIN & 0xFFFFFF00) | 0x0000005A "即可。
说明:
IOPIN的内容和一个值相“与”(该值使要改变的引脚对应使用0来屏蔽,其他引脚对应1),再将相“与”的结果和期望得到的引脚输出对应的二进制数相“或”,并将相或的结果存入IOPIN寄存器中。
(注意:PHILIPS公司不推荐使用此做法。)