找回密码
 注册
关于网站域名变更的通知
查看: 45|回复: 0
打印 上一主题 下一主题

为什么51单片机的地址总线是16位的,但是它却是8位机?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-2-14 16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
位数指CPU处理的数据的宽度,参与运算的寄存器的数据长度。3 i2 `9 ?( U+ d. ^. B
3 Q% \/ G' v3 r# B  r, F) P7 G$ \2 P3 f$ m3 x' Y  v
如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数。% l: [& ^# o6 w7 z' Q
( |. k6 |( n% y, _' H' b$ a6 c1 m5 s6 P/ G
如果总线宽度与CPU一次处理的数据宽度不同:2 @" G; \7 K1 n4 U
9 C* K( v  ^8 J

$ j7 E# J/ |  ]3 a2 I(1)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数,但称为准多少位。比如著名的Intel 8088,CPU是16位但总线是8位,所以它是准16位。7 B* ~6 B$ a0 Y4 @1 i3 k

6 K, q) x* r" t(2)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数。5 u- y6 D3 D# z" \) T# E3 _1 p2 T5 T, L5 m- O1 Q+ t) \" g' z: M. Z6 J
9 i3 D+ v: Q. q* T+ g! w8 e9 ?; v6 N
$ ], d  S; Q2 n9 ]- o少位宽不是指总线宽度,也不是存储器的宽度,像51单片机的地址总线是16位的,但是它是8位机。ARM的存储器也有八位的,但是它是32位机。而是指CPU处理的数据的宽度,也就是CPU一次数据的吞吐量。比如同一条指令:MOV R0 R2

  L' v; e% V, K8 ?) J7 e* u% k" R' X
, d/ [9 v! G8 z; h0 w
在51单片机里面,R0和R2都是8位的,所以51的CPU一次只能处理8位数据。6 B5 Y8 \! K- {
  Q1 v7 P7 T3 t: _/ L- k( ?* C, @5 |, J
+ o) J, U! U! G: i- ^在ARM里面,R0和R2是32位的,所以ARM的CPU一次能处理32位数据。这就是区别。& S6 N( s: T$ d! S4 H" \/ p; m3 {) |- X' I* O
; J1 E' n  ]! k" T/ C6 Q/ l
有啥复杂的, 一句话:参与运算的寄存器的数据长度。- F7 U7 v0 X5 s6 v1 Y
! S# t+ T+ ?+ c* l
8位单片机的数据总线宽度为8位,通常直接只能处理8位数据;
* T$ n9 [5 o2 i) R' }0 H: ]5 X2 y4 h
  K# q  ^' [8 A4 |* j4 ?: a16位单片机的数据总线宽度为16位,通常可直接处理8位或16位数据。. L: L! c" ?) i- p$ X6 R1 A" [  W4 n/ u6 q' F3 P4 R% r
. B6 \6 o6 j5 h/ l) [/ z# c( Y2 x# w& C4 v0 F' |
最本质的区别是内部CPU的字长不同,即CPU处理数据的最大位数不同,有8位和16位CPU的区别,你可以认为是ALU、寄存器的字长等。有的32位DSP芯片其外部接口数据总线是16位的,根据这个来判断是不行的) E# m* [5 B" x: H# g  y3 p$ \0 m3 S4 y
" y7 J( W9 _4 g0 A! P0 v2 y/ @! S1 I! ^) S0 C. m
速度上有区别,取决于CPU、寄存器的字长。8位单片机不能直接处理16位数据,要按照8位数据来处理,要分几个过程来完成。而16位单片机,可直接处理16们数据,因为其ALU,寄存器等都是16位的,可一次完成8位单片机要多步完成的动作,特别是对于数据处理,16位单片机有它的优势。而且16位单片机大多数据接口都为16位。! |4 M; T* I) u8 h5 q( U
0 m! n3 q* `3 h. N/ x8 I# d! x
说简单了就是16位的比8位快,8位的单片机发展时间长,且价格偏低。最重要的是在许多的应用场合能够胜任开发的任务。16位的单片机在功能上要比8位的强大很多,只在需要的场合使用.- b; [  O: [+ e) B" Q  a* C" N. N6 Q, e% j( @+ H; `, t
3 x8 _: U/ L- d9 |/ [1 [
你知道2进制吧,你是否知道单片机在进行计算的时候统统是2进制数的运算。所以8位单片机和16位单片机的最根本区别就是,8位单片机可以同时进行2个8位的2进制数相加,而16位单片机则大一倍,可以同时让2个16位的2进制数相加。. }' p% S  k$ O9 w) D- I6 Z5 r& F, x" ]
, C0 g; V+ E) |, t* N
CPU能同时处理二进制数的位数是多少位,就称其是多少位的计算机。也有数据总线的位数是CPU位数的一半的情况,就称其是准多少位的计算机。比如CPU是16位,数据总线也是16位,则是16位计算机;CPU是16位,数据总线也是8位,则是准16位计算机。4 _, V/ `* ?7 B2 i3 ~& f9 ]. U- h* B2 {; k+ A0 O
. G5 w7 o) c* V3 f# j. h* o1 a8 N. e5 E) U4 `/ [. b2 P6 x% g: K
原来是16位单片机想改用8位的替代是可以的,但电路及程序都要做相应改变,并且改为8位机后,在功能和速度上要能够满足你工作的需要才行。
, C" @. Y/ r9 e% L) K/ y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-19 18:08 , Processed in 0.109375 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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