几种典型的单片机教材_第1页
几种典型的单片机教材_第2页
几种典型的单片机教材_第3页
几种典型的单片机教材_第4页
几种典型的单片机教材_第5页
已阅读5页,还剩285页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8.18098单片机8.2AT89C2051单片机8.3MC68HC11A8单片机8.4Motorola32位单片机

第8章几种典型的单片机8.18098单片机8.1.18098基本结构

Intel8098单片机包括3种型号:不带内部ROM/EPROM的8098、带8KB片内掩膜ROM的8398及带8KB片内EPROM的8798。1.内部结构8098单片机内部结构如图8―1所示。它包含16位CPU、片内8KBROM/EPROM(8398或8798)、高速输入/输出(HSI/HSO)口、4个多用途I/O口、全双工串行口、4路10位A/D转换器、脉宽调制(PWM)器、1个16位监视定时器、2个16位定时器、4个软件定时器、存储器控制器及中断控制器等主要部件。2.引脚说明8098芯片采用48引脚双列直插封装形式,其引脚配置如图8―2所示。引脚功能如下:·VCC主电源电压(+5V)。·VSS数字地(0V),两个VSS均应接地。·VPD片内RAM备用电源(+5V)。8098正常工作时,必须提供该电源,以便在VCC掉电时,由该电源为片内RAM(16个地址单元00F0H~00FFH)提供维持电源。·VREF片内A/D转换器的参考电压(+5V)。·VPP片内EPROM编程电压(+12.5V)。·ANGND模拟地,应与VSS同电位。·XTAL1片内反相振荡器输入端,外接石英晶体。·XTAL2片内反相振荡器输出端,外接石英晶体。·复位输入端,低电平有效。·存储器选择输入端。=0,CPU访问片外存储器;=1,访问片内ROM/EPROM。8098无内部ROM,该引脚应置为0。该引脚内部有下拉作用,无外部驱动时,它始终保持为低电平。·ALE/

地址锁存允许(ALE)或地址有效()输出端。

ALE或由芯片配置寄存器CCR选择。当该引脚有效(ALE=1或=0)时,表明地址/数据总线上传送的是地址信息。·片外存储器读信号,低电平有效输出端。·片外存储器写信号,低电平有效输出端。·READY准备就绪信号,输入,高电平有效。当外存速度较慢时,发低电平信号至该引脚,使CPU处于等待状态。对该引脚,片内有弱上拉作用。·HSI高速输入端,包括HSI0、HSI1、HSI2、HSI3,其中HSI2、HSI3与HSO4、HSO5复用。·HSO高速输出端,包括HSO0、HSO1、HSO2、HSO3、HSO4、HSO5,其中HSO4、HSO5与HSI2、HSI3复用。·P0口4位高输入阻抗端口,可作为数字量输入口(4位P0.4~P0.7),也可作为模拟量输入口(4路ACH4~ACH7)。无论用P0口作数字输入还是模拟输入,都应通过VREF向P0口提供电源。·P2口4位多功能口,可作为数据输入/输出口(P2.0、P2.1、P2.2、P2.5),还可用作其他控制(P2.0可用作串口发送端TXD,P2.1可用作串口接收端RXD,P2.2可用作外中断输入端EXTINT,P2.5可用作脉宽调制PWM输出端)。·P3口8位漏极开路双向口,其内部有很强的上拉作用,可作为8位并行I/O口,也可在系统扩展时作为地址/数据复用总线,传送低字节AD0~AD7。·P4口8位漏极开路双向口,其内部有很强的上拉作用,可作为8位并行I/O口,也可在系统扩展时作为地址总线,传送高字节A8~A15。3.主要特点·CPU在A、B、C3相时钟控制下运行,工作效率高。·232字节的寄存器阵列、24字节的特殊功能寄存器及结构新颖的RALU使CPU的数据处理与I/O操作快捷方便。·高效的指令系统不仅功能强(有16位乘、除指令及符号扩展、数据规格化指令等),而且指令执行速度快,如外接晶振为12MHz时,1条指令的最短执行时间为1μs,最长为95μs。·外部可寻址存储器空间(RAM和ROM)为64KB,采用统一编址方式。·串行接口电路支持同步、异步通信方式,便于实现多机通信。·内含A/D、D/A转换器及多种I/O接口,使得硬件结构更加紧凑,外围电路更加简化,可靠性更高。·监视定时器提供了CPU在发生软硬件故障时的工作能力恢复功能。·具有掉电保护功能。4.应用范围8098单片机特别适用于高速度、高精度的实时控制环境,如工业控制、机器人、仪器仪表、航天导航及计算机外设等。8.1.2中央处理器(CPU)8098内部CPU主要由寄存器算术逻辑单元(RALU)、寄存器阵列和特殊功能寄存器(SFR)组成,见图8―3。1.CPU总线8098单片机内部采用总线结构,1个控制器和2条总线将RALU与寄存器阵列及SFR联系起来。其中,16位的数据总线(DBUS)只能传送RALU与寄存器阵列及SFR间的数据;8位地址总线(ABUS)用来传送内部地址或作为存储器控制器的地址/数据复用总线。图8―3寄存器阵列、RALU、存储器控制器和中断控制器框图2.RALURALU主要由算术逻辑单元(ALU)、程序状态字(PSW)、程序计数器(PC)、循环计数器及3个暂存寄存器组成。所有的寄存器都是16位或17位(加符号扩展位)的。

ALU完成基本的算术逻辑运算。产生的16位地址信号分两次(先低字节后高字节)送ABUS;产生的16位数据一次送D-BUS。PC是一个16位计数器,用来指示将要执行的指令在存储器中的位置(地址)。PC设有一增量器,可使其内容在CPU每取得1字节指令后自动加1。该PC又称主PC。

CPU工作时,由存储控制器控制从A-BUS上取得来自片内或片外ROM中的指令送入RALU,暂存于指令寄存器中。由指令译码器对指令进行译码,产生相应的控制信号,使RALU等部件依据控制要求完成指令规定的功能。3.寄存器阵列寄存器阵列是由232字节的片内RAM单元构成的,这些单元可以按字节、字或双字操作。

