请教c语言读写IO空间

gmfeng   2006-11-18 03:39 楼主
用总线连接方式控制HD44780液晶模块,D15-D8连接到液晶模块的DB7-DB0,A1和A0接到液晶的R/W和RS,RD和WE接到液晶的片选信号E。
哪位能给一个C语言读写IO空间的代码例子?多谢

回复评论 (6)

2407的I/O地址映像是0000h到FEFFh,那么A0~15, D0~15, PS, DS, IS, WE, RD这些引脚的
访问地址是怎么确定的?
例如这样的语句
#define A port000C
ioport unsigned port000C;
A = 0x8080;
这种语句具体向哪些引脚写入了数据?
点赞  2006-11-18 05:37
代表向地址c写入8080
点赞  2006-11-18 07:25
我是想问A1-A0,D1-D0,RD,WE这些引脚的数据应该怎么读写?
点赞  2006-11-18 07:48
对于这个问题我也不清楚,刚开始搞,正郁闷呢?请高手指点一下!问题也许简单,但是对于新手也是疾首,请高手多指点一下,谢谢!
点赞  2006-11-20 07:52

这个问题,不用程序员管,你只要知道外设的地址就可以啦,
   执行相应的指令(读/写)的话,那么在地址总线上就会出现你寻址的地址,和相应片选信号有效,接着数据总线上出现数据!
   例如:向DA写数据:
      在头文件中定义:   #define     DA     port000C     ;
                                     ioport     unsigned   port000C;
             那么在程序中就可以这样对DA写数据0x8080;
                                      DA = 0x8080;
当程序运行   D A = 0x8080;这条指令的时候,DSP的地址总线就会出现000C  ,同时I/0片选有效,表示选中DA ,接着数据总线出现0x8080,表示数据向DA写入!
       例如:读AD采集的数据:
        在头文件中定义:   #define     AD     port000B     ;
                           ioport     unsigned   port000B;
             那么在程序中就可以这样读AD数据(如果采得数据是0x8000,程序中定义了一个数据单元RESULT用于存放采样结果)
                                       RESULT =DA ;
当程序运行 RESULT =DA ;这条指令的时候,DSP的地址总线就会出现000B  ,同时I/0片选有效,表示选中AD ,接着数据总线出现0x8000表示采样得到的数据读到RESULT单元!
       所以你关心的问题是多余的,是DSP芯片设计人员考虑的,你对寻址好象没有理解,建议先看看微机原理或单片机方面的书。
点赞  2006-11-21 01:34
多谢。简单的来说,如果
ioport unsigned port0101;
#define PORT port0101
PORT = 0xf0f0;
那么地址线A8和A0应当为高电平,数据线D15-D12, D7-D4应当为高电平,其余为低电平,IS引脚为低电平
这样没错吧
但是我单步执行语句,用示波器测量的结果基本上看不出有什么正确性。
请问还有什么地方会出问题?
READY引脚已经通过上拉电阻接到高电平
点赞  2006-11-21 02:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复