DSP中如何访问I/O,数据空间
访问I/O空间
I/O空间地址声明
要在程序中访问io空间地址,必须首先用关键字“ioport”对要访问的地址进行定义。
语法:ioport t ype porthex_num
ioport 声明io空间端口变量的关键字;
type 变量类型,可以为char, short, int或unsigned int;
porthex_num 端口号,port后面接16进制数字。
ioport unsigned int port10;
注:声明io空间地址必须在C文件起始声明,不允许在函数中使用ioport声明io空间地址。
I/O空间地址访问
访问用ioport关键字声明的I/O端口变量和访问一般变量没有区别。
ioport unsigned int port10;
int func ()
{
...
port10 = a;
...
b = port10;
...
}
I/O端口变量的使用不仅仅局限于赋值,和其他变量同样也可以应用于其它的表达式。
call (port10);
a = port10 + b;
port10 += a;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
程序中访问的任何一个IO地址都必须在C语言程序起始处用ioport关键字声明!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
访问数据空间
访问数据空间不需要对要访问的单元预先声明,访问是通过指针的方法实现的。
unsigned int org,cnt,block,offset,tmp,i;
org = *(unsigned int *) 0x8000;
cnt = *(unsigned int *) 0x8001;
block = *(unsigned int *) 0x8002;
offset = *(unsigned int *) 0x8003;
for (i=0; i<cnt; i++)
{
tmp = *(unsigned int *) (org + i);
*(unsigned int *) (org + offset +i) = tmp;
}
|