4.特殊功能寄存器(SFR)

片内RAM中的00H~17H单元为24个特殊功能寄存器,它们主要用来实现8098单片机的输入输出操作。SFR的功能说明见表8―1。

表8―1SFR功能说明一览表5.时钟信号

CPU的工作是在时钟的控制下有序地进行的。由外部时钟源或外接石英晶体(6~12MHz)与内部振荡电路配合工作先产生1个振荡信号,然后经3分频再生成3种不同相位的时钟信号(A相、B相、C相,见图8―5),该时钟信号最终提供给8098CPU。3相时钟的周期T被称为状态周期,也叫机器周期,简称T状态,它是8098CPU操作的最小计时单位。8098的大部分内部操作与A相、B相或C相之一同步,因而运行速度大大提高。图8―58098时钟信号8.1.3存储器结构1.存储器空间8098的存储器空间采用完全统一的编址方式,寻址范围为64KB,其空间分配见图8―6。其中0000H~00FFH区间为片内RAM,提供232字节寄存器阵列与24个特殊功能寄存器;在同一地址空间还可以覆盖一个外部存储器来存放程序,该区间保留给开发系统使用。个特殊功能寄存器;在同一地址空间还可以覆盖一个外部存储器来存放程序,该区间保留给开发系统使用。

图8―68098存储器空间分配图2.存储控制器(MCR)

存储控制器的主要任务是完成对存储器(片内RAM除外)的访问。为此,它需要产生总线控制信号传输地址/数据信息(利用P3、P4口)。为了加快程序运行速度,在MCR中设置了从PC。在顺序执行指令时,每取得1指令字节,从PC自动加1,提供程序执行的位置;而当出现程序跳转时,才将RALU中主PC的内容通过A-BUS加载至从PC,这样就避免了频繁地从RALU中获取指令的地址(即主PC值)。此外,MCR中还设置了1个4字节队列,以加速程序的执行。3.系统总线与时序当需要扩展外部存储器或外设时,通常用系统总线来实现8098与扩展外存或外设的连接。

总线信号包括地址总线、数据总线和控制总线。控制总线信号可从8098芯片直接获得,地址、数据总线由8098的P3、P4口提供,其中P4口提供高8位地址A8~A15,P3口提供8位地址/数据复用信号AD0~AD7。为了获得有效的地址A0~A7与数据D0~D7,可利用三态锁存器将复用的地址与数据信号分离(见图8―7),这样就可获得扩展外存与外设所需的全部总线信号。图8―78098系统总线形成电路4.芯片配置寄存器CCR

为了使外接电路尽可能简化,8098提供了多种总线控制方式与就绪控制方式,以便使用户可以有选择地定义总线控制信号及选择插入总线周期中等待状态周期数。这些方式的选择取决于CCR的设置。

CCR是1个独立于SFR的重要寄存器,它不能直接寻址。当系统复位时,片内RAM2018H单元中的芯片配置字节被自动送入到CCR中。CCR的数据格式如图8―9所示。由CCR可确定4种总线控制方式:·标准总线控制方式(CCR.3=1、CCR.2=1)·写选通方式(CCR.3=1、CCR.2=0)·地址有效选通方式(CCR.3=0、CCR.2=1)·地址有效写选通方式(CCR.3=0、CCR.2=0)

CCR还可确定4种就绪控制方式:·插入1个等待状态周期(CCR.5=0、CCR.4=0)·插入2个等待状态周期(CCR.5=0、CCR.4=1)·插入3个等待状态周期(CCR.5=1、CCR.4=0)·禁止内部就绪控制(CCR.5=1、CCR.4=1)图8―8总线时序图8―9CCR的数据格式8.1.4系统复位与掉电保护1.系统复位系统复位的目的是使系统能够进入一种初始状态,为系统的正常工作做好准备。8098系统复位是通过引脚保持两个状态周期的低电平、再执行10个状态周期的复位序列来实现的。两种常用的复位电路如图8―10所示。系统复位后,一些专用寄存器或引脚的状态见表8―2。图8―10两种常用的复位电路(a)上电和手动复位电路;(b)多片复位电路表8―2专用寄存器或引脚复位状态2.掉电保护为了在主电源VCC掉电时,有效地保护系统运行中的重要信息,8098对片内RAM高16个地址单元加载了备用电源VPD(+5V,1mA)。

当VCC掉电时,VPD开始为寄存器阵列中的F0H~FFH单元供电,以保持该16单元内容不变。为了防止在VCC下降时对F0H~FFH单元进行写操作,引脚首先被下拉为低电平,使系统复位,这样8098就可安全地进入掉电护状态。当VCC恢复并稳定后(约1ms),

引脚经过保持2个状态周期的低电平而使8098产生了10个状态周期的复位操作,然后8098从2080H单元开始执行程序,进入正常的工作状态(此时VPD仍加载在8098芯片上,但F0H~FFH单元由VCC供电)。8.1.5中断系统1.中断源图8―11示出了8098中断系统中所有的中断源。它被分为9种类型,每一类中又包含多个中断源,实际的中断源数达20多个,用户可以使用其中8种类型的中断源(除软件中断外)。8098中断系统对中断源的控制是按类进行的,每一类中断源被赋予相同的优先级与中断向量地址,不同类中断源有不同的优先级与中断向量地址(见表8―3)。同类中的不同中断源由特殊功能寄存器中的ICO1(I/O控制寄存器1)和HSO-COMMAND(HSO命令寄存器)加以选择。

