还有一个问题就是
我想读取一下状态寄存器的值,也出现怪现象:
unsigned short usStatus;
usStatus = IORD_ALTERA_AVALON_CF_IDE_ALTERNATE_STATUS(ide_base);
printf("%d",usStatus);
printf("\n");
结果为:0033
寄存器为8位,这应该说明寄存器的值为33,即00110011吧
可当我设usstatus为8位时,出现结果如下:
alt_u8 usStatus;
usStatus=IORD_ALTERA_AVALON_CF_IDE_ALTERNATE_STATUS(ide_base) ;printf("%u",usStatus);
出现结果却为55,即01010101
而当我如下运算时:
usStatus=IORD_ALTERA_AVALON_CF_IDE_ALTERNATE_STATUS(ide_base) & 0x80;
printf("%u",usStatus);
结果是22。结果应该是0或者1才对啊
为什么会这样啊
[此贴子已经被作者于2005-8-18 16:49:59编辑过] |