2018-08-02 19:48:58 u014137974 阅读数 199

8位单片机 16位 32位区别?

指CPU处理的数据的宽度,参与运算的寄存器的数据长度.

如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数。
如果总线宽度与CPU一次处理的数据宽度不同:
1)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数,但称为准多少位。比如著名的Intel 8088,CPU是16位但总线是8位,所以它是准16位。
2)总线宽度大于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数。
 
多少位宽不是指总线宽度,也不是存储器的宽度,像51单片机的地址总线是16位的,但是它是8位机。像ARM的存储器也有八位的,但是它是32位机。而是指CPU处理的数据的宽度,也就是CPU一次数据的吞吐量。比如同一条指令:MOV R0 R2
 
在51单片机里面,R0和R2都是8位的,所以51的CPU一次只能处理8位数据。
在ARM里面,R0和R2是32位的,所以ARM的CPU一次能处理32位数据。这就是区别。
 
有啥复杂的, 一句话:参与运算的寄存器的数据长度。
 
8位单片机的数据总线宽度为8位,通常直接只能处理8位数据;
16位单片机的数据总线宽度为16位,通常可直接处理8位或16位数据。
最本质的区别是内部CPU的字长不同,即CPU处理数据的最大位数不同,有8位和16位CPU的区别,你可以认为是ALU、寄存器的字长等。有的32位DSP芯片其外部接口数据总线是16位的,根据这个来判断是不行的
速度上有区别,取决于CPU、寄存器的字长。8位单片机不能直接处理16位数据,要按照8位数据来处理,要分几个过程来完成。而16位单片机,可直接处理16们数据,因为其ALU,寄存器等都是16位的,可一次完成8位单片机要多步完成的动作,特别是对于数据处理,16位单片机有它的优势。而且16位单片机大多数据接口都为16位。
说简单了就是16位的比8位快,8位的单片机发展时间长,且价格偏低。最重要的是在许多的应用场合能够胜任开发的任务。16位的单片机在功能上要比8位的强大很多,只在需要的场合使用。
 
你知道2进制吧,你是否知道单片机在进行计算的时候统统是2进制数的运算。所以8位单片机和16位单片机的最根本区别就是,8位单片机可以同时进行2个8位的2进制数相加,而16位单片机则大一倍,可以同时让2个16位的2进制数相加。
CPU能同时处理二进制数的位数是多少位,就称其是多少位的计算机。也有数据总线的位数是CPU位数的一半的情况,就称其是准多少位的计算机。比如CPU是16位,数据总线也是16位,则是16位计算机;CPU是16位,数据总线也是8位,则是准16位计算机。
原来是16位单片机想改用8位的替代是可以的,但电路及程序都要做相应改变,并且改为8位机后,在功能和速度上要能够满足你工作的需要才行。

2014-03-29 17:16:38 u012781002 阅读数 3088

        玩了接近三年的单片机,8位、16位、32位的都玩过,突然间一个问题就让我发现我就是一个渣!!!

8位、16位、32位都代表什么意思呢?我就根据搜集的知识,简单的对自己科普一下:

      1)、 从CPU的发展史来看,从以前的8位到现在的64位,8位也就是CPU在一个时钟周期内可并行处理8位二进字符0或是1,那么16就以此类推是64位就64位二进制。

      2)、8位、16位、32位单片机的区别还有就是寄存器位数的区别,8位的单片机其寄存器也是8位,以此类推32位的MCU也就是有32位的寄存器(当然他也可以有16或者是8位的寄存器)。

        还有在学习ARM里遇到的一个问题:寻址空间的问题。

        寻址空间一般指的是CPU对于内存寻址的能力。Intel公司早期的CPU产品的地址总线和地址寄存器的宽度为20位,即CPU的寻址能力为2^20=1024*1024字节=1024K字节

=1M字节;286的地址总线和地址寄存器的宽度为24位,CPU的寻址能力为2^24=1024*4*1024*4B=4*1024*4KB=16M;386及386以上的地址总线和地址寄存器的宽度为32位,

CPU的寻址能力为2^32=4096M字节=4G字节。 也就是说,如果机器的CPU过早,即使有很大的内存也不能得到利用,而对于现在的PⅡ级的CPU,其寻址能力已远远超过目前的