图8―118098中断源表8―3中断向量地址表2.中断控制8098中断控制系统框图如图8―12所示。中断悬挂寄存器INT-PENDING(09H,读/写)用来记录各中断源的中断请求。中断屏蔽寄存器INT-MASK(08H,读/写)用来设置各中断源的中断允许/禁止。两寄存器具有相同的格式,见图8―13。图8―12中断控制系统框图图8―13中断悬挂寄存器与中断屏蔽寄存器定义3.应用要点在实现中断控制时,应注意以下问题:(1)每个中断源有自己专用的中断向量地址单元,不可随意使用中断向量地址。在中断发生前,必须在中断向量地址中设置好该中断源的中断服务程序入口地址。(2)在中断处理程序中,可利用EI指令开中断(I=1),DI指令关中断(I=0)。若中断处理程序中使用了PUSHF指令,则在状态保护同时起到了关中断作用。该指令将PSW压栈且自身清零,此时I=0。(3)中断悬挂寄存器的内容可人为地修改,以产生某中断请求(相应位置1)或清除某中断请求(相应位置0)。修改时,注意不要影响到其他位。(4)应正确地设置IOC1与HSO-COMMAND相应位,以确定实际的中断源。(5)8098中断系统只有1个外部中断接收端(EXTINT),当外部中断源较多时,可采用Intel公司生产的中断控制器8259芯片来加以扩展。(6)中断服务程序必须以RET指令作为结束。8.1.6定时器8098单片机有3个16位硬件定时器和4个16位软件定时器。1.定时器1(T1)T1是16位硬件定时/计数器,它的输入信号是系统时钟T。当8098单片机加电或复位时,T1被清零,并以每8T时间T1内容加1的方式开始工作。当T1内容计数为FFFFH时,再加1,T1溢出并置零,重新开始计数。在8098处于加电的情况下,T1不受任何干扰而不断地循环计数,因此,它又称为自由行程定时器。

T1可以提供准确的定时值,其当前值可以从TIMER1(地址=0AH)按字读出。其最长定时时间为式中,fosc为8098外加晶振频率。T1溢出可以产生定时器中断,其中断服务程序入口地址存放在中断矢量2000H中。

(8―1)2.定时器2(T2)T2也是16位硬件定时/计数器,与T1不同之处是:T2输入信号来自高速输入通道HSI1引入的计数脉冲,脉冲的每次跳变(正跳变或负跳变)都使T2加1。当计数值为FFFFH时,再加1,T2溢出并置为零,重新开始计数。

T2当前值可从TIMER2(地址=0CH)按字读出,为了有效获取T2值,要求HSI1信号跳变的间隔大于或等于8T。T2溢出也可产生定时器中断(与T1共用中断矢量)。查询IOS1寄存器可判断产生中断的定时器,而T1与T2的溢出中断是否允许则受控于IOC1寄存器。与T1又一个不同点是T2的复位方式较灵活,它可采用以下方法使T2清零:·系统复位:8098加电或引脚为低电平;·软件复位:IOC0·1=1或HSO-COMMAND3~0=1110B;·外部复位:IOC0·3=1且IOC0·5=1时,从HSI0引入由低变高的正脉冲。3.监视定时器(WatchDogTimer)

实际上监视定时器WDT也是一个16位定时/计数器,其计数脉冲由系统时钟T提供,每1个T状态WDT内容加1,当计满64K个T状态时,WDT发生溢出,此时引脚强制为低电平(至少维持2T),使8098系统复位,重新开始工作。4.软件定时器8098有4个16位软件定时器,其编号为0、1、2、3,由HSO-COMMAND3~0指定。适当设置HSO-COMMAND与HSO-TIME寄存器可规定软件定时器的定时时间,一旦定时时间到,便产生软件定时器中断,其中断矢量为200AH。查询IOS1寄存器可确定哪个软件定时器发出了中断。

5.相关寄存器说明1)输入输出控制寄存器IOC与状态寄存器IOSIOC与IOS共用RAM地址,IOC为只写寄存器,IOS为只读寄存器,其定义如图8―14所示。注意:读取IOS1时,该寄存器中与时间有关的标志位(D5~D0)将被清除,因此,读取IOS1之前应注意对IOS1寄存器相应位的保护。2)HSO-COMMAND与HSO-TIME寄存器请参见818小节。图8―14IOC0、IOC1、IOS0、IOS1定义(a)IOC0定义;(b)IOC1定义;(c)IOS1定义;(d)IOS2定义图8―14IOC0、IOC1、IOS0、IOS1定义(a)IOC0定义;(b)IOC1定义;(c)IOS1定义;(d)IOS2定义图8―14IOC0、IOC1、IOS0、IOS1定义(a)IOC0定义;(b)IOC1定义;(c)IOS1定义;(d)IOS2定义8.1.7高速输入HSI1.HIS功能描述

HSI用来记录某一外部事件的触发时刻与状态,可记录多达8个事件。

HSI结构如图8―15所示。在每个T周期内,自动跳变检测器对4个通道(HSI0~HSI3)的事件发生状态进行检测,并将检测结果送至HSI-STATUS寄存器奇数位及FIFO队列中。同时,T1的当前值(16位)也送到FIFO队列中,以记录事件的触发时刻。

FIFO队列是一个可存放7个记录的存储区,每个记录由4位事件状态与16位事件触发时刻组成。最先进入FIFO的事件记录首先进入保持寄存器,使保持寄存器与FIFO实际上构成了1个8记录的队列。当这个队列满时,不再记录新事件信息,而当读取HSI-STATUS(保持寄存器中的4位事件状态信息进入HSI-STATUS的偶数位)与HSI-TIME寄存器后,保持寄存器变空,队列各项依次前移,可以接收新事件信息。图8―15HSI结构图

