您现在所在的是:

单片机论坛

回帖:2个,阅读:2006 [上一页] [1] [下一页]
912
sfmcu
文章数:44
年度积分:50
历史总积分:912
注册时间:2006/8/22
发站内信
08年优秀博客奖
发表于:2009/2/11 12:43:11
#0楼
 八位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。即便到了本世纪,在单片机应用中,仍占有相当的份额。由于八位单片机种类繁多,本文仅将常用的几种在性能上作一个简单的比较,供读者在使用时作参考。
1.    51系列
  应用最广泛的八位单片机首推intel的51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。有人推测,51芯片可能最终形成事实上的标准mcu芯片。
  51系列优点之一是它从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内ram区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地址20h~2fh,它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为00h~7fh),使用极为灵活。这一功能无疑给使用者提供了极大的方便,因为一个较复杂的程序在运行过程中会遇到很多分支,因而需建立很多标志位,在运行过程中,需要对有关的标志位进行置位、清零或检测,以确定程序的运行方向。而实施这一处理(包括前面所有的位功能),只需用一条位操作指令即可。
  例1:如对21h的第0位(相应位地址为08h)置位,只需用一条位指令,
   setb08h
  对周围的其他位不会产生影响。
  有的单片机并不能直接对ram单元中的位进行操作,如avr系列单片机中,若想对ram中的某位置位时,必须通过状态寄存器sreg的t位进行中转。
  例2:如对ram中的r0寄存器的第4位置位,则
  bset6 ;状态寄存器t置位
  bld r0, 4 ;将t位复制到r0的第4位
  显然,后者比前者要复杂。
  51系列的另一个优点是乘法和除法指令,这给编程也带来了便利。八位除以八位的除法指令,商为八位,精度嫌不够,用得不多。而八位乘八位的乘法指令,其积为十六位,精度还是能满足要求的,用的较多。作乘法时,只需一条指令就行了,即 mulab(两个乘数分别在累加器a和寄存器b中。积的低位字节在累加器a中,高位字节在寄存器b中)。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。
  在51系列中,还有一条二进制-十进制调整指令 da,能将二进制变为bcd码,这对于十进制的计量十分方便。而在其他的单片机中,则也需调用专用的子程序才行。
  intel公司51系列的典型产品是8051,片内有4k字节的一次性程序存储器(otp)。atmel公司就将其改为电可改写的闪速存储器(flash),容许改写1000次以上,这给编程和调试带来极大的便利,其产品at89c51、at89c52 ……等成为了当今最流行的八位单片机。
   51系列的i/o脚的设置和使用非常简单,当该脚作输入脚使用时,只须将该脚设置为高电平(复位时,各i/o口均置高电平)。当该脚作输出脚使用时,则为高电平或低电平均可。低电平时,吸入电流可达20ma,具有一定的驱动能力;而为高电平时,输出电流仅数十μa甚至更小(电流实际上是由脚的上拉电流形成的),基本上没有驱动能力。其原因是高电平时該脚也同时作输入脚使用,而输入脚必须具有高的输入阻抗,因而上拉的电流必须很小才行。作输出脚使用,欲进行高电平驱动时,得利用外电路来实现(见附图),i/o脚不通,电流经r驱动led发光;低电平时,i/o脚导通,电流由该脚入地,led灭(i/o脚导通时对地的电压降小于1v,led的域值1.5~1.8v)。
  51系列i/o脚使用简单,但高电平时无输出能力,可谓有利有弊。故其他系列的单片机(如pic系列、avr系列等)对i/o口进行了改进,增加了方向寄存器以确定输入或输出,但使用也变得复杂。
  一些简装的51产品也相应出现,如atmel公司的at89c1051、at89c2051、at89c4051等(闪速存储器分别为1k、2k、4k等,但不能外接数据存储器),指令系统与at89c51完全兼容,但引脚均为20脚,不光体积小,而且价格低廉,这使得其他的公司竞相仿照。
  不过,原51系列也有许多值得改进之处,如运行速度过慢等。当晶振频率为12mhz时,机器周期达1μs,显然适应不了现代高速运行的需要。华邦公司(winbond)生产的产品型号为w77系列和w78系列,w78系列与at89c系列完全兼容。w77系列为增强型,对原有的8051的时序作了改进,每个机器周期从12个时钟周期改为4个周期,使速度提高了三倍,同时,晶振频率最高可达40mhz。w77系列还增加了看门狗watchdog、两组uart、两组dptr数据指针、isp等多种功能。
  特别是双数据指针,能给编程带来很大的便利。在51系列中,数据指针dptr是片内与片外的数据存储器打交道的主要途径(由片外数据存储器读入片内累加器a或由片内累加器a 写入片外数据存储器),也是程序存储器与累加器a之间的数据传送的必由之路。由于频繁的数据交换,特别是数据块的搬运和比较,数据指针非常吃紧,它需要不断地实施现场保护与还原,不光编程变得复杂,而且运行速度也减慢。而当采用两个数据指针时,可以各负其责,互不相扰,轻松地完成上述过程。两个数据指针的选取取决于特殊功能寄存器auxr1的第d0位dps。当dps为0时,选中数据指针dptr0(复位时dps也为0);dps为1时,选中数据指针dptr1。dps位不能位寻址,故不能进行布尔操作,但由于auxr1的d1位被强制为逻辑“0”,不可能发生由d0位向d1位进位之可能,因而可以通过对auxr1进行增1来使d0位由0变为1或由1变为0,从而达到双数据指针的快速切换的目的,如:
  例3:
  movauxr1,#0 ; dps为0,dptr0有效
   ……
  inc auxr1 ; dps为1,dptr1有效
   ……
   inc auxr1 ; dps为0,dptr0有效
   ……
  isp功能能实现在系统可编程,可以省去通用的编程器,单片机在用户板上即可下载和烧录用户程序,而无需将单片机从生产好的产品上取下。未定型的程序还可以边生产边完善,加快了产品的开发速度,减少了新产品因软件缺陷带来的风险。由于可以将程序下载并观看运行结果,故也可以不用仿真器。
   单片机的提速运行、双数据指针及isp功能并非是w77系列所特有的,一些新的型号的51系列产品大都有该功能,如philips的51lpc系列、at89系列中的某些型号、stc89c系列等等。有的单片机还附有a/d、d/a转换、片内eeprom数据存储器、pwm输出、i2c总线、上电复位检测、欠压复位检测等等,这些新系列的单片机,它们都兼容8051的指令系统。增强功能的实现,大都是由片内新增的特殊功能寄存器来进行设置,这些寄存器被安排在片内特殊功能寄存器区间(80~ffh)的预留地址上。
  比较有代表性的产品还有stc89c51rc、c8051f331/330等等。可以这么说,新的51产品几乎可以涵盖所有新的功能。由于新型号的芯片种类太多,此处不可能一一列举,读者可根据使用的需求查阅相关的资料.
 2.pic系列
  pic单片机系列是美国微芯公司(microship)的产品,是当前市场份额增长最快的单片机之一。cpu采用risc结构,分别有33、35、58条指令(视单片机的级别而定),属精简指令集。而51系列有111条指令,avr单片机有118条指令,都比前者复杂。采用harvard双总线结构,运行速度快(指令周期约160~200ns),它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。此外,它还具有低工作电压、低功耗、驱动能力强等特点。pic系列单片机共分三个级别,即基本级、中级、高级。其中又以中级的pic16f873(a)、pic16f877 (a) 用的最多,本文以这两种单片机为例进行说明。这两种芯片除了引出脚不同外(pic16f873(a)为28脚的pdip或soic封装;pic16f877(a)为40脚的pdip或44脚的plcc/qfp封装),其他的差别并不很大。
  pic系列单片机的i/o口是双向的,其输出电路为cmos互补推挽输出电路。i/o脚增加了用于设置输入或输出状态的方向寄存器(trisn , 其中n对应各口,如a、b、c、d、e等),从而解决了51系列i/o脚为高电平时同为输入和输出的状态。当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸入电流达25ma,高电平输出电流可达20ma。相对于51系列而言,这是一个很大的优点,它可以直接驱动数码管显示且外电路简单。它的a/d为10位,能满足精度要求。具有在线调试及编程(isp)功能。
  该系列单片机的专用寄存器(sfr)并不像51系列那样都集中在一个固定的地址区间内(80~ffh),而是分散在四个地址区间内,即存储体0(bank0:00~7fh)、存储体1(bank1 :80~ffh)、存储体2(bank2 :100~17fh)、存储体3(bank3 :180~1ffh)。只有5个专用寄存器pcl、status、fsr、pclath、 intcon在4个存储体内同时出现。在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器status的第6位(rp1)和第5位(rp0)置位或清零。如:
  例4:
  clrfstatus ;清零rp1, rp0。选择存储体0
   ……
  bsf status,rp0;置位rp0。选择存储体1
   ……
  bcf status,rp0;清零rp0。选择存储体0
   ……
  这多少给编程带来了一些麻烦。对于上述的单片机,它的位指令操作通常限制在存储体0区间(00~7fh)。
  数据的传送和逻辑运算基本上都得通过工作寄存器w(相当于51系列的累加器a)来进行,而51系列的还可以通过寄存器相互之间直接传送(如:mov 30h,20h;将寄存器20h的内容直接传送至寄存器30h中),因而pic单片机的瓶颈现象比51系列还要严重,这在编程中很有感受。
