请教一下,比如说我在程序中声明了一个函数:
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;
}