利用IOSET和IOCLR寄存器可更改GPIO引腳的位。
但是IOSET和IOCLR對應寫入“1”的位才能設置成高/低電平。例如:將P0口的[7:0]由狀態0xA5改變為0x5A,
通過設置IO0SET和IO0CLR兩步走會產生一段中間過程(有的系統允許存在這段時間的延時)。
對于只讀寄存器IOPIN進行寫操作可以解決上面產生中間狀態的問題。僅需執行語句:
" IO0PIN = (IO0PIN & 0xFFFFFF00) | 0x0000005A "即可。
說明:
IOPIN的內容和一個值相“與”(該值使要改變的引腳對應使用0來屏蔽,其他引腳對應1),再將相“與”的結果和期望得到的引腳輸出對應的二進制數相“或”,并將相或的結果存入IOPIN寄存器中。
(注意:PHILIPS公司不推薦使用此做法。)