Loo_jack
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
阅读:1216回复:17

问个C语言的问题

楼主#
更多 发布于:2006-01-13 15:01
有个问题想请教一下:
我定义了一个类型:
typedef union _u09
{
// unsigned char value;
struct _C
{
unsigned char sign : 1 ; //bit 0
unsigned char lattice : 8 ; //bit1-9
}C;
}u09;

u09disp_buff_9[71];

我想调用下面这个函数:
void displayLcd(unsigned char *thisBuff,unsigned char block)


我使用的方法是displayLcd(((unsigned char*)disp_buff_9),0);

结果这边获得的数据不是连续的,而是
9个有效bit + 7空的bit + 9个有效bit + 7空的bit + ……
我想问一下怎么才能连续地赋值











昨天留给今天的只不过是一个笑话
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
1C#
发布于:2006-01-13 15:08
Re:问个C语言的问题
...隔行如隔靴搔痒....
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
2C#
发布于:2006-01-14 21:53
Re:问个C语言的问题
...隔行如隔靴搔痒....


what mean?
KxjIron
普通会员
普通会员
  • 铜币0枚
  • 威望0点
  • 贡献值1点
3C#
发布于:2006-01-15 15:07
Re:问个C语言的问题
c/c++ 结构 size 不可能以 bit 为单位啊, 都是以 byte 为基本单位
sizeof(_u09) 会被对齐到 2 bytes or 4 bytes

可以用位流做
I like running
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
4C#
发布于:2006-01-15 15:26
Re:问个C语言的问题
c/c++ 结构 size 不可能以 bit 为单位啊, 都是以 byte 为基本单位sizeof(_u09) 会被对齐到 2 bytes or 4 bytes可以用位流做


铁板大哥~可以用位流做是什么意思?
KxjIron
普通会员
普通会员
  • 铜币0枚
  • 威望0点
  • 贡献值1点
5C#
发布于:2006-01-15 16:02
Re:问个C语言的问题
位流是说按 bit 的方式操作数据, 就是按 bit 去读写一块内存
c 里都是按 byte 方式读写数据, 但是提供 <<, >>, &, |, 等位操作。
这个程序会写吧, 去写一下
然后就可以9位9位操作内存块了 :)
I like running
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
6C#
发布于:2006-01-15 21:49
Re:问个C语言的问题
那还要调用void displayLcd() 函数?输出时需要再设个变量吧?displayLcd()有范围么?是无限循环的么?有些不太明白,望二位执教~
Loo_jack
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
7C#
发布于:2006-01-16 09:41
Re:问个C语言的问题
我到现在也没找到好的算法
只好放弃了u09这个类型
用两个unsigned char 类型的数组,用隔8插1的算发去实现其功能了
感觉不是太好
/**********************************makeLattice******************************************/
//将thisbuff里面的数据每8位空一位地插入disp+buff里面
void makeLattice(unsigned char *thisBuff)
{//具体流程见流程图
 //用上下两个字节里面的数据合成一个字节
unsigned char i = 1 , j = 0,n;

for(n = 0; n < (DISP_BUFF_SIZE*5); n++)
{
disp_buff[1][n] &= (0x80 >>(i-1 ));
disp_buff[1][n] |= (thisBuff[n-j] <<i) | (thisBuff[n-1-j]>>(9-i));
i = i + 1;
if(i == 9)
{
i=0;
j=j+1;
}
}
}
昨天留给今天的只不过是一个笑话
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
8C#
发布于:2006-01-16 09:43
Re:问个C语言的问题
隔行如隔山打牛....

还是觉得写C的牛X~~JAVA看起来很没技术含量, 真没劲~~
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
lijiannan_1981
著名写手
著名写手
  • 铜币15枚
  • 威望0点
  • 贡献值0点
9C#
发布于:2006-01-16 10:12
Re:问个C语言的问题
隔行如隔山打牛....还是觉得写C的牛X~~JAVA看起来很没技术含量, 真没劲~~

趁着年轻
我劝你丫还是赶紧转向C||C++吧
无。
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
10C#
发布于:2006-01-16 17:40
Re:问个C语言的问题
如果设一个数组,有9个元素,然后让i=0,i++,然后用一个指针,一个个顺序值入数组,然后在输出这数组,把九个数组设成1~9就不就型了么?
Loo_jack
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
11C#
发布于:2006-01-16 17:50
Re:问个C语言的问题
上面我发的算法是有错误的
谁能帮我看看
昨天留给今天的只不过是一个笑话
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
12C#
发布于:2006-01-16 18:19
Re:问个C语言的问题
哦~看错了~ [ 2006-01-16 18:21:10 万贤 修改 ]
Loo_jack
写手
写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
13C#
发布于:2006-01-17 10:39
Re:问个C语言的问题
/**********************************makeLattice******************************************/
//将thisbuff里面的数据每8位空一位地插入disp+buff里面
void makeLattice(unsigned char *thisBuff)
{//具体流程见流程图
 //用上下两个字节里面的数据合成一个字节
unsigned char i = 0 , j = 0,n;

for(n = 0;n < DISP_BUFF_SIZE*5; n++)//
{
if( ((n+9)%18) ==0 )
{j=j+1;}
if( ((n+1)%18) ==0 )
{j=j+2;}

disp_buff[1][n] &= (0x01<<i);
disp_buff[1][n] |= (thisBuff[n-j]<<(i+1)) | (thisBuff[n-1-j]>>(8-i));

i = i + 1;
if(i == 9)
{
i=0;
}
}
}

估计这段代码应该是可以的了
昨天留给今天的只不过是一个笑话
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
14C#
发布于:2006-01-17 12:54
Re:问个C语言的问题
这样就能解决内存溢出得问题了??
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
15C#
发布于:2006-01-19 09:28
Re:问个C语言的问题
帮你写了个流程图~word那不会用,凑合用windows下的画图简单作了一个~[em061]

点击[a=http://www.wait4c.com/bbs/userfiles/8879/2006011909262984812.jpg][em112][/a]
松柏
论坛版主
论坛版主
  • 铜币371枚
  • 威望39点
  • 贡献值0点
  • 社区居民
16C#
发布于:2006-01-19 09:33
Re:问个C语言的问题
万贤兄每次都是让我们点击猪头
[color=#0000FF]馋嘴蜗牛[/color] 我的博客:[url]http://osnaile.osdn.cn/[/url]
万贤
作家
作家
  • 铜币1枚
  • 威望24点
  • 贡献值1点
17C#
发布于:2006-01-19 09:34
Re:问个C语言的问题
[em086]
游客

返回顶部