急!!读外设寄存器的数据!!

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
}
...全文
50 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoRoMan 2003-11-06
  • 打赏
  • 举报
回复
需在保護模式下。
时空隧道 2003-11-05
  • 打赏
  • 举报
回复
在dos模式下,只能寻址1m,读取不了地址 820000的数据,还不如直接读取端口来得容易.

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