标题: 新手请教 手上有AT89C2051 想利用P0的不同几个I/o口 [打印本页]

作者: dinding101    时间: 2017-2-16 00:33
标题: 新手请教 手上有AT89C2051 想利用P0的不同几个I/o口
初学单片机,新手请教,手上有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可以写可是调试的代码么?详细解释下,请赐教谢谢
                        
   







作者: dinding101    时间: 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可以写可是调试的代码么?详细解释下,请赐教谢谢
                        
   






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

IO="0010";
IO_act(IO);

作者: utzuzu    时间: 2017-2-16 08:43
这样做使用起来是方便了,但是会消耗cpu时间;任何事情都要付出代价的
作者: dinding101    时间: 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,
这四个口作为输出端口怎么统一调用,能写个简单程序么?多谢了
作者: imxuheng    时间: 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的元素
作者: lwzmuse    时间: 2017-3-2 23:07
那么定义一个数组IO={val1,val2},在需要的地方调用数组IO的元




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1