HSI具有中断功能。当FIFO满或保持寄存器已装载时(由IOC1·7选择),产生HSI数据有效中断,中断矢量为2004H。当HSI0端有正跳变(由低到高)时,产生HSI0中断(中断允许的话),中断矢量为2008H。HSI0中断与HSI数据有效中断不同,它不是事件中断,而是以正跳变触发的外中断。使用HSI时,应注意以下几点:(1)因为读HSI-TIME寄存器时,HSI-STATUS寄存器的内容会自动消失,所以读取HSI时,应先读HSI-STATUS寄存器,再读HSI-TIME寄存器。(2)因为从HSI输入端触发事件产生到记录在FIFO队列并装载入保持寄存器,需要8T周期,且T1的分辨率也为8T,所以,HSI以8T的分辨率检测其输入引脚的快速跳变,且对HSI的读取应在保持寄存器有值时进行。(3)HSI0既可以作为高速事件输入端,也可作为外部中断输入端。当HSI以中断方式工作时,为防止混乱,最好不要同时开放HSI0中断与HSI数据有效中断(HSI0中断优先级高,为4;HSI数据有效中断优先级低,为2)。另外,HSI0还用作T2的外部复位信号。2.相关寄存器说明1)HSI-MODE寄存器该寄存器用来确定HSI输入引脚上事件触发的方式,8位,只写,地址=03H。其定义见图8―16(a)。2)HSI-STATUS寄存器该寄存器用来记录HSI输入引脚上事件触发状态,其中奇数位记录的是HSI输入引脚的当前状态,偶数位记录的是经过FIFO存储并进入到保持寄存器中的某记录事件的状态。该寄存器8位,只读,地址=06H。其定义见图8―16(b)。3)HSI-TIME寄存器该寄存器存放来自保持寄存器的某记录事件发生的时刻(该值即事件发生时定时器T1的当前值)。该寄存器16位,只读,地址=04H.图8―16HSI-MODE与HSI-STATUS定义(a)HSI-MODE定义;(b)HSI-STATUS定义8.1.8高速输出HSO1.HSO功能描述

HSO可按程序设定的时刻去触发1个或多个事件。因CPU开销小,故速度快。

HSO结构如图8―17所示。当保持寄存器为空时,将要输出事件的命令与触发时刻依次写入HSO-COMMAND和HSO-TIME寄存器中,并被自动加载到23位保持寄存器中(7位命令、16位时间),此时若CAM(ContentAddressableMemory内容可寻址存储区)有1个空寄存器,则保持寄存器的内容便存入CAM中。

CAM是由8个23位寄存器组成的存储区,最多可存储8个输出事件,当CAM满时,将不再接受新的输出事件。在每个T周期,CAM中一事件的触发时间值与来自T1或T2的时间基准值在比较器中进行比较,比较相等时,表明该事件触发时间到,于是该事件发生(如启动A/D转换、复位定时器T2、PWM输出、软件定时到等)。图8―17HSO结构图2.相关寄存器说明1)HSO-COMMAND寄存器该寄存器用来设定触发事件,7位有效,只写,地址=06H,定义见图8―18。2)HSO-TIME寄存器该寄存器用来存放事件的触发时间(相对于时间基准T1或T2),16位,只写,地址=04H。该寄存器的加载较为独特,应用ADD指令。例如:ADDHSO-TIME,TIMER1,#××××H表示在HSO-TIME中设置相对于T1的时间值。图8―18HSO-COMMAND寄存器定义8.1.9模/数(A/D)转换器1.A/D转换器工作原理8098片内集成了模拟采集部件,它由4路模拟开关、采样保持器和10位A/D转换器等组成,如图8―19所示。AD-COMMAND寄存器控制选择4路模拟开关的1路接通,使对应连接的模拟信号(0~5V)通过多路开关加载到采样保持器上。采样保持器为零阶保持器,它将某时刻对模拟信号采样的结果进行保持,以便给A/D转换器提供稳定的输入信号。A/D转换器为逐位比较型,它将采样保持器提供的稳定信号(0~5V)转换为10位数字信号,并将其存入AD-RESULT寄存器中,以便CPU读取。图8―19A/D转换器结构从模拟信号被选通到转换结果装入AD-RESULT寄存器,一次A/D转换所需时间为88T(采用12MHz晶体时,为22μs),转换误差约为1/210×100%,即千分之一,转换分辨率约为5V/210,即5mV。A/D转换是否正在进行可用状态位指示,也可在A/D转换结束时发出中断请求(只有ACH7具备中断功能),该中断矢量为2002H。2.相关寄存器说明1)AD-COMMAND寄存器该寄存器用于选择模拟通道与启动A/D转换,8位,只写,地址=02H,其定义如图8―20(a)所示。2)AD-RESULT寄存器该寄存器用来存放A/D转换状态及转换结果,16位,只读,地址=02H、03H,其定义见图8―20(b)。图8―20AD-COMMAND与AD-RESULT定义(a)AD-COMMAND定义;(b)AD-RESULT定义8.1.10数模(D/A)转换1.PWM(脉宽调制)原理8098的D/A转换功能是以PWM信号输出来体现的。PWM可以两种方式提供输出:第一种方式,由HSO提供周期与占空比均可变、分辨率为1/216(16位)的脉宽调制信号;第二种方式,由脉宽调制器提供周期固定、占空比可变、分辨率为1/28(8位)的脉宽调制信号。将PWM信号平滑滤波后,可得到模拟信号。脉宽调制器结构如图8―21所示。在8098加电的情况下,8位循环计数器每接收1个系统时钟脉冲(T)作加1操作,当计数值为00H或溢出(0FFH再加1)时,R-S触发器的S端置0,PWM输出高电平;当计数值与PWM-CONTROL寄存器中预定值相等时,比较器向R-S触发器R端送低电平,PWM输出低电平。这样,随着计数器的循环计数,就可以周期性地输出PWM波形(PWM周期与计数器循环周期一致,即256T)。图8―21脉宽调制器结构2.相关寄存器说明

PWM-CONTROL寄存器中的设定值用来确定PWM波形的占空比,8位,只写,地址=17H。如该寄存器设定值为19H时,则产生周期为256T、占空比为10%的PWM波形;若设定值为80H时,则产生周期为256T、占空比为50%的PWM波形。8.1.11串行口8098单片机串行口与MCS-51系列单片机串行口兼容。它利用RXD、TXD引脚实现串行口与外界联系,通过特殊功能寄存器——串行口缓冲寄存器(发送、接收寄存器)访问串行口。8098单片机设有1个独立的波特率发生器专供串行口使用,用户使用串行口时,HSI、HSO及定时器功能均不受影响。8098单片机也可以利用HSI/HSO构成软件控制的串行口。1.串行口工作方式8098串行口可按4种方式工作。1)方式0——移位寄存器方式这是一种同步方式,常用于并行I/O口的扩展。在此方式中,RXD引脚作为串行数据发送/接收端,TXD引脚输出8个移位脉冲串。8位数据的发送与接收都是按先低位后高位的顺序移动的。方式0时序图见图8―22(a)。2)方式1这是一种标准异步通信方式。TXD引脚发送数据,RXD接收数据,移位控制脉冲由8098内部时钟电路提供。其通信的数据帧格式为:1个起始位(低电平)、8个数据位(先低位,后高位)及1个停止位(高电平),如图8―22(b)所示。3)方式2这也是一种数据通信方式,其通信的数据帧格式为:1个起始位(低)、8个数据位(D0在前,D7在后)、1个可编程数据位(D8)及1个停止位(高),见图8―22(c)。

