请教一下各位: 我用51单片机的普通IO口的操作技巧。
请教一下各位:我用51单片机的普通IO口定义了一组开关,就像sbitS1A=P0^1;sbitS1B=P0^2;sbitS2A=P0^3;sbitS2B=P0^4;的形式...
请教一下各位:
我用51单片机的普通IO口定义了一组开关,就像
sbit S1A = P0^1;sbit S1B = P0^2;sbit S2A = P0^3;sbit S2B = P0^4;的形式,但是调用的时候S1A、S1B和S2A、S2B是分组调用的,而且动作都一样,比如:if (a=1){S1A=1;S1B=1;S2A=1;S2B=1;}有办法用一组简单的语句(像FOR循环之类的)让各个分组都进行相同的动作而不是分别单独写各个分组的动作吗?
因为用端口操作不方便,所以用了位操作。所以对端口赋值的方法不太适用这个程序。 展开
我用51单片机的普通IO口定义了一组开关,就像
sbit S1A = P0^1;sbit S1B = P0^2;sbit S2A = P0^3;sbit S2B = P0^4;的形式,但是调用的时候S1A、S1B和S2A、S2B是分组调用的,而且动作都一样,比如:if (a=1){S1A=1;S1B=1;S2A=1;S2B=1;}有办法用一组简单的语句(像FOR循环之类的)让各个分组都进行相同的动作而不是分别单独写各个分组的动作吗?
因为用端口操作不方便,所以用了位操作。所以对端口赋值的方法不太适用这个程序。 展开
6个回答
展开全部
这个简单啊,直接对P0口进行位操作就可以了,但是如果其他地方用到P0口的话不要用赋值操作如:P0=0x1e;这样会影响P0口其他位的值。最好如下:
#define S1 P0
开:S1 |= 0x1e;
关:S1 &=0xe1;
#define S1 P0
开:S1 |= 0x1e;
关:S1 &=0xe1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你只用p0的这几个口,你可以用P0=0xf0代替。也可以用一函数
void sab(bit a,b,c,d)
大括号
s1a=a
s2a=b
……
直接调用这个函数就行了
void sab(bit a,b,c,d)
大括号
s1a=a
s2a=b
……
直接调用这个函数就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能直接写P口, 不用单独一位一位写
可以定义动作为数组啊, 根据动作输出数组到端口就好了
可以定义动作为数组啊, 根据动作输出数组到端口就好了
追问
这样应该是可以的。不过这个程序的两个判断参数的组合有144个,要输出到3.5个8位端口,都计算出数组再给端口输出好像很浪费资源呀。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接端口赋值P0=0x1e;就OK了亲!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题太深奥了,看公式都把我看晕了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |