51单片机,怎么以参数的形式把IO口传入子函数

void HuXi_up(uint IO_port)
{
for(pwm_low=1;pwm_low<CYCLE;pwm_low++)
{
IO_port=0;
duty=0;
while(duty<=pwm_low);
IO_port=1;
duty=0;
while(duty<=(CYCLE-pwm_low));
}
}

目的就是我想通过HuXi_up(uint IO_port);这句话,在括号里输入P1^0;,它就在P1^0这个端口运行我的子函数,我输入指定IO就在指定的IO执行程序,我上面的写法经过实验是不行,我想知道怎么才能实现这个功能。

不能把IO口直接当参数,但可以使用变通方法:
一、确定输出端口,如P1,这是一个固定不变的端口。
二、可以把指定端口的某位当参数传入子函数
oid HuXi_up(uint IO_Bit)
{
unsigned char i,mask;
mask=1;
mask = _crol_(1,IO_Bit)

for(pwm_low=1;pwm_low<CYCLE;pwm_low++)
{
P1 = P1 & (~ mask);
duty=0;
while(duty<=pwm_low);
P1 = P1 ^ mask;
duty=0;
while(duty<=(CYCLE-pwm_low));
}
}

    单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

    单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等 。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-13
不能把IO口直接当参数,但可以使用变通方法:
一、确定输出端口,如P1,这是一个固定不变的端口。
二、可以把指定端口的某位当参数传入子函数
oid HuXi_up(uint IO_Bit)
{
unsigned char i,mask;
mask=1;
mask = _crol_(1,IO_Bit)

for(pwm_low=1;pwm_low<CYCLE;pwm_low++)
{
P1 = P1 & (~ mask);
duty=0;
while(duty<=pwm_low);
P1 = P1 ^ mask;
duty=0;
while(duty<=(CYCLE-pwm_low));
}
}本回答被提问者采纳

“MCS-51单片机I\/O”数据传送的控制方式是什么?
1,无条件送方式 无条件传送也称为同步程序传送.只有那些一直为数据I\/O传送作好准备的外部设备,才能使用无条件传送方式.因为在进行I\/O操作时,不需要测试外部设备的状态,可以根据需要随时进行数据传送操作.无条件传送适用于以下两类外部设备的数据输入输出:(1)具有常驻的或变化缓慢的数据信号的外部设备.例...

如何将51单片机的IO口设置为输入口?
MOV P1,#0FEH;那么P1.7-P1.1就是输入口,P1.0作为输出口。

单片机怎么用c语言设置I\/O口输入或输出
P1M1=255; \/\/all 推挽输出 而51单片机的所有IO引脚,在启动后默认都是1。因此,如之前没有对此引脚进行过置0操作的话,可以直接读该引脚。但为了保险起见,也为了使程序通用、可移植,最好在读取之前对此引脚置1。

51单片机IO口能做实参传递吗
可以的,但是一般性不这么用,不是所有的编译器都支持sfr(本质是地址)的传递。你可以使用这样的东西:(这是我写的AVR类库)void SETB(PORT port,unsigned char bit);\/\/其他的源代码举一反三吧记得定义:define PORT enum PORT\/\/方便输入#define setb SETB#define clrb CLRB#define getb GETB ...

51单片机中怎么样将输入输出端口设置成输入功能
普通单片机io设置成1就是输入了 因为1能被拉成0 但是0不能被拉成1 (电流高的话也可以的,一般不会有那么高的电流)

一个操作51单片机某几个IO口的方法
这个是操作51单片机P1口的低4位对步进电机进行操作的程序,在这个操作过程中,我们只使用到了P1口的低4位,因此我们希望高4位保持不变,只改变P1的低4位。首先把P1进行一个备份到变量tmp中去,然后把变量tmp的经过两条语句,得到最终要赋值给P1的值以后,再一次性赋值给P0,这个方法大家都可以学习一...

怎么对51单片机4个io口同时赋值
1、首先,把P1进行一个备份到变量tmp中去。2、其次,把变量tmp的经过两条语句,得到最终要赋值给P1的值。3、最后,再一次性对51单片机4个io口赋值给P0。

51单片机的编程问题?
其实就是用io脚做出来的同步半双工串口。支持cpu卡的程序一般比较庞大,需要用c51来组织,但是由于c编译的不确定性,必须把底层程序封装成汇编语言模块嵌入到工程中。这就带来几个问题:如何声明函数、参数如何传递等。限于篇幅,不能说得很细。下面举例:汇编程序单独保存一个文件,加入到工程中,函数...

51单片机中"或"运算可以进行哪些操作
”或“运算可以对单片机IO口赋值,即把IO输出置1。在单片机中,每个IO口都关联到一个特定的引脚,可以通过编程来控制这个引脚的电平状态。当执行”或“运算时,如果对应的位为1,则输出引脚会被置1;如果对应的位为0,则输出引脚的状态不变。这种操作常用于初始化IO口或者在需要改变引脚状态时使用。

请教一下各位: 我用51单片机的普通IO口的操作技巧。
这个简单啊,直接对P0口进行位操作就可以了,但是如果其他地方用到P0口的话不要用赋值操作如:P0=0x1e;这样会影响P0口其他位的值。最好如下:define S1 P0 开:S1 |= 0x1e;关:S1 &=0xe1;

相似回答