是这样的,我想写一个关于红外解码的程序,我们都知道,红外解码就是解出4个编码,每次读取相邻两次下降沿之间的宽度,用来判断该位是零还是一,然后八个位合成一个字节。
如果能做成这样:先定将32个位的数组:bit wei[32],再定义一个4个变量的数组:uchar idata shu[4];再将这二个数组指向同一对象:wei=shu;那么,在判断的时候就会极其简单,在得到脉冲宽度进行判断后,我只需要对位进行写操作,再直接读取idata数组中的值就可以了,而且进中断的次数也可以和位数组的下标联系起来,然而可惜的是,51单片机在定将位数组时提示"array of bit"。位是不能作为数组元素定义的。
难道我只能先定义四个变量,再用sbit 语句定义每个变量中的位,如
Unsigned char bdata bitdata;
sbit bit7=bitdata^7; sbit bit6=bitdata^6; sbit bit5=bitdata^5; sbit bit4=bitdata^4; sbit bit3=bitdata^3; sbit bit2=bitdata^2; sbit bit1=bitdata^1; sbit bit0=bitdata^0;
感觉这样好麻烦啊,四个变量一共要写32次,在每次判断后对位的赋值也很麻烦,求大虾给点思路呗 |