找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2074|回复: 6
打印 上一主题 下一主题
收起左侧

新手请教 手上有AT89C2051 想利用P0的不同几个I/o口

[复制链接]
跳转到指定楼层
楼主
ID:162484 发表于 2017-2-16 00:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
初学单片机,新手请教,手上有AT89C2051 想利用P0的不同几个I/o口
比如我想用P0_2,P0_3,P0_4,P0_5口做为一组,或用,P0_3,P0_4,P0_5,P0_7做一组 不一定是连续的口
这些口只是P0中的一部分口,如何作为一组来调用呢
比如类似
unsigned char IO[4];


IO[0]代P0_2、IO[1]代、IO[2]代P0_4、IO[3]代 P0_5。然后给IO 赋值不用再每次写 P0_2=x P0_3=x P0_4=x P0_5=x可以写可是调试的代码么?详细解释下,请赐教谢谢
                        
   






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

7#
ID:167782 发表于 2017-3-2 23:07 | 只看该作者
那么定义一个数组IO={val1,val2},在需要的地方调用数组IO的元
回复

使用道具 举报

6#
ID:151348 发表于 2017-3-2 18:29 | 只看该作者
用位操作吧,比如val1 ^= ((1 << 3) | (1 << 4) | (1 << 5) | (1 << 6));P0=val1;这表示只把3、4、5、6口取反,不改变其他引脚的状态;val2|=((1<<(1-1))|(1<<(2-1))|(1<<(3-1)));P0=val2;这表示只让P2_0、P0_1、P0_2口取1,不改变其他引脚的状态,那么定义一个数组IO={val1,val2},在需要的地方调用数组IO的元素
回复

使用道具 举报

5#
ID:162484 发表于 2017-2-28 00:08 | 只看该作者
utzuzu 发表于 2017-2-16 08:41
楼主的思路很奇特,如果希望达到 char IO[4];   通过IO="0010" 这样的方式赋值。 那你要做一个赋值函数来实 ...

新手想请教下,不连续的几个端口如何调用,利用数组之类的方法.....,比如P0口的P0_3 ,P0_4 ,P0_5,P0_6,
这四个口作为输出端口怎么统一调用,能写个简单程序么?多谢了
回复

使用道具 举报

地板
ID:153041 发表于 2017-2-16 08:43 | 只看该作者
这样做使用起来是方便了,但是会消耗cpu时间;任何事情都要付出代价的
回复

使用道具 举报

板凳
ID:153041 发表于 2017-2-16 08:41 | 只看该作者
楼主的思路很奇特,如果希望达到 char IO[4];   通过IO="0010" 这样的方式赋值。 那你要做一个赋值函数来实现, 比如int IO_act(&IO) ,在函数里面根据IO数组内容转变成单个IO口的赋值。 最后在程序中可以通过2句话来达到你的设想:  

IO="0010";
IO_act(IO);

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

沙发
ID:162484 发表于 2017-2-16 00:36 | 只看该作者

初学单片机,新手请教,手上有AT89C2051 想利用P0的不同几个I/o口
比如我想用P0_2,P0_3,P0_4,P0_5口做为一组,或用,P0_3,P0_4,P0_5,P0_7做一组 不一定是连续的口
这些口只是P0中的一部分口,如何作为一组来调用呢
比如类似
unsigned char IO[4];


IO[0]代P0_2、IO[1]代P0_3、IO[2]代P0_4、IO[3]代 P0_5。然后给IO 赋值不用再每次写 P0_2=x P0_3=x P0_4=x P0_5=x可以写可是调试的代码么?详细解释下,请赐教谢谢
                        
   





评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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