求教C语言高手

[复制链接]
 楼主| zyww123 发表于 2015-2-10 20:33 | 显示全部楼层 |阅读模式
我用的DSP是32位的,在程序中如何定义一个1个8位的变量呢,谢谢各位大神
zhangmangui 发表于 2015-2-10 20:57 | 显示全部楼层
无符号char啊   
海中水 发表于 2015-2-11 09:19 | 显示全部楼层
若定义一个命令i的变量如下:
char i;//有符号8位变量
unsigned char i;//无符号8位变量
wei3890836 发表于 2015-2-25 13:59 | 显示全部楼层
32位的DSP没有8位,最低都是16位的,要想定义一个8位的变量,只能与上0x00ff,这个可以用modbus来验证,你看crc校验部分
zhangmangui 发表于 2015-3-2 23:02 | 显示全部楼层
wei3890836 发表于 2015-2-25 13:59
32位的DSP没有8位,最低都是16位的,要想定义一个8位的变量,只能与上0x00ff,这个可以用modbus来验证,你 ...

恩  是的   DSP的变量比较多和奇特
海中水 发表于 2015-3-3 12:39 | 显示全部楼层
wei3890836 发表于 2015-2-25 13:59
32位的DSP没有8位,最低都是16位的,要想定义一个8位的变量,只能与上0x00ff,这个可以用modbus来验证,你 ...

程序里面不能定义一个8位的变量吗?
wei3890836 发表于 2015-3-4 09:39 | 显示全部楼层
海中水 发表于 2015-3-3 12:39
程序里面不能定义一个8位的变量吗?

不能啊,实际上使用的时候是16位的,这点和单片机以及ARM不一样
wei3890836 发表于 2015-3-4 09:42 | 显示全部楼层
海中水 发表于 2015-3-3 12:39
程序里面不能定义一个8位的变量吗?

https://bbs.21ic.com/icview-37747-1-1.html   
很早之前的一个相同问题 :)
海中水 发表于 2015-3-4 10:18 | 显示全部楼层
wei3890836 发表于 2015-3-4 09:42
https://bbs.21ic.com/icview-37747-1-1.html   
很早之前的一个相同问题

这是从数据线上得到8位数据哦!
海中水 发表于 2015-3-4 10:20 | 显示全部楼层
wei3890836 发表于 2015-3-4 09:42
https://bbs.21ic.com/icview-37747-1-1.html   
很早之前的一个相同问题

这应该不是定义一个变量吧!汇编的时候可能会是这样。
wei3890836 发表于 2015-3-4 13:41 | 显示全部楼层
海中水 发表于 2015-3-4 10:20
这应该不是定义一个变量吧!汇编的时候可能会是这样。

dsp数据总线上最少都是16位的话,那么变量怎么定义8位呢,这点我没想明白,但首先一点char是16位的
海中水 发表于 2015-3-4 15:03 | 显示全部楼层
wei3890836 发表于 2015-3-4 13:41
dsp数据总线上最少都是16位的话,那么变量怎么定义8位呢,这点我没想明白,但首先一点char是16位的 ...

这一点真颠覆了我之前的观点了,也就是说在编写程序中char是16位的。难道是我错了吗?
wei3890836 发表于 2015-3-4 20:29 | 显示全部楼层
海中水 发表于 2015-3-4 15:03
这一点真颠覆了我之前的观点了,也就是说在编写程序中char是16位的。难道是我错了吗? ...

呵呵,貌似是的。但ARM和如AVR的单片机的CHAR是8位的
海中水 发表于 2015-3-5 09:17 | 显示全部楼层
wei3890836 发表于 2015-3-4 20:29
呵呵,貌似是的。但ARM和如AVR的单片机的CHAR是8位的

好像不是吧!这好像也得好编译器有一定关系的。
海中水 发表于 2015-3-5 09:18 | 显示全部楼层
wei3890836 发表于 2015-3-4 20:29
呵呵,貌似是的。但ARM和如AVR的单片机的CHAR是8位的

这个问题我之前没有关注过,如果有不对的地方,还请多多指教。
icegoat 发表于 2015-3-5 09:26 | 显示全部楼层
拿16位的空间来当8位的用,char其实就是低8位,高8位闲置~
海中水 发表于 2015-3-5 09:37 | 显示全部楼层
icegoat 发表于 2015-3-5 09:26
拿16位的空间来当8位的用,char其实就是低8位,高8位闲置~

我也觉得应该是这样,怎么可能定义一个char,然后就为8位了呢?这不是和标准C语言有点冲突了吗?
wei3890836 发表于 2015-3-5 09:39 | 显示全部楼层
icegoat 发表于 2015-3-5 09:26
拿16位的空间来当8位的用,char其实就是低8位,高8位闲置~

这个对进位有很大的影响,你像modbus的校验部分,如果不对16进制做0x00ff处理的话,校验码是不对的
wei3890836 发表于 2015-3-5 09:40 | 显示全部楼层
海中水 发表于 2015-3-5 09:18
这个问题我之前没有关注过,如果有不对的地方,还请多多指教。

没啥指教的,正好前一段时间做modbus通信,这地方遇到过问题,就关注了,以后还指望版主大大多帮助我呢
海中水 发表于 2015-3-5 10:37 | 显示全部楼层
wei3890836 发表于 2015-3-5 09:40
没啥指教的,正好前一段时间做modbus通信,这地方遇到过问题,就关注了,以后还指望版主大大多帮助我呢 ...

我的抽空测试一下。我做的是电源方面的,用的都是C2000。我这里定义的都是用char作为8位数据,我的查看一下了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 返回顶部 返回列表