内存容量。

        在这里有一个很重要的概念:CPU的寻址能力以字节为单位 。以32位的单片机为例(最近在上手K60),对地址0x4000 0001进行赋值也就是对一个字节进行操作,32位的寄

存器就需要占用4个地址(8*4=32),那它占有的地址就为0x4000 0000----0x4000 0003。32位就代表了2^32的寻址空间也就是4G。

        一些简单的问题写出来,有什么不对之处,烦请各位过路的朋友指正!

2012-04-24 22:27:10 zyboy2000 阅读数 14273

指CPU处理的数据的宽度,参与运算的寄存器的数据长度?

 

如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数。
如果总线宽度与CPU一次处理的数据宽度不同:
1)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数,但称为准多少位。比如著名的Intel 8088,CPU是16位但总线是8位,所以它是准16位。
2)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数。

 

少位宽不是指总线宽度,也不是存储器的宽度,像51单片机的地址总线是16位的,但是它是8位机。像ARM的存储器也有八位的,但是它是32位机。而是指CPU处理的数据的宽度,也就是CPU一次数据的吞吐量。比如同一条指令:MOV R0 R2
在51单片机里面,R0和R2都是8位的,所以51的CPU一次只能处理8位数据。
在ARM里面,R0和R2是32位的,所以ARM的CPU一次能处理32位数据。这就是区别。

有啥复杂的, 一句话: 参与运算的寄存器的数据长度
2017-10-25 00:19:00 weixin_30616969 阅读数 58

8位、16位、32位是指单片机的“字长”,也就是一次运算中参与运算的数据长度,这个位是指二进制位。以8位为例,8位二进制的表达范围是0000,0000~1111,1111即十进制的0~255,即每次参与运算的数据最大不能超过255。而16位机的字长是16位,其数据表达范围是0~65535,即每次参与运算的数据最大不能超过65535;32位单片机的字长是32位,其数据表达范围是0~4294967295,即每次参与运算的数据最大不能超过4294967295。

8位、16位、32位与单片机的性能密切相关,通常32位机的性能要高于16位机,而16位机的性能又要高于8位机。为什么会这样呢?这要从2个方面来分析。第一,位数不同,运算效率不同。对于8位机而言,由于在一次运算中的每一个数都不能超过8位,因此即便如100+200=300这样的运算,它也不能一次完成,因为300已超过了8位所能表达的最大范围(255),因此,要对这样的一个式子进行运算,就要编写一段程序,将运算分步完成,最后合成起来得到一个正确的结果。而如果采用16位单片机来运算的话,那么一次运算就够了,显然分步完成所需要的时间要远远大于单步完成所需要的时间。同样道理,当某个运算的结果或者中间值大于65535时,16位机也不能一次运算,要分步实现它,而32位机则可以一次运算完成。第二,商业因素。通常运算能力越高,表示这个单片机性能越强,当然,价格高一些人们也可以接受,有了价格空间,生产商通常都会在这些芯片中提供更多的其他的功能,使得芯片的整体性能得到更大的提升。

典型的单片机中,80C51系列,PIC系列,AVR系列都是8位单片机;80C196、MSP430系列是16位机;而目前非常热门的ARM系列则是32位机。

 

另外在CSDN的讨论中的一些比较好的回答:
=================================
8位单片机,典型的是51系列的,再高级点用AVR、pic的,功能方面,似乎都不会很复杂,一般可能是控制类的多一下。一般不跑嵌入式OS。
16位的单片机,我接触的主要是MSP430,感觉16位的单片机比较尴尬,高不成低不就,要求低一点,8位MCU就够,高级点不如用32位MCU。一般不跑嵌入式OS。16位就不说了
32位的,就高级点了,一般能跑嵌入式OS,例如ucos2,ucos3,uclinux等等,能做更多复杂的功能。用OS和不用OS的话,编程的思路差异比较大。功能一般有面向控制的,也有简单消费类电子的。
================================
8位16位32位的区别就在于地址位和数据位位宽不同。其实都一样。比如8位的51单片,网上同样有人在上面移植ucos。16位的如430就更不用说了。32位的目前大多数是arm架构的,与前面的8位、16位的指令集不同。除掉前面的boot会用一小段汇编(主要是来clear寄存器,初使化堆栈--有些书上也叫栈)其它大多用C.只要用对应架构和平台的编译器就可以了。故而作为一个c的RD,不需要考虑太多。
=================================
都玩过,单纯C写代码没啥区别,一般编译器把初始化都做了,需要改的不多。汇编或者调试的时候会有区别,指令集不一样,寄存器也会有点差异(尤其是跟汇编的时候),参数传递时会有差异(因编译器而异),8位51单片机是(R0-R7),32位ARM是R0-R15(PC),然后就是int类型,8/16位通常是16bit,32位下是32bit(最蛋疼的是64位下int还是32bit)
=================================
学嵌入式的网友,接触到的 32 位机往往是 ARM 内核的,运行 Linux。

