void P0 (unsigned char dat)
{
unsigned char ax[8];
unsigned char i=0;
for(i=0;i<8;i++)
{
if(dat&(1<<i))
ax[i] = 1;
else
ax[i] = 0;
}
GpioDataRegs.GPBDAT.bit.GPIO39 = ax[0];
GpioDataRegs.GPADAT.bit.GPIO30 = ax[1];
GpioDataRegs.GPADAT.bit.GPIO1 = ax[2];
GpioDataRegs.GPADAT.bit.GPIO3 = ax[3];
GpioDataRegs.GPBDAT.bit.GPIO49 = ax[4];
GpioDataRegs.GPBDAT.bit.GPIO51 = ax[5];
GpioDataRegs.GPCDAT.bit.GPIO71 = ax[6];
GpioDataRegs.GPCDAT.bit.GPIO73 = ax[7];
}
如上子函数,我想实现给一个8位的字节数据,然后将各位分配给各个IO口,实现8位并行数据处理。但是,全速运行的时候,用LED检测这8个IO口,结果是错误的,但是我断点单步调试调试时,一步一步走下去,8个IO的结果却对了。这是什么原因?单步调试结果对,全速运行或直接调用一次这个子函数,然后其他的操作结果却是错的。 |