[家电应用] 51单片机能不能把IO口作为形参传入到子函数里

[复制链接]
3196|11
 楼主| jjcomeback 发表于 2020-8-5 09:34 | 显示全部楼层 |阅读模式
我一个控制板上有好几个1640的驱动芯片,驱动程序都一样,唯一的差异就是控制端口不同,所以我在想能不能把IO口
作为形参,传入到驱动程序里面。
arsnealer 发表于 2020-8-5 10:54 | 显示全部楼层
你用一个变量获取IO状态然后传进去不就行了
ayb_ice 发表于 2020-8-6 13:58 | 显示全部楼层
51的GPIO只能直接寻址,不能通过指针等形式说部

写几个子函数就可以,通过参数控制
比如
void GPIO_Set(u8 ucSelBit)
{
        if (ucSelBit == 0)
        {
                P0_0 = 1;
        }
        else
        if (ucSelBit == 1)
        {
                P0_1 = 1;
        }
        ...
}
抱素 发表于 2025-10-14 15:52 | 显示全部楼层
51 单片机可以将 IO 口作为形参传入子函数。可通过定义 IO 口地址或位地址作为参数,例如将 P0 口地址 0x80 作为参数传递,在函数内通过指针操作该地址实现 IO 控制。需注意函数参数类型与 IO 口地址匹配,确保编译时正确解析端口操作。
桃花落满山前 发表于 2025-10-27 15:48 | 显示全部楼层
51 单片机可以将 IO 口作为形参传入子函数。需将 IO 口寄存器地址(如 P0、P1 的地址)或位地址作为参数传递,子函数通过指针或宏操作该 IO 口。例如:void setPin (unsigned char *port, unsigned char pin) { *port |= (1<<pin); },调用时传入 & P1、0 即可操作 P1.0,注意参数类型匹配寄存器地址。
梦境摆渡人 发表于 2025-10-29 13:46 | 显示全部楼层
是的,你可以这样做
旧时光放映机 发表于 2025-10-30 08:17 | 显示全部楼层
是的,你可以定义一个函数,将IO口地址作为参数传入,然后在函数内部根据传入的地址进行操作。
野玫瑰 发表于 2025-11-3 14:18 | 显示全部楼层
51 单片机可以将 IO 口作为形参传入子函数,但需通过端口地址实现。例如,将 P0 口地址(0x80)作为参数传入,函数内用指针或宏操作该地址。示例:void SetPin (unsigned char *port, bit value){ *port = value; } 调用时传 & P0 即可。注意 IO 口需先配置方向,避免操作冲突。
水星限定 发表于 2025-11-12 16:12 | 显示全部楼层
51 单片机可以将 IO 口作为形参传入子函数,但需传入端口寄存器地址(如 & P0、&P1)而非直接写 P0、P1。例如子函数定义为 void func (unsigned char port),调用时传 & P1,函数内用port 操作 IO 口。直接传 P0 会被当作端口当前值,无法操作引脚,需通过指针间接访问寄存器。
抱素 发表于 2025-11-13 16:14 | 显示全部楼层
51 单片机可以将 IO 口作为形参传入子函数。可通过定义 IO 口寄存器地址的宏或指针实现,例如将 P0、P1 等端口的地址作为参数传递,在函数内通过指针操作对应寄存器。需注意不同编译器对寄存器操作的支持,确保形参类型与端口地址匹配,避免类型错误导致操作异常。
抱素 发表于 2025-11-14 19:09 | 显示全部楼层
51 单片机可以将 IO 口作为形参传入子函数。需将 IO 口寄存器地址(如 P0、P1 的地址)作为参数传递,子函数中通过指针操作该地址。例如:void setPin (unsigned char *port, unsigned char pin) { *port |= (1<<pin); } 调用时传入 & P0、&P1 等,实现对指定 IO 口的操作。
樱花树维纳斯 发表于 2025-11-17 15:59 | 显示全部楼层
51 单片机可以将 IO 口作为形参传入子函数。可将 IO 口地址(如 & P0、&P1)或端口引脚定义(如 P1_0)作为参数传递,子函数中通过指针或宏操作该 IO 口。例如:void SetPin (unsigned char *port, bit pin) { *port &= ~(1<<pin); },调用时传入 & P1、0 即可操作 P1.0,需注意指针类型匹配。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部