急!!读外设寄存器的数据!!
Nisj 2003-11-05 10:24:19 一个外设它的地址映射在0x820000上,它的一个寄存器偏移量为2.
现在读这个寄存器里的值,用示波器观察片选,读写信号都正常,而且外设数据线上的
数据也正是我上次写入的数据,但是程序读到的寄存器值却是一个不正确的数,而且每次都不改变,例如,如果上次写入0xaa,读数据时,外设数据线上的值是0xaa,但是程序读到的却是0x70!!!不知道可能的原因是什么?大侠指点一下好吗?
我读寄存器的程序:
.....
#define FCR 0x02
#define BASEADDR 0x820000
void main()
{
unsigned char dat = 0;
unsigned char* dat_addr = (unsigned char*)( BASEADDR + FCR);
.....
*dat_addr = 0xaa;
dat = *dat_addr;
//显示dat 为 0x70
}