图8―22方式0时序图与方式1、2、3数据格式(a)方式0时序图;(b)方式1数据格式;(c)方式2/方式3数据格式2.相关寄存器说明1)发送缓冲器SBUF-TX和接收缓冲器SBUF-RXSBUF-TX与SBUF-RX共用地址07H,8位。从RXD引脚接收的串行数据送往SBUF-RX缓冲器(只读),由CPU从中读出;而由CPU写入SBUF-TX缓冲器(只写)的数据从TXD引脚串行输出。1个数据送入SBUF-RX或从SBUF-TX送出,便产生中断标志。2)BAUD-RATE寄存器该寄存器用于确定串行通信的波特率,16位,只写,地址=0EH。对该寄存器设置16位波特率时,应连续2次向0EH写入其高低字节(先低位后高位)。该寄存器最高位D15用来选择波特率发生器的供给源,8098恒取D15=1,此时波特率发生器的时钟为XTAL1。该寄存器的低15位表示无符号数B,由该值可确定不同工作方式下的波特率:方式0:波特率=XTAL1频率/4(B+1)(B≠0)(8―2)

方式1、2、3:波特率=XTAL1频率/64(B+1)

(8―3)

当采用12MHz晶振、选择XTAL1时,同步方式的最大波特率为15M波特(BAUD-DATE内容8001H),异步方式的最大波特率为1875K波特(BAUD-RATE内容8000H)。3)SP-CON寄存器与SP-STAT寄存器

SP-CON(5位,只写)与SP-STAT(3位,只读)组成8位串行口控制状态寄存器,地址=11H。该寄存器用来设置对串行口的控制信息,同时可提供串行口的基本状态,其定义如图8―23所示。图8―23SP-CON/SP-STAT寄存器定义8.1.128098指令系统1.概述8098指令共有100条指令,采用6种寻址方式和若干种操作数类型,可实现8位与16位算术/逻辑运算、移位、传送、跳转等操作。1)操作数类型8098允许使用7种操作数类型:①字节(BYTE):8位无符号数,取值0~255,可存放在存储空间中任何地址上。②字(WORD):16位无符号数,取值0~65535,字按偶地址两字节存储(低8位存于偶地址中,高8位存于奇地址中)。③短整数(SHORT-INTEGER):8位带符号数,取值-128~+127,运算结果超出此范围产生溢出(V=1)。存储规则同字节(BYTE)。④整数(INTEGER):16位带符号数,取值-32768~+32767,运算结果超出此范围产生溢出。存储规则同字(WORD)。⑤双字(DOUBLE―WORD):32位无符号数,取值0~4294967295(232-1)。⑥长整数(LONG-INTEGER):32位带符号数,取值-2147483648(-231)~+2147483647(231-1)。它的使用范围与存储规则同DOUBLE-WORD。⑦位(BIT):1位数,取布尔值“真”、“假”。对8098内部寄存器任意位可按字节或字寻址,按位进行测试。2)寻址方式8098硬件直接支持6种寻址方式,并由此可衍生出两种十分有用的寻址方式。(1)寄存器直接寻址。采用该方式时,由指令指明存放操作数的寄存器,而这个寄存器必须是256字节的内部寄存器阵列(包括特殊功能寄存器)中的任何一个。例如:

REG2EQU54HREG3EQU56HLDBREG2,REG3(2)间接寻址。采用此方式时,由指令指定的某寄存器(字变量)提供了操作数地址(即地址指针),操作数存放在操作数地址确定的存储单元(片内RAM或片外存储器)中。例如:

LDAX,[AX];AX为某字类型寄存器。(3)自动增量间接寻址。此方式与间接寻址方式的不同之处只是在获得操作数后,操作数地址指针自动修改。字节操作时,指针自动加1;字操作时,指针自动加2。例如:

LDAX,[BX]+;执行后BX内容自动加2。

LDBAH,[BX]+;执行后BX内容自动加1。

(4)立即寻址。该方式允许指令中直接提供1个操作数。例如:

LDBAL,#01H(5)短变址寻址。在采用此方式的指令中,指明了存放操作数基地址指针(字变量)的寄存器及8位带符号数偏移地址。操作数的有效地址=基地址+偏移地址,操作数存放在操作数有效地址确定的存储单元中。例如:

LDAX,0A0H[BX]BX中存放操作数基地址,0A0H为偏移地址。(6)长变址寻址。该方式与短变址寻址方式类似,唯一不同的是:偏移地址为16位无符号数。例如:

LDBAL,2746H[BX](7)零寄存器寻址。特殊功能寄存器中的头两字节(地址=00H,01H)为零寄存器,其内容恒为0。当长变址寻址方式中寄存器采用零寄存器时,就衍生出零寄存器寻址方式。该寻址方式可实现对存储空间中任意单元的直接寻址。例如:

LDBAH,3000H[0](8)堆栈指针寄存器寻址。将堆栈指针寄存器作为间接寻址寄存器,就成为堆栈指针寄存器寻址。例如:

PUSH[SP]

LDAX,04H[SP]

3)程序状态字

CPU当前的工作状态保存于程序状态字PSW中,该状态字将为用户程序运行提供依据。PSW格式如图8―24所示。图8―24程序状态字PSW

PSW的低8位为中断屏蔽寄存器INT-MASK,地址为08H,可以按字节访问它。

