标题: 求助一个C语言编程的问题 [打印本页]

作者: elise    时间: 2017-5-28 17:59
标题: 求助一个C语言编程的问题
我用我的理解大概的表达一下,因为现在学的实在是太皮毛,很多概念都还不是很清楚,忘个位高手海涵。
我想咨询的问题就是:
如何来定义一个地址组。不知道这样描述是不是正确。
我用
unsigned char code table[]={1,2,3,4,5,6,7,8,9,0};
这个语句来打个比方。
如果我有一个unsigned char变量a,和一个unsigned char变量c那我可以让a=table[c],
现在我想让table里面的数组改成地址。就是P1.0,P1.1,P1.2,P1.3.............P1.7,我分别用a,b,c,d,e,f,g,h来定义P1各引脚。
然后我想让table[1]=1;这样,就是让P1.1输出高电平。。。
这样的语句要怎么写???望高手指点一下。。。
可能我描述的比较含糊。。不知道有没有高手看懂。。。?


作者: angmall    时间: 2017-5-29 15:54
unsigned char变量 是8个bit为一个单元,
P1.0 是一个bit

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴极0~f数码管段码 编码       
P1.0,P1.1,P1.2,P1.3.............P1.7,可以分别用a,b,c,d,e,f,g,h来定义P1各引脚。

8段共阴极led数码管显示“0”,对应字形码为0x3f  

table[0]=0x3f;
P1 = table[0];

8位二进制数为 0011、1111;转换为16进制就是3FH。

这样,就是让P1.0输出高电平,P1.1输出高电平,P1.2输出高电平,P1.3输出高电平,P1.4输出高电平,P1.5输出高电平,P1.6输出低电平,P1.7输出低电平。

楼主明白了吗?


作者: elise    时间: 2017-5-29 22:09
angmall 发表于 2017-5-29 15:54
unsigned char变量 是8个bit为一个单元,
P1.0 是一个bit


恩,谢谢,这个我明白,但是我想要实现的不是这样的。我想让P0,P1,P2共24个io口,能够被一个变量来控制。比方说变量a=0,P0^0口输出低电平。变量a=9,P1^0输出低电平,变量a=24,P2^7输出低电平。就类似unsigned char table[]={}所能实现的功能一样。
作者: lyf898    时间: 2017-5-30 11:17
elise 发表于 2017-5-29 22:09
恩,谢谢,这个我明白,但是我想要实现的不是这样的。我想让P0,P1,P2共24个io口,能够被一个变量来控制。 ...

一楼已经说得很明白了,说白了就是端口控制一个数组怎么写也只能控制一个端口8个位。24个IO口即3个端口,不可能跨端口控制,你的思路是把简单问题复杂化,三个数组表达3个端口24个IO口难道不够简单么?
作者: 王菲    时间: 2017-5-30 12:27
让p0=1,变量不变
作者: Invoker    时间: 2017-5-30 19:21
不太懂你在说啥,等号是赋值用的,table[i]=1并不能表示让某个电平变高,只是给table赋值
作者: angmall    时间: 2017-5-30 22:13
KEIL环境下就不能在sbit使用数组或指针进行“位”操作。
作者: elise    时间: 2017-5-30 23:46
可能是我没表达对,我把我需要达到的目的描述一下吧!!如果P0,P1,P2共计2
作者: ayuihngv    时间: 2017-5-31 11:35
table[0]=0x3f;
P1 = table[0];
作者: elise    时间: 2017-6-1 09:18
angmall 发表于 2017-5-30 22:13
KEIL环境下就不能在sbit使用数组或指针进行“位”操作。

恩,我要的就是这样的回答,如你所说,那我想要实现的语句是写不出来了,看来只能别找办法了。。。




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