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