在51单片机c语言编程中如何用sbit建立数组?

在我编写51单片机c语言程序时遇到这样一个问题,一下代码

sbit floorled1 = P1^0;
sbit floorled2 = P1^1;
sbit floorled3 = P1^2;
sbit floorled4 = P1^3;

这样编写显然很麻烦,在后面使用的时候我不得不编写更多的代码
一旦增加或减少floorled时,大量代码需要更改。

我尝试这样编写

sbit floorled[4];

可是不行!

请问高手有没有更好的解决办法?

第1个回答  2014-01-03
首先申明一下、新手一枚、我也遇到同样的问题、说个比较笨的办法、用的时候直接给P1赋值、单片机初始时所有i/o口都为高电平,比如你想要floorled1=0;你就写P1=0xfe;floorled2=0;你就写P1=0xfd;floorled1=0;floorled2=0;你就写P1=0xfb;个人见解、谢谢!!!

在51单片机c语言编程中如何用sbit建立数组?
首先申明一下、新手一枚、我也遇到同样的问题、说个比较笨的办法、用的时候直接给P1赋值、单片机初始时所有i\/o口都为高电平,比如你想要floorled1=0;你就写P1=0xfe;floorled2=0;你就写P1=0xfd;floorled1=0;floorled2=0;你就写P1=0xfb;个人见解、谢谢!!!

51单片机C语言编程,是不是不能用位定义sbit来定义数组呢?我试过,会...
没法定义bit数组,bit的结构体不能定义,如果是做标志的话可以这样用 unsigned int flag[100]=0;\/\/定义1600个标志void SetFlag(int SetBit)\/\/标志置1{ flag[SetBit>>16]|=1<<(SetBit&0x0f);}void ClrFlag(int ClrBit)\/\/标志清零{ flag[ClrBit>>16]&=~(1<<(ClrBit&0x0f));...

51单片机用C语言,sbit怎么使用???什么作用呢??什么含义
1. sbit是一种数据类型,表示一个位,值为0或1 2. 举个例子:sbit CLK=P3^0; 其中CLK占一个位,表示端口P3^0,表示输出给这个端口的数据不是0就是1.(lz学过51,所以P3^0的含义就不用我多解释了吧)3. lz如有其他问题可追问

51单片机c语言sbit的作用是什么
就是给P0^0又定义了个名字叫P00。这样在程序中用到P0^0的时候写P00就可以了,这样为的书写方便。如果没有SBIT就成了赋值语句。

求救,求救,51单片机C语言中找一种类似位sbit的东西定义在结构体中
通过“与”、“或”、“移位”等实现。判断:要判断单字节二进制数A的BIT2,可以使用A&0b00000100,结果等于0,说明BIT2=0,否则,BIT2=1.设置:要将单字节二进制数A的BIT2置位为1,可以使用A||0b00000100,复位为0,可以使用A&0b11111011。读取:要读取单字节二进制数A的BIT2,可以使用“...

51单片机c语言sbit的作用是什么
1. SBIT指令在51单片机C语言编程中用于指定一个特定的端口位。2. 通过SBIT,可以将端口名称和位名称关联起来,便于在程序中引用。3. 例如,SBIT P00 = P0^0;定义了P00这个名字代表P0口的第0位。4. 使用SBIT可以让代码更加清晰,避免直接使用复杂的位地址。5. 如果没有SBIT指令,程序员需要使用位...

单片机c语言如何用sbit定义多个io口
不大清楚你的意思,51里面我常用的方法是这样:【例子1】sbit Key_1 = P1^0;sbit Key_2=P0^3;然后下文直接使用KEY_1和Key_2就行了 如果是需要IO口太多,又是同一组的,就用sfr

关于51单片机io口sbit赋值的问题
你的l1是一个位变量,而a是一个8位的字符型,a=0x40,是第七位为1,你执行把a赋值给l1,得到的是把a的最低位给了位变量l1,所以l1是得0。l1的值要么是1,要么是0。

51单片机C语言编程
include<reg51.h> define uchar unsigned char sbit pluse1=P1^0;sbit pluse2=P1^1;uchar t1=0,t2=0;void t0isr() interrupt 1 { TH0=(65536-25000)\/256;TL0=(65536-25000)%256;t1++;if(t1<15)pluse=1;else pluse=0;if(t1>20)t1=0;} void t1isr() interrupt 3 { TH1=(65536...

用51单片机C语言编写程序实现6位共阴极数码管循环显示0123456789ABCDEF...
\/\/数码管段选 \/* 8 9a b c def*\/code uchar wen[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};\/\/数码管位选uchar huancun[] = {0x00,0x00,0x00,0x00,0x00,0x00};\/\/数码管段选缓存sbit duan = P2^6;\/\/段选sbit wei = P2^7;\/\/位选void delay(uchar x)\/\/延时函数...

相似回答