• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

单片机位数编程差别

单片机位数的不同对于编程来说除了寄存器多谢,麻烦些,没有什么不同了吧?
全部回复(37)
正序查看
倒序查看
Constance
LV.11
2
2014-01-29 21:47
精度!
0
回复
Constance
LV.11
3
2014-01-29 21:47
还有处理能力!
0
回复
cltwolf
LV.5
4
2014-02-11 17:51

单位时间内处理的数据量不同(数据量大的时候,数据包大小不同)

为什么现在的CPU要从32位再上一层到64位,就是因为数据分析处理速度会加倍提升。

低位数单片机在处理超过自身位数的数据时,它的计算速度会慢很多很多,不是两倍那么简单。

比如同样时钟频率下,你用8位MCU处理一个16位的数据,那么,你用16位MCU的时候,它有可能是1uS,可用8位的就不止10uS了。

0
回复
2014-03-15 00:00
主要看处理速度,频率
0
回复
2014-03-15 03:49
论坛中单片机高手很多,慢慢学吧,一同进步。
0
回复
2014-03-15 04:00
32位单片机编程要注意大小端的问题,8位自然就不需要
0
回复
2014-03-15 04:01

8位单片机,典型的是51系列的,再高级点用AVR、pic的,功能方面,似乎都不会很复杂,一般可能是控制类的多一下。一般不跑嵌入式OS。

16位的单片机,我接触的主要是MSP430,感觉16位的单片机比较尴尬,高不成低不就,要求低一点,8位MCU就够,高级点不如用32位MCU。一般不跑嵌入式OS。16位就不说了

32位的,就高级点了,一般能跑嵌入式OS,例如ucos2,ucos3,uclinux等等,能做更多复杂的功能。用OS和不用OS的话,编程的思路差异比较大。功能一般有面向控制的,也有简单消费类电子的。

0
回复
2014-03-15 04:02
@山东大汉
8位单片机,典型的是51系列的,再高级点用AVR、pic的,功能方面,似乎都不会很复杂,一般可能是控制类的多一下。一般不跑嵌入式OS。16位的单片机,我接触的主要是MSP430,感觉16位的单片机比较尴尬,高不成低不就,要求低一点,8位MCU就够,高级点不如用32位MCU。一般不跑嵌入式OS。16位就不说了32位的,就高级点了,一般能跑嵌入式OS,例如ucos2,ucos3,uclinux等等,能做更多复杂的功能。用OS和不用OS的话,编程的思路差异比较大。功能一般有面向控制的,也有简单消费类电子的。

32位在某些情况下需要对齐,对datafalsh读写时地址要是4的整数倍

编程方面如果RAM足够考虑到效率问题尽可能用32位变量,不过貌似编译器会根据情况自动把char换成int32

0
回复
山东大汉
LV.10
10
2014-03-15 04:02
@山东大汉
32位在某些情况下需要对齐,对datafalsh读写时地址要是4的整数倍编程方面如果RAM足够考虑到效率问题尽可能用32位变量,不过貌似编译器会根据情况自动把char换成int32
8位16位32位的区别就在于地址位和数据位位宽不同。其实都一样。比如8位的51单片,网上同样有人在上面移植ucos。16位的如430就更不用说了。32位的目前大多数是arm架构的,与前面的8位、16位的指令集不同。除掉前面的boot会用一小段汇编(主要是来clear寄存器,初使化堆栈--有些书上也叫栈)其它大多用C.只要用对应架构和平台的编译器就可以了。故而作为一个c的RD,不需要考虑太多。
0
回复
山东大汉
LV.10
11
2014-03-15 04:02
@山东大汉
8位16位32位的区别就在于地址位和数据位位宽不同。其实都一样。比如8位的51单片,网上同样有人在上面移植ucos。16位的如430就更不用说了。32位的目前大多数是arm架构的,与前面的8位、16位的指令集不同。除掉前面的boot会用一小段汇编(主要是来clear寄存器,初使化堆栈--有些书上也叫栈)其它大多用C.只要用对应架构和平台的编译器就可以了。故而作为一个c的RD,不需要考虑太多。
32位单片机中uint 有4个字节,8位单片机中 uint 只有2个字节
0
回复
山东大汉
LV.10
12
2014-03-15 04:02
@山东大汉
32位单片机中uint 有4个字节,8位单片机中 uint 只有2个字节
现在要用8位,简单快速,,16位吗价格没有优势,,32位吗解决复杂问题一般建议上操作系统,最简单也得是RTX吧,,功能上当然32位强大多了,执行效率时8位是us级,32位是ns级,夸张点讲相差1000倍。。
0
回复
hao2985
LV.9
13
2014-03-15 08:41
低位数单片机在处理超过自身位数的数据时,它的计算速度会慢很多很多,不是两倍那么简单。
0
回复
山东大汉
LV.10
14
2014-03-15 18:31
@hao2985
低位数单片机在处理超过自身位数的数据时,它的计算速度会慢很多很多,不是两倍那么简单。
都是基础知识
0
回复
208971
LV.7
15
2014-03-15 23:03
@chenyingxin7610
论坛中单片机高手很多,慢慢学吧,一同进步。
0
回复
208971
LV.7
16
2014-03-15 23:03
@Constance
精度!
是的
0
回复
208971
LV.7
17
2014-03-15 23:03
@Constance
还有处理能力!
对的
0
回复
208971
LV.7
18
2014-03-15 23:04
@cltwolf
单位时间内处理的数据量不同(数据量大的时候,数据包大小不同)为什么现在的CPU要从32位再上一层到64位,就是因为数据分析处理速度会加倍提升。低位数单片机在处理超过自身位数的数据时,它的计算速度会慢很多很多,不是两倍那么简单。比如同样时钟频率下,你用8位MCU处理一个16位的数据,那么,你用16位MCU的时候,它有可能是1uS,可用8位的就不止10uS了。
谢谢,这些我理解
0
回复
208971
LV.7
19
2014-03-15 23:04
@Constance
还有处理能力!
谢谢,理解
0
回复
208971
LV.7
20
2014-03-15 23:04
@山东大汉
8位单片机,典型的是51系列的,再高级点用AVR、pic的,功能方面,似乎都不会很复杂,一般可能是控制类的多一下。一般不跑嵌入式OS。16位的单片机,我接触的主要是MSP430,感觉16位的单片机比较尴尬,高不成低不就,要求低一点,8位MCU就够,高级点不如用32位MCU。一般不跑嵌入式OS。16位就不说了32位的,就高级点了,一般能跑嵌入式OS,例如ucos2,ucos3,uclinux等等,能做更多复杂的功能。用OS和不用OS的话,编程的思路差异比较大。功能一般有面向控制的,也有简单消费类电子的。
0
回复
2014-03-15 23:56
@山东大汉
现在要用8位,简单快速,,16位吗价格没有优势,,32位吗解决复杂问题一般建议上操作系统,最简单也得是RTX吧,,功能上当然32位强大多了,执行效率时8位是us级,32位是ns级,夸张点讲相差1000倍。。
要根据实际功能要求来选择用多少位单片机。
0
回复
CYX740111
LV.5
22
2014-03-16 07:21
@Constance
还有处理能力!