但实际上,32 位的微处理器远不止这一类。有些就是增强版本的微处理器,例如 M*Core 内核的微处理器。

32 位机的功能模块寄存器可以是 32-bit 的(当然也可以是 8-/16-bit),而且存取都是单时钟周期。CPU 的算逻单元也是 32 位的,当然,运算会更快。

32 位机的一个重要注意事项是 32-bit 字的自然边界问题,也就是字对齐问题。例如,要从 RAM 中将一个 32-bit 的字写入一个 32-bit 寄存器,那么,这个字在 RAM 中的地址必须是 32-bit 对齐的,也就是说地址最低十六进制位是 0, 4, 8, c。如果不是这样(比如数据类型是 char,又恰好其起始地址未 4 字节对齐),需要先将此字复制到一个 32-bit 对齐的缓存,再赋值。

还有一个比较麻烦的事,就是用户定义的结构中各个成员的对齐。如果在一个 32-bit 类型的成员前面,有 char 及 short 类型成员,且没有凑齐到 32-bit 自然边界,那么编译器将会自动补 NULL 来填充。有不少从 8 位向 32 位机移植代码的朋友,都在取成员长度的时候发生疑惑。问题往往是出在 32-bit 对齐上。

在有就是不同编译器的规约差异。

不过,用过两种微处理器之后,就会渐渐熟悉起来,相互移植也不会有很大困难。

=============================

数据总线的宽度为8、16、32。同时寄存器也达到相同位数。
============================
多少位宽不是指总线宽度,也不是存储器的宽度,像51单片机的地址总线是16位的,但是它是8位机。像ARM的存储器也有八位的,但是它是32位机。而是指CPU处理的数据的宽度,也就是CPU一次数据的吞吐量。比如同一条指令:MOV R0 R2
在51单片机里面,R0和R2都是8位的,所以51的CPU一次只能处理8位数据。
在ARM里面,R0和R2是32位的,所以ARM的CPU一次能处理32位数据。这就是区别

 

转载于:https://www.cnblogs.com/qsyll0916/p/7726595.html

2018-03-26 10:50:10 jiwenjie1314 阅读数 7425

1、 8位、16位、32位的位是什么?
         CPU处理的数据的宽度,参与运算的寄存器的数据长度。

2、 51和ARM 32位

        51单片机里面,R0R2都是8位的,所以51CPU一次只能处理8位数据。
        ARM里面,R0R232位的,所以ARMCPU一次能处理32位数据。
3、进一步解释

         单片机在进行计算的时候统统是2进制数的运算。所以8位单片机和16位单片机的最根本区别就是,8位单片机可以同时进行28位的2进制数相加,而16位单片机则大一倍,可以同时让216位的2进制数相加。

        CPU能同时处理二进制数的位数是多少位,就称其是多少位的计算机。也有数据总线的位数是CPU位数的一半的情况,就称其是准多少位的计算机。比如CPU16位,数据总线也是16位,则是16位计算机;CPU16位,数据总线也是8位,则是准16位计算机。

4、8位机可以进行32位数据类型定义吗?

          8位单片机是CPU一次处理数据的宽度,8位芯片可以定义8位、16位、32位的变量,但是不同的数据类型的运算速度和存储空间差别较大。
            (1)8位的char类型,C语言源码
                  
            汇编:

                

           (2)short类型
                 
                汇编:
                    
            (3)float类型
                    
                    汇编:
                   
               总结:
                    可以看出在C语言的层面并没有区别,但是实际工作量都在汇编层完成,并进行了封装。



单片机位数解释

阅读数 934

单片机的学习

阅读数 336

没有更多推荐了,返回首页