8位单片机16位32位区别

8位单片机16位32位区别

ID:8806620

大小:22.49 KB

页数:5页

时间:2018-04-08

8位单片机16位32位区别_第1页
8位单片机16位32位区别_第2页
8位单片机16位32位区别_第3页
8位单片机16位32位区别_第4页
8位单片机16位32位区别_第5页
资源描述:

《8位单片机16位32位区别》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、8位单片机16位32位区别指CPU处理的数据的宽度,参与运算的寄存器的数据长度?如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数。如果总线宽度与CPU一次处理的数据宽度不同:1)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数,但称为准多少位。比如著名的Intel8088,CPU是16位但总线是8位,所以它是准16位。2)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数。少位宽不是指总线宽度,也不是存储器的宽度,像51单片机的地址总线是16位的,但是它是8位机。像A

2、RM的存储器也有八位的,但是它是32位机。而是指CPU处理的数据的宽度,也就是CPU一次数据的吞吐量。比如同一条指令:MOVR0R2在51单片机里面,R0和R2都是8位的,所以51的CPU一次只能处理8位数据。在ARM里面,R0和R2是32位的,所以ARM的CPU一次能处理32位数据。这就是区别。有啥复杂的,一句话:参与运算的寄存器的数据长度。8位单片机的数据总线宽度为8位,通常直接只能处理8位数据;16位单片机的数据总线宽度为16位,通常可直接处理8位或16位数据。最本质的区别是内部CPU的字长不同,即CPU处理数据的最大位数不同,有8位和

3、16位CPU的区别,你可以认为是ALU、寄存器的字长等。有的32位DSP芯片其外部接口数据总线是16位的,根据这个来判断是不行的速度上有区别,取决于CPU、寄存器的字长。8位单片机不能直接处理16位数据,要按照8位数据来处理,要分几个过程来完成。而16位单片机,可直接处理16们数据,因为其ALU,寄存器等都是16位的,可一次完成8位单片机要多步完成的动作,特别是对于数据处理,16位单片机有它的优势。而且16位单片机大多数据接口都为16位。说简单了就是16位的比8位快,8位的单片机发展时间长,且价格偏低。最重要的是在许多的应用场合能够胜任开发的

4、任务。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位

5、单片机想改用8位的替代是可以的,但电路及程序都要做相应改变,并且改为8位机后,在功能和速度上要能够满足你工作的需要才行。32位程序移植到64位的要点特别针对c/c++阐述,32位和64位源码级的不同,归根结底,就是机器字(设计指针的宽度)的位宽变化了,因此:1、一些基本类型位宽变化了,还有一些类型位宽不确定,比如说int,相信99%的32位编译器(未作统计)都将int视为32位有符号型,但在64位编译器上,这点是不确定的,ms的编译器,int型都还是32位有符号整型,但印象中存在某个平台的gcc编译器将int位宽增加到64位。诸如此类,需要特

6、别注意2、强制类型转换代码需特别注意,特别是c开发人员,对于指针和整型的理解已炉火纯青,借由整型空间存储指针的方法是很常用的(也是很方便的),由于强制转换代码的存在,编译器并不会提示诸如64位到32位转换中可能的信息损失,这也就导致了运行时可能的问题爆发。这一点需要特别注意,严查代码各处的强制转换。3、模块间调用,严格说这一点还是由位宽变化导致的,做法还是需要筛查类型是否匹配的问题这个主要是要注意8位机代码移植到32位机的问题,如果你51的C写得很规范移植会好点,如果写的不规范麻烦会大点,比如unsignedint这个类型在8位机和32位编译

7、出来的效果就是不一样的。还有就是ARM芯片会有字节对齐的问题,如果51的C里面用到了结构体,那么字节对齐的问题会出现在sizeof(结构体名)。这个函数因为字节对齐问题,可能会算出的结构体字节大小和你想的不一样。其他好像也没有什么需要注意的了32位程序移植到64位需要考虑的问题概述从32位到64位,根本性的区别在于两种数据类型发生了变化:long和pointer。在32位环境下,顾名思义,两者长度都是32位,也就是4个字节;而在64位环境下,都是8个字节。所以,当你把pointer或者long型数据赋给int型时,会发生数据截断(datatr

8、uncation)。 32位与64位数据模型之间的区别32位应用的数据模型我们称作ILP32(之所以这样命名,是因为int,long,pointer都是32位),而

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。