PSW提供了6个条件标志位,它们为:零标志Z——若操作结果为零时,则Z=1;否则,Z=0。

负标志N——若操作结果为负时,则N=1;否则,N=0。

溢出标志V——若操作结果超出目的操作数所能表示的范围时,则V=1;否则,V=0。溢出陷阱标志VT——V标志置1时,也使VT=1。只有执行CLRVT或JVT指令,才使VT=0。

进位标志C——运算时,若ALU最高位产生算术进位,则C=1,否则,C=0;移位时,双操作数移出的最后1位保存在C标志位中。粘着标志ST——右移操作时,“1”移入C标志后又移出,则ST=1。PSW提供了1个中断控制位。中断允许标志位I——设I=1,CPU允许中断发生;设I=0,CPU禁止中断发生。2.指令系统简介8098单片机指令系统按功能可分为数据传送指令、算术运算指令、逻辑运算指令、堆栈操作指令、无条件转移与调用返回指令、条件转移指令、循环控制指令、单寄存器指令、移位指令及其它专用指令等。所有指令及功能简要说明列于表8―4中。8.1.138098与51系列单片机主要性能对比8098与51系列单片机的主要性能对比见表8―5。表8―48098指令一览表8.1.14一种典型的8098应用系统一个典型的8098通用应用系统示于图8―25中,其中EPROM(2764)构成片外程序存储器,RAM(6264)构成片外数据缓冲器,可编程并行接口8255提供并行外设与系统的连接,再加之8098片内功能,这样,该系统就可满足大多数应用的需要。必须注意的是,在进行系统设计时,一定要充分利用8098芯片的片内功能,以使整个系统硬件电路尽可能简化。另外,当某一功能既可用硬件实现也可用软件实现时,要根据系统设计要求、性能价格比等因素,经过全面考虑后再作出方案。图8―25一种典型的8098通用应用系统8.2AT89C2051单片机

AT89C系列单片机是ATMEL公司1993年开始研制生产的,优越的性能价格比使其成为颇受欢迎的8位单片机。

AT89C系列与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片(AT89C2051/1051),使整个硬件电路的体积更小。

AT89C系列单片机有4种型号:AT89C51、AT89C52、AT89C1051、AT89C2051,其中AT89C2051/1051是ATMEL公司AT89C系列的新成员。它以较小的体积、良好的性能价格比倍受青睐,在家电产品、工业控制、计算机产品、医疗器械、汽车工业等应用方面成为用户降低成本的首选器件。这里以AT89C2051为代表对AT89C系列单片机作一阐述。8.2.1AT89C2051主要性能

AT89C2051是ATMEL公司生产的带2K字节闪速可编程可擦除只读存储器(PEROM)的8位单片机,它具有如下主要特性:(1)与MCS-51TM兼容;(2)内部带2KB可编程闪速存储器;(3)寿命为1000次擦/写循环;(4)数据保留时间为10年;(5)工作电压范围为27V~6V;(6)全静态工作频率为0Hz~24MHz;(7)两级程序存储器锁定;(8)128×8位内部RAM;(9)15条可编程I/O线;(10)2个16位定时器/计数器;(11)5个两级中断源;(12)可编程全双工串行UART通道;(13)直接对LED驱动输出;(14)片内精确的模拟比较器;(15)片内振荡器和时钟电路;(16)低功耗的休眠和掉电模式。8.2.2AT89C2051结构

AT89C2051是一个有20个引脚的芯片,引脚配置如图8―26所示,内部结构如图8―27所示。与8051内部结构进行对比后可发现,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚,因而芯片尺寸有所减小。AT89C2051芯片的20个引脚功能为:

VCC

电源电压。

GND

接地。

RST复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。

图8―26AT89C2051引脚配置图8―27AT89C2051内部结构

XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2来自反向振荡放大器的输出。

P1口8位双向I/O口。引脚P1.2~P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流(IIL),这是因内部上拉的缘故。

P3口引脚P3.0~P3.5与P3.7为7个带内部上拉的双向I/O引脚。P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。表8―6P3口特殊功能8.2.3特殊功能寄存器(SFR)AT89C2051中特殊功能寄存器描述在表8―7中,它们共占用了19字节,其功能与8051SFR功能相对应。8.2.4程序存储器的加密

AT89C2051片内有2个锁定位,可以编程(P),也可以不编程(U),从而得到3种锁定位保护模式,见表8―8。表8―7AT89C2051的SFR及复位值表8―83种锁定位保护模式8.2.5低功耗工作方式

AT89C2051有两种低功耗工作方式:空闲方式与掉电方式。1)空闲方式(休眠方式)当利用软件使空闲方式位IDL(PCON.0)=1时,单片机进入空闲方式。此时,CPU处于休眠状态,而片内所有其他外围设备保持工作状态,片内RAM和所有特殊功能寄存器内容保持不变。在空闲方式下,当晶振fosc=12MHz、电源电压VCC=6V时,电源电流ICC从20mA降至5mA,而VCC=3V时,ICC由5.5mA降至1mA。中断或硬件复位可以终止空闲方式。当空闲方式由硬件复位终止时,CPU要从休眠处恢复程序的执行,执行2个机器周期后,内部复位算法才起作用。此时,硬件禁止访问内部RAM,但允许访问端口引脚。为了防止休眠被复位终止时对端口引脚意外写入的可能性,在生成空闲方式的指令后不应紧跟对端口引脚的写指令。如果不采用外部上拉,P1.0和P1.1应置“0”;如果采用外部上拉,则应置“1”。2)掉电方式掉电方式由掉电方式位PD(PCON.1)=1设置。此时,振荡器停止工作,设置掉电方式的指令成为最后执行的1条指令,片内RAM和特殊功能寄存器内容保持不变。在掉电方式下,VCCmin=2V。当VCC=6V时,ICCmax=100μA;当VCC=3V时,ICCmax=20μA。退出掉电方式的唯一方法是硬件复位。硬件复位将重新定义特殊功能寄存器,但不影响片内RAM。复位的保持时间应足够长,以便振荡器能重新开始工作并稳定下来。在VCC没有恢复到正常工作电压之前,不应进行复位。如果不采用外部上拉,P1.0和P1.1应置“0”,否则置“1”。8.2.6闪速存储器的编程一片新的AT89C2051,其片内2KB的PEROM存储阵列处于擦除状态(即为FFH),此时可对其编程。存储阵列一次编程1字节,若编程任何非空字节时,需对整个存储阵列进行片擦除。编程时,AT89C2051利用内部PEROM地址计数器提供寻址存储阵列的地址信号,该地址计数器在RST上升沿复位至000H,引脚XTAL1所施加的正向连续脉冲使地址计数器不断加1。RST上出现12V(编程电源VPP)高电压时,预示着1字节的编程操作开始。这时P3口提供编程所需的控制与状态信号,P1口为数据通道,如图8―28所示。对这些端口或引脚按图8―29时序施加正确的控制组合就可通过P1口将数据编程到PEROM中。图8―28编程闪速存储器