速度,精度,功能。

0
回复
xinzha
LV.1
23
2014-03-17 12:56

位数不同,一个指令内处理的数据量也不同,比如你在八位机上想实现32位乘法,就得设计一个算法才能实现,而在高于32位的机器上,只需要赋值,计算就可以了。

位数的不同也意味着直接寻址空间的不同,比如说32位的cpu(不考虑pae),其可直接寻址的能力是4G,而真正的8位机那就只有256字节了(幸亏很多8位机的地址总线是16位的。。。),寻址能力的扩大允许在同一个地址空间之内有更多的程序并存,可以直接操作更多的内存,对处理能力的提升是巨大的。而如果你能够寻址的能力有限,可要处理很多的事情,就得考虑某些库的动态加载和链接,对于嵌入式来说还是有点痛苦。

对于编译器来说,不用位数的cpu意味着数据长度的不同,比如说在16位机多数默认int为16位数,而在32位机上默认为32位数,这也就是很多编程规范里面要求尽量使用uint32或者uint16这样的数据定义,而避免使用int的原因。

大小端的差别,位数高于8的机器,你就要考虑大小端差异了,这是件头疼的事。

还有一个要说的是寻址模式,32位的RISC类型cpu多数要求在寻址时做到边界对齐,而8位机才完全没必要考虑这个。

其他还有很多差别,一时无法完全描述出来,还得在实践中慢慢体会。

0
回复
hao2985
LV.9
24
2014-03-20 21:29
看处理速度,频率
0
回复
luoyan1980
LV.8
25
2014-03-20 21:32
@山东大汉
主要看处理速度,频率
现在的CPU要从32位再上一层到64位,就是因为数据分析处理速度会加倍提升。
0
回复
luoyan1980
LV.8
26
2014-03-20 21:33
@山东大汉
都是基础知识
8位16位32位的区别就在于地址位和数据位位宽不同。其实都一样。比如8位的51单片,
0
回复
luoyan1980
LV.8
27
2014-03-20 21:34
@Constance
还有处理能力!
32位的目前大多数是arm架构的,与前面的8位、16位的指令集不同。除掉前面的boot会用一小段汇编(主要是来clear寄存器,初使化堆栈--有些书上也叫栈)其它大多用C.只要用对应架构和平台的编译器就可以了。
0
回复
luoyan1980
LV.8
28
2014-03-20 22:15
@chenyingxin7610
论坛中单片机高手很多,慢慢学吧,一同进步。

速度,精度,功能。

0
回复
luoyan1980
LV.8
29
2014-03-20 22:16
@山东大汉
8位单片机,典型的是51系列的,再高级点用AVR、pic的,功能方面,似乎都不会很复杂,一般可能是控制类的多一下。一般不跑嵌入式OS。16位的单片机,我接触的主要是MSP430,感觉16位的单片机比较尴尬,高不成低不就,要求低一点,8位MCU就够,高级点不如用32位MCU。一般不跑嵌入式OS。16位就不说了32位的,就高级点了,一般能跑嵌入式OS,例如ucos2,ucos3,uclinux等等,能做更多复杂的功能。用OS和不用OS的话,编程的思路差异比较大。功能一般有面向控制的,也有简单消费类电子的。

速度,精度.

 

 

 

 

0
回复
luoyan1980
LV.8
30
2014-03-20 22:16
@hao2985
低位数单片机在处理超过自身位数的数据时,它的计算速度会慢很多很多,不是两倍那么简单。

速度,精度,功能。

0
回复
hao2985
LV.9
31
2014-03-24 19:33
CPU要从32位再上一层到64位,就是因为数据分析处理速度会加倍提升
0
回复