3.avr系列
  avr单片机是atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。avr单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用4~8mhz,故最短指令执行时间为250~125ns。该系列的型号较多,但可用下面三种为代表:at90s2313(简装型)、at90s8515、at90s8535(带a/d转换)。
  通用寄存器一共32个(r0~r31),前16个寄存器(r0~r15)都不能直接与立即数打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7fh)均可以直接与立即数打交道,显然要优于前者。
  avr系列没有类似累加器a的结构,它主要是通过r16~r31寄存器来实现a的功能。在avr中,没有像51系列的数据指针dptr,而是由x(由r26、r27组成)、y(由r28、r29组成)、z(由r30、r31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组dptr),而且还能作后增量或先减量等的运行,如:
  例5:
  ldrd, x ;将x所指的地址的内容装入寄存器rd中。
  ldrd,y+;将y所指的地址的内容装入寄存器rd
   中,然后y的地址增1。
  ldrd,-x ;将x的地址减1所指的地址的内容装入
   寄存器rd中。
  在51系列中,所有的逻辑运算都必须在a中进行;而avr却可以在任两个寄存器之间进行,省去了在a中的来回折腾,这些都比51系列强。
  avr的专用寄存器集中在00~3f地址区间,无需像pic那样得先进行选存储体的过程,使用起来比pic方便。avr的片内ram的地址区间为0060~$00df(at90s2313) 和 0060~025f(at90s8515、at90s8535),它们占用的是数据空间的地址,这些片内ram仅仅是用来存储数据的,通常不具备通用寄存器的功能。当程序复杂时,通用寄存器r0~r31就显得不够用;而51系列的通用寄存器多达128个(为avr的4倍),编程时就不会有这种感觉。
  avr的i/o脚类似pic,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10ma左右,低电平吸入电流20ma。虽不如pic,但比51系列强。
  以上的三种avr型号其管脚与对应的51系列兼容,如at90s2313与51系列的at89c2051的管脚兼容(pdip-20脚),at90s8515、at90s8535与51系列的at89c51兼容
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=76243&Name=sfmcu
1392
lgx1213
文章数:249
年度积分:50
历史总积分:1392
注册时间:2003/9/4
发站内信
发表于:2009/2/11 22:40:34
#1楼
多谢分享
全球第一本<单片机技术应用>电子杂志,欢迎免费下载!
WWW.MCU-SYS.COM
1815
qijg
文章数:693
年度积分:50
历史总积分:1815
注册时间:2009/1/29
发站内信
发表于:2009/2/17 23:18:54
#2楼
不错的资料,学习一下了。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004