单片机c语言中P0端口定义如果不用到P0^0,而直接用后面的该如何做?

比如我作8段数码管段码的端口。

#define number P0
unsigned char number_table[10]=

{11001111,00100101,00000111,01001011,00010011,00010001,11000111,00000001,00000011,10000001,}
是1到0的段码。用到P0^7到P0^0.
但是现在我想用P0^7到P0^1做7位数码管的段码端口。P0^0有其他用处。
除了数组每个根据段码少一位,
前面的define P0那里该如何处理呢。
必须要一个一个端口定义么?

先对p0^1到7做一个清零 P0 &= 0x01
然后用number_table去或一下就不会影响到p00了
这里注意要将number_table的p0^0位清零
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-20
不太明白你的问题什么意思咯。用哪个端口是看你的硬件是如何连接的啊,没啥理由要重定义P0这样的东西的嘛。追问

对的。以往P0^0都是都是数码管上的那个小数点。这次我的板子上P0^0是另有用处的。而且数码管用不到小数点。也就是说数码管从八位变成了7位。如果说去掉了P0^7我可以直接去掉第七位就好。但是我如果去掉第0位。定义的P0用到的还是0~6我想用1~7.

追答

这个没办法,你使用的只能想办法赋值1~7位了。
可以考虑先将P0与11111110求或,然后再与你想赋的值求与。这样就不会改动0位的值了。

追问

谢谢。两个都很好。给了先说的。

第2个回答  推荐于2017-09-07
你每次赋值的时候用1去或以下p0^0不就不影响它了吗追问

对的。如果我的p00没有用的话。你说的方法可行。但是问题是我的P00是有其他用处的。

追答

那么只要保证你使用数码管时不影响p0^0即可对吧
不要用赋值
先对p0^1到7做一个清零
P0 &= 0x01

然后用number_table去或一下就不会影响到p00了
这里注意要将number_table的p0^0位清零

本回答被提问者采纳
相似回答