不连续IO口怎么输出7led显示
2009年11月25日 14:37 发布者:haosheng
大家好: 小弟初学KEIL,看到很多流水灯例子都是用连续的IO,比方:P0,P1等, 由于PCB布线的原因,不连续的IO(比方说:7LED用到的段为P1.5,P1.6,P3.7,P1.7,P3.4,P1.4,P1.3)通过什么方法(也就是像操作P1口那样)输出7LED数码管显示呢?谢谢 网友评论
haosheng 2009年11月27日
楼上的好像不行的。
楼上的好像不行的。
alpha321 2010年05月19日
感谢1楼! 你的代码是可以的, 列表为证:
12 void main(void)
13 {
14 1 P4(5);
15 1
16 1 while(1);
17 1 }
C51 COMPILER V8.02 TES1 05/19/2010 00:59:30 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION main (BEGIN)
; SOURCE LINE # 12
; SOURCE LINE # 13
; SOURCE LINE # 14
0000 D292 SETB P1_2
0002 C295 CLR P1_5
0004 D296 SETB P1_6
0006 C2B7 CLR P3_7
0008 C297 CLR P1_7
000A C2B4 CLR P3_4
000C C294 CLR P1_4
000E C293 CLR P1_3
0010 ?C0001:
感谢1楼! 你的代码是可以的, 列表为证:
12 void main(void)
13 {
14 1 P4(5);
15 1
16 1 while(1);
17 1 }
C51 COMPILER V8.02 TES1 05/19/2010 00:59:30 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION main (BEGIN)
; SOURCE LINE # 12
; SOURCE LINE # 13
; SOURCE LINE # 14
0000 D292 SETB P1_2
0002 C295 CLR P1_5
0004 D296 SETB P1_6
0006 C2B7 CLR P3_7
0008 C297 CLR P1_7
000A C2B4 CLR P3_4
000C C294 CLR P1_4
000E C293 CLR P1_3
0010 ?C0001:
alpha321 2010年05月19日
1楼高手, 有空多交流!
1楼高手, 有空多交流!
oksmn 2010年05月26日
哈哈。真的要感谢uushuo,这个问题也困扰我很久了 ,
哈哈。真的要感谢uushuo,这个问题也困扰我很久了 ,
alpha321 2010年05月29日
要是写成类似这样会更好:
#define P4((x)) P1_2 = 0x01&(x);\
.....
这里的x可以是一个常数表达式, 如 0x01<<2.
要是写成类似这样会更好:
#define P4((x)) P1_2 = 0x01&(x);\
.....
这里的x可以是一个常数表达式, 如 0x01<<2.
lyong2002 2010年05月30日
初学者,看不明白.用(X)是表示什么意思
初学者,看不明白.用(X)是表示什么意思
kobeast 2010年06月01日
1楼高手 ,好久不用51了
1楼高手 ,好久不用51了
daw85 2010年06月07日
还真没想到这个问题呢
还真没想到这个问题呢
eastljd 2011年06月12日
按位赋值
按位赋值
eastljd 2011年06月12日
按位赋值
按位赋值
MCU_NEWER 2011年07月04日
自己做个枚举列表,犹如数组一样,这样看着也方便。
自己做个枚举列表,犹如数组一样,这样看着也方便。
michelle_qi1234 2011年07月04日
学习
学习
thunderccx 2011年07月11日
简单的数据处理,没什么不同
简单的数据处理,没什么不同
hyfcl 2011年07月14日
先查出欲显示信息的字段码,再按位赋值
先查出欲显示信息的字段码,再按位赋值
不知道这样可以不?用“P4(x);”代替“P4 = (x);”
#include
#define P4(x) P1_2 = 0x01&x;\
P1_5 = 0X02&x;\
P1_6 = 0x04&x;\
P3_7 = 0x08&x;\
P1_7 = 0x10&x;\
P3_4 = 0x20&x;\
P1_4 = 0x40&x;\
P1_3 = 0x80&x