在KEILC中sbit bit可否做函数的参数

来源:百度知道 编辑:UC知道 时间:2024/05/27 09:44:46
近日在摸索C51单片机的模拟串口功能:
SendData(unsigned char inch) 此函数功能已通过验证
再试想SendData(unsigned char inch,sbit TX)试想再增加一个函数的参数,以方便调用此函数时顺便指定用以作模拟串口的I/O口,但不知为什么编译通不过,
我再改为SendData(unsigned char inch,bit TX)此次编译通过了,但实际运行程序不正确(根据不同函数,我调用的指令的参数已更新),在此想问:在KEILC中sbit bit可否做函数的参数?如何用?我错在了哪里?
感谢你的回答,我吃过饭回来消化一下再仔细看一下,我现在有个项目就得用到4对串口,硬件的一对交给人机交换用,还要做三对模拟串口,其中一对给存储IC用,另外两对和另外两个IC通讯用.急需解决问题,所以把全部分都给了.

sbit 是定义端口的..只能不能用到参数里面

另外.c51的参数..一般情况是通过寄存器传递的.
参数多的情况下.通过全局的ram传递.
本生没有过I/O传递的东西.

你如果要完成你上面的那些置顶I/O模拟输出的话..用函数指针或者可以完成.

比如
void out(unsigned char yy)
{
if (yy)
P1_1 = 1;
else
P1_0 = 0;
}

SendData(unsigned char inch,void (*out)(unsigned char));

调用的实话
SendData(inch, out);
就是这种做.效率有点底.
另外感觉在51里面做这个没有任何必要.
一般不可能很多个io模拟串口的...