amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 501|回复: 9

请问大家有没有办法将51中定义的引脚作为参数传给 函数

[复制链接]
发表于 2015-8-6 09:56:57 | 显示全部楼层 |阅读模式
例如 定义  sbit LED =P1^0;
然后定义个一个 函数 void LED_Device(XXXXX);   调用  LED_Device(LED); 来操作 P1^0
发表于 2015-8-6 09:59:09 | 显示全部楼层
应该是可以的,你可以试一下
发表于 2015-8-6 10:10:33 | 显示全部楼层
这种情况下,只能用指针。
发表于 2015-8-6 10:21:27 | 显示全部楼层
指针都没用,因为SFR不支持间接寻址。
发表于 2015-8-6 10:53:01 | 显示全部楼层
不能,你只能带一个ID号,函数里再判断ID对应的IO。
 楼主| 发表于 2015-8-6 10:57:32 | 显示全部楼层
小李非刀 发表于 2015-8-6 10:53
不能,你只能带一个ID号,函数里再判断ID对应的IO。

算了看来还是得用带参数的宏了
发表于 2015-8-6 11:21:12 | 显示全部楼层
一般来讲51是不可以的,因为51的SFR是直接寻址的。当然你也可以把所有的管脚都写一遍然后再通过参数跳转,不过效率就比较低了。
发表于 2015-8-6 11:24:58 | 显示全部楼层
给个ID号,对应一下吧
发表于 2015-8-6 11:48:46 | 显示全部楼层
不用位寻址就可以了
例如:
void f(uchar *PORT,uchar IO)
{
      (*PORT)|=(1<<IO);
}
发表于 2015-8-6 12:19:55 来自手机 | 显示全部楼层
jiangxingyuan 发表于 2015-8-6 11:48
不用位寻址就可以了
例如:
void f(uchar *PORT,uchar IO)

不允许的。51sfr只能直接寻址。间接寻址是访问高128byte RAM
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-6-17 09:57

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表