当前位置: 代码迷 >> 单片机 >> sfr类型和I/O口解决办法
  详细解决方案

sfr类型和I/O口解决办法

热度:136   发布时间:2016-04-28 16:10:38.0
sfr类型和I/O口
请教一下,比如说我在程序中声明了一个函数:
void forward_rotation(int pules_a_round, sfr use_port, int use_cycles, int use_speed);

sfr类型的参数可以直接作为参数传参吗?

为什么我用keil uvsison 4编译的时候,报类似下面这样的错误。
MCUEND.C(8): error C141: syntax error near 'sfr'

另外在程序要使用到三个I/O口,P1,P2,P3

如何选择一个特定的端口,比如P2,让P2 = 0x55 类似这样。例如下面这样的程序可以吗:
C/C++ code
sfr use_port;  //要使用的端口switch(use_port){   case P1: use_port = 0x55;break;   case P2: use_port = 0x55;break;   case P3: use_port = 0x55;break;}

这样直接使用P1 P2 P3 可以吗?

------解决方案--------------------
sfr是声明一个指定的寄存器空间,不存在变量的这种说法

sfr use_port; //要使用的端口

switch(use_port)
{
case P1: use_port = 0x55;break;
case P2: use_port = 0x55;break;
case P3: use_port = 0x55;break;
}

这个结构可以改成:

enum use_port; //要使用的端口

switch(use_port)
{
case P1: P1 = 0x55;break;
case P2: P2 = 0x55;break;
case P3: P3 = 0x55;break;
}
  相关解决方案