请教一下各位:
我用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口的操作技巧。
答案:6 悬赏:70
解决时间 2021-03-03 10:41
- 提问者网友:但未伤到心
- 2021-03-03 03:03
最佳答案
- 二级知识专家网友:许你一世温柔
- 2021-03-03 04:23
如果你只用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
……
直接调用这个函数就行了
全部回答
- 1楼网友:伤口狠精致
- 2021-03-03 08:33
这个问题太深奥了,看公式都把我看晕了。
- 2楼网友:错过的是遗憾
- 2021-03-03 08:26
直接端口赋值P0=0x1e;就OK了亲!
- 3楼网友:一起来看看吧
- 2021-03-03 07:48
这个简单啊,直接对P0口进行位操作就可以了,但是如果其他地方用到P0口的话不要用赋值操作如:P0=0x1e;这样会影响P0口其他位的值。最好如下:
#define S1 P0
开:S1 |= 0x1e;
关:S1 &=0xe1;
- 4楼网友:怪咖小青年
- 2021-03-03 06:15
你好,这个需要模拟出串口时序,编程不是很难,可以模拟出两个串口,你是要做实物还是仿真呢
- 5楼网友:一个很哇塞的汉子
- 2021-03-03 05:34
可能直接写P口, 不用单独一位一位写
可以定义动作为数组啊, 根据动作输出数组到端口就好了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