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

[复制链接]
2001|5
 楼主| 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,注意参数类型匹配寄存器地址。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

27

帖子

0

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