AT89C2051根据引脚RST与P3.2~P3.7的状态组合可以产生5种编程模式,见表8―9。1.编程(写代码数据)

AT89C2051编程按下述步骤进行:(1)上电过程:VCC加电,置RST为′L′(低电平),XTAL1为′L′,其他所有引脚悬空,等待10ms以上;(2)置RST为′H′(高电平),P3.2为′H′;(3)在引脚P3.3、P3.4、P3.5、P3.7上施加相应的逻辑电平,选定某种编程模式;

表8―95种编程模式(4)地址信号由内部地址计数器提供(初始值为000H),欲写入该地址中的数据加至引脚P1.0~P1.7上;(5)将RST电平升至12V启动编程;(6)给P3.2施加一负脉冲,则编程PEROM存储阵列或锁定位的1字节,字节写周期采用自定时,通常为12ms;(7)若要校验已编程数据,将RST从12V降至逻辑电平′H′,并置引脚P3.3~P3.7为校验模式电平,输出数据即可在P1口读取;(8)编程下一个地址字节,对XTAL1施加一正脉冲,内部地址计数器加1,然后在P1口上加载欲写入的新数据;(9)重复步骤(5)~(8),改变数据,递增地址计数器直到2KB存储阵列全部编程或目标文件结束;(10)下电过程:置XTAL1为′L′,RST为′L′,其他I/O引脚悬空,VCC下电。当前次编程未结束时,不允许开始下一次编程。如何确定一次编程操作是否结束,AT89C2051提供了以下两种方法。1)数据查询特性

AT89C2051具有通过数据查询来检测写周期结束的特性。2)准备好/忙信号在编程期间,引脚P3.1(RDY/

)提供了编程状态。2.校验(读代码数据)进行编程校验时,AT89C2051芯片各引脚作用如图8―30所示。如果锁定位LB1和LB2未被编程,则可通过下述步骤进行校验:(1)使RST从′L′变为′H′,地址计数器复位到000H;

(2)提供适当的控制信号(见图8―29时序),从P1口读取数据与编程写入数据作比较;(3)给XTAL1施加正脉冲,地址计数器加1;(4)从P1口读1个代码数据与编程写入数据作比较;(5)重复步骤(3)、(4)直至整个存储阵列校验完毕。图8―30校验闪速存储器3.写锁定位写锁定位完成对闪速存储器加密。按前述编程模式表操作:先选择写锁定位模式,然后将RST升至12V,P3.2施加编程脉冲,即可将锁定位写入(改变模式选择输入P3.3、P3.4、P3.5、P3.7的输入组合来实现锁定位LB1、LB2的写入)。不能直接校验锁定位,锁定位的校验要通过观察其特性是否被允许来完成。4.芯片擦除当编程模式选择为芯片擦除模式并使P3.2引脚上施加10ms的脉冲后,整个PEROM(2KB)和2个锁定位即可被擦除。擦除后,存储阵列全为FFH。5.读特征字节特征字节表示AT89C系列芯片的基本特性,由3或4字节组成,存储于程序存储区的低端。AT89C2051芯片的特征字节位于地址000H、001H、002H中,当选择读特征字节模式(P3.3=P3.4=P3.5=P3.7=“L”)并采用类似校验步骤读取数据时,即可获得AT89C2051芯片的特征字:(000H)=1EH表示该产品由ATMEL生产;(001H)=21H表示是89C1051/89C2051;(002H)=FFH表示12V编程。8.2.7在线与远程编程

AT89C2051除了可以按前述脱机编程外,还可以实现在线编程与远程编程。1.在线编程由于AT89C2051编程时需要利用RST、XTAL1、P1口、P3口提供控制信号与加载编程数据,而这一要求又常与用户系统对这些引脚的要求或操作冲突,因此,在线编程不能直接在用户工作电路中进行,而需要通过特殊电路处理才能实现。图8―31为AT89C2051实现在线编程的示例,该示例采用2选1的方法实现连接线路的切换,达到在线编程目的。图8―31AT89C2051在线编程示例2.远程编程图8―32为利用电话线实现远程编程的示意图。从图8―32中可看出,为了实现远程编程,首先需要设计一个编程器。该编程器由CPU控制,不仅能实现对用户系统中AT89C2051(或其它AT89C单片机)进行编程,而且能通过内置的调制解调器(MODEM)实现远程通信。图8―32通过电话线遥控编程8.3MC68HC11A8单片机8.3.1MC68HC11A8MCU概述

Motorola公司自1974年推出MC6800微处理器(MPU)后,便不断地发展自己系列的微计算机产品与单片机(又称微控制器MCU)产品。在MC6800的基础上,Motorola公司先后开发出M6801、M6805系列单片机,并通过对M6801进行更新换代,于1986年开始生产M68HC11系列单片机。M68HC11系列单片机是目前功能较强的8位MCU,它采用先进的15微米HCMOS工艺,具有高速度、高密度、低功耗等特点,其典型代表为MC68HC11A8MCU。

MC68HC11A8是具有先进的片内外围能力的增强型8位MCU,利用新的设计技术使正常总线速度达到2MHz;利用全静态设计允许以低至直流的频率工作,进而减小功耗;HCMOS技术使MC68HC11A8的尺寸更小、速度更高、功耗更低及抗干扰能力更强。

MC68HC11A8的片内存储器系统包括8KBROM、512字节EEPROM、256字节RAM;片内提供的主要外围功能有8通道8位A/D转换器、异步串行通信接口(SCI)、同步串行外围接口(SPI)、16位自由运行定时器系统(具有3条输入捕捉线、5条输出比较线和实时中断功能)及8位脉冲累加器子系统(能计数外部事件或测量外部事件周期)。图8―33MC68HC11A8MCU框图

MC68HC11A8的片内存储器系统包括8KBROM、512字节EEPROM、256字节RAM;片内提供的主要外围功能有8通道8位A/D转换器、异步串行通信接口(SCI)、同步串行外围接口(SPI)、16位自由运行定时器系统(具有3条输入捕捉线、5条输出比较线和实时中断功能)及8位脉冲累加器子系统(能计数外部事件或测量外部事件周期)。表8―10M68HC11系列单片机8.3.2MC68HC11A8引脚与连接1.引脚功能

MC68HC11A8有52条引脚PLCC与48条引脚DIP两种封装,图8―34说明了MC68HC11A8的引脚配置。1)电源引脚(VDD和VSS)VDD为正电源(5V)输入,VSS为地线。为了防止MCU引脚在电平转换时可能引起较大的电流尖峰,典型的扩展模式系统应该在电源与地线之间加1μF与001μF的旁路电容。2)模式选择引脚(MODB/VSTBY和MODA/)MODB/VSTBY是模式选择输入与提供备用RAM电源的双功能引脚,MODA/

是另一个模式选择输入与提供指令装入状态输出的双功能引脚。MCU复位时,由硬件模式选择机构根据MODA和MODB引脚状态确定MCU工作模式,表8―11概述了模式引脚的作用及有关的模式控制位。在备用状态或VDD低于规定工作电压时,VSTBY取代VDD为RAM提供电源,既可以保持片内RAM内容,又可以有效地降低功耗。在每条指令执行的第一个E周期内,漏极开路的输出有效的低电平,指示每条指令执行的开始,该信号可以作为诊断输出信号使用。图8―34MC68HC11A8引脚配置表8―11硬件模式选择3)晶振和时钟引脚(EXTAL、XTAL和E)

振荡器引脚能与外部晶体或外部CMOS兼容时钟源相连,所加频率应大于所需要的总线频率(E时钟速率)的4倍。E时钟为总线频率时钟输出,它是基本的定时参考信号。只要振荡器工作,E时钟便以四分之一晶体频率自由运行(STOP停止所有时钟)。当使用外部时钟时,时钟信号输入到EXTAL。在XTAL端与地之间接1个10~100kΩ负载电阻,以减少无线电频率干扰(RFI)噪声的散射。

Rf=1~20MΩC1=5~25pFC2=5~25pF图8―35晶体连接方法4)复位引脚()

在低电平时有效,属双向控制信号:作为输入,它将MC68HC11A8初始化到启动状态;作为输出,它指示由时钟监视电路或计算机正常工作(COP)看门狗电路检测出的内部故障。该信号与早期MCU使用的信号有很大的不同。一种简单、廉价、低电压禁止(LVI)器件MC34064或MC34164用在的自动控制中。MC34064的漏极开路输出可直接驱动MC68HC11A8的引脚。图8―36是一个典型的复位电路。图8―36一种典型的复位电路5)中断引脚()

引脚提供了在复位初始化后请求非屏蔽中断的手段。复位期间,条件码寄存器(CCR)中的X位置位,所有中断在MCU软件允许之前为屏蔽状态。因为输入为电平有效,所以它可以用1个外部上拉电阻连接到多中断源线或网络上。经常用作电源丢失检测中断。6)A/D参考电压和口E引脚(VREFL,VREFH,PE7~PE0)VREFH和VREFL引脚为A/D转换器电路提供参考电压,它们一般通过低通滤波网络连接到VDD和VSS上,以便使逻辑电源上的噪声与敏感的模拟测量隔离。为使A/D足够准确,VREFL和VREFH之间的电压差至少为25V,低于该值将产生较大误差,但转换器仍继续工作。7)定时器口A引脚口A包括3个输入引脚、4个输出引脚和1个双向引脚。其中输入引脚(PA0/IC3、PA1/IC2、PA2/IC1)能作为边沿触发的定时器输入捕捉引脚;4个输出引脚(PA3/OC5/OC1、PA4/OC4/OC1、PA5/OC3/OC1、PA6/OC2/OC1)可作为主定时器输出比较引脚,当使输出比较功能允许时,相应引脚不能用于通用输出,输出比较1(OC1)和/或另一个输出比较控制这4个输出引脚。PA7/PAI/OC1可以作为通用I/O引脚、脉冲累加器输入或OC1输出引脚。8)串行口D引脚口D包括6个能独立设置I/O方向的通用双向I/O引脚。当使串行通信接口(SCI)接收器允许时,PD0/RXD变为专用于RXD功能的输入引脚。当使SCI发送器允许时,PD1/TXD变为专用于TXD功能的输出引脚。当使串行外围接口(SPI)系统允许时,PD2/MISO、PD3/MOSI、PD4/SCK和PD5/

变为专用于SPI功能的引脚,但PD5/SS

引脚仍能通过设置相应的DDRD5位作为通用输出使用。9)口B、口C、STRA、STRB引脚当MCU以单片模式工作时,这18个引脚用于通用I/O;当采用扩展模式时,这18个引脚变为具有AS和读/写(R/)控制线的复用地址/数据总线。表8―12总结了这些引脚的功能。表8―12口B、口C、STRA、STRB引脚2.不用引脚的处理因为MC68HC11A8为CMOS器件,所以不用的输入引脚必须要连接上拉或下拉电阻,以确保操作的正确和可靠。3.典型的单片模式系统连接图8―37是一个简单的单片模式系统原理图,它能工作于正常单片模式或特殊引导模式。该电路可作为任何单片模式应用的基础,所有未用的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论