《单片机的内部资源及应.ppt》由会员分享,可在线阅读,更多相关《单片机的内部资源及应.ppt(104页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 MCS-51单片机的内部资源及应用主要内容:MCS-51单片机内部各器件的具体结构、组成原理、工作方式的设置及典型应用,为读者后续学习单片机应用系统设计、充分利用单片机内部资源解决工程实际问题奠定基础。重点在于各器件工作方式的设置及灵活应用,难点在于中断系统和定时器/计数器的应用。3.1.1 MCS-51 3.1.1 MCS-51内部并行内部并行I/OI/O口口 8051有4个8位并行I/O口,分别命名为P0,P1,P2和P3口。1 1P0P0口口 P0口为双向三态输入/输出口,P0口既可作为地址/数据总线口,又可作为通用I/O口,可驱动8个TTL输入。在访问3.1 MCS-513.1
2、 MCS-51单片机的并行单片机的并行I/OI/O口口 外部存储器时,P0口作地址/数据总线复用口,是一个真正的双向口,并分时送出地址的低8位和送出(或接收)相应存储单元的数据。作通用I/O口时,P0口只是一个准双向口,需要在外部引脚处外接上拉电阻。P0口的位结构如右图所示。2 2P2P2口口 P2口常用做外部存储器的高8位地址口。当不用做地址口时,P2口也可作为通用I/O口,这时它也是一个准双向I/O口。不必外接上拉电阻就可以驱动任何MOS驱动电路,且只能驱动4个TTL输入。P2口的位结构如右图所示。3 3P1P1口口 P1口常用做通用I/O口,它也是一个标准的准双向I/O口,不必外接上拉电
3、阻就可以驱动任何MOS驱动电路,且只能驱动4个TTL输入。P1口的位结构如右图所示。4 4P3P3口口 P3口是一个双功能口,第一功能与P1口一样可用做通用I/O口,也是一个准双向I/O口,能驱动4个TTL输入。另外还具有第二功能。P3口工作在第二功能时各管脚定义如下表所示。P3口的位结构图如右图所示。3.1.2 MCS-513.1.2 MCS-51内部并行内部并行I/OI/O口的应用口的应用 MCS-51I/OMCS-51I/O端口的操作方式:端口的操作方式:(1)输出数据方式:CPU通过一条数据传送指令就可以把输出数据写入P0P3的端口锁存器,然后通过输出驱动器送到端口引脚线。例如,下面的
4、指令均可在P0口输出数据。MOV P0,A ANL P0,#data ORL P0,A(2)读端口数据方式:CPU读入的这个数据并非端口引脚线上的数据。读端口数据可以直接读端口。例如,下面的指令均可以从P1口输入数据,这是锁存器上的数据。MOV A,P1 MOV 20H,P1 MOV R0,P1 MOV R0,P1(3)读端口引脚方式:读端口引脚方式可以从端口引脚上读入信息。在这种方式下,CPU首先必须使欲读端口引脚所对应的锁存器置1,然后才能读端口引脚。因此,用户在读引脚时必须先置位锁存器后读,连续使用两条指令。例如,下面的程序可以读P1引脚上的信号。MOV P1,#0FFH ;置位P1引脚
5、的锁存器 MOV A,P1 ;读P1引脚上的信号送累加器A 注意:写引脚时是直接向端口输出要写的数据,读引脚时就要区分是读端口的引脚信号还是读锁存器信 号。读端口信号是必须先向端口写“1”,然后再读,这就是单片机口信号的准双向的含义。切记!(见P106)在I/O口直接用做输入/输出时,CPU既可以把它们看做数据口,也可以看做状态口,这是由用户决定的。例题例题11要求设计跑马灯。硬件电路设计:1.设计单片机最小系统设计单片机最小系统 2.设计带按键的复位电路设计带按键的复位电路 3.使用一个使用一个P口连接八个口连接八个led发光二极管发光二极管 4.软件设计软件设计 各引脚功能如下:VCC:接
6、正电源;Vss:接地;1 1I/OI/O口直接用于输入口直接用于输入/输出输出 程序设计:程序设计:;实验一:单片机最小系统及流水灯程序实验一:单片机最小系统及流水灯程序 org 00h ;源程序起始地址源程序起始地址jmp main ;跳转到跳转到MAINorg 0050h ;主程序开始地址主程序开始地址main:mov a,#11111110B;立即数送入立即数送入Aloop:mov p1,a ;数据送数据送P1口口 rr a ;右循环一下;右循环一下 lcall delay ;延时子程序延时子程序 ajmp loop;重复循环;重复循环delay:mov r3,#250 ;延时子程序;延
7、时子程序d1:mov r4,#235d2:nopnopnopdjnz r4,d2djnz r3,d1 retend2 2I/OI/O口扩展外部锁存器口扩展外部锁存器 为了输出数据并保持这个输出状态,MCS-51单片机常常需要使I/O口通过外部锁存器和输出设备相连。如下图所示为8051通过74LS273与输出设备连接的接口图。8051通过下面的指令输出数据至数码管:MOV DPTR,#7FFFH ;DPTR指向74LS273端口,地址为7FFFH)MOVX DPTR,A ;输出数据到数码管上 74LS273是带有清除端的8D触发器,只有在清除端保持高电平时,才具有锁存功能,锁存控制端为11脚CL
8、K,采用上升沿锁存。CPU 的ALE信号必须经过反相器反相之后才能与74LS273的控制端CLK 端相连。地址锁存器使用74LS373较多。引脚图如下页图所示。与8051连接电路如下页图所示。WR 上图中的ag七个笔划(段)及小数点dp均为发光二极管。数码管显示器根据公共端的连接方式,可以分为共阴极数码管(将所有发光二极管的阴极连在一起)和共阳极数码管(将所有发光二极管的阳极连在一起)。单片机系统扩展LED数码管时多用共阳LED。共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。但是共阴管的亮度比共阳管的要亮些。通
9、常每个段笔画要串一个数百欧姆的降压电阻。笔画的选择称为段选,公共端的选择称为位选。;八个数码管动态显示程序org 00hajmp mainorg 50hmain:mov r2,#00h;将要显示的数字送R2sss:mov dptr,#tab;查表取得数字的字型码送R0mov a,r2movc a,a+dptrmov r0,amov r6,#40h;循环调用显示程序延时1.5Sxsh1:lcall disp1djnz r6,xsh1inc r2;将下一个要显示数字送R2cjne r2,#0ah,sss;判断数字9显示完否?ajmp maindisp1:mov r5,#08h;显示程序开始,将要显
10、示的位数送R5mov r1,#0feh;将要显示的位码送R1dis00:mov dptr,#7fffh;将要显示的字型码送74LS273mov a,r0movx dptr,amov a,r1;将位选码送入R1mov p2,alcall delay;调延时1MS子程序rl a;位选左移,选中下一位,如果8位数字mov r1,a;显示完了则返回djnz r5,dis00retdelay:mov r3,#08h ;延时1MS程序loop:mov r4,#0a0hdjnz r4,$djnz r3,looprettab:db 0c0h,0f9h,0a4h,0b0h,99h;字型表db 92h,82h,0
11、f8h,80h,90hend3.2 MCS-51单片机的中断系统单片机的中断系统 计算机与外界的联系是通过外部设备(也称为外设、输入/输出设备或I/O设备)与外界联系的。计算机与外设之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的目的。计算机与外设之间交换信息的方式:计算机与外设之间交换信息的方式:(1)无条件传送方式:外设对计算机来说总是准备好的。(2)查询传送方式:传送前计算机先查询外设的状态,若已经准备好就传送,否则就继续查询/等待。(3)中断传送方式:外设通过申请中断的方式与计算机进行数据传送。(4)直接存储器存取方式(DMA):传送数据的双方直接通过总线传送数据,不
12、经CPU中转。3.2.1 3.2.1 中断的基本概念中断的基本概念 1 1中断的定义中断的定义 所谓“中断”,是指CPU执行正常程序时,系统中出现特殊请求,CPU暂时中止当前的程序,转去处理更紧急的事件(执行中断服务程序),处理完毕(中断服务完成)后,CPU自动返回原程序的过程。作用:作用:采用中断技术可以提高CPU效率、解决速度矛盾、实现并行工作、分时操作、实时处理、故障处理、应付突发事件,可使多项任务共享一个资源(CPU)。中断与子程序的最主要区别:中断与子程序的最主要区别:子程序是预先安排好的,中断是随机发生的。中中断断涉涉及及的的几几个个环环节节:中断源、中断申请、开放中断、保护现场、
13、中断服务、恢复现场、中断返回。2.2.中断源中断源 中断源是指引起中断的设备或事件,或发出中断请求的源头。3.3.中断的分类中断的分类 中断按功能通常可分为可屏蔽中断、非屏蔽中断和软件中断三类。可屏蔽中断是指CPU可以通过指令来允许或屏蔽中断的请求。非屏蔽中断是指CPU对中断请求是不可屏蔽的,一旦出现,CPU必须响应。软件中断则是指通过相应的中断指令使CPU响应中断。4.4.中断优先权与中断嵌套中断优先权与中断嵌套 中中断断优优先先级级(也也称称为为中中断断优优先先权权):给每个中断源指定中断响应的优先级别,CPU按中断源的优先级高低顺序响应各中断源发出的中断请求。中中断断嵌嵌套套:在某一瞬间
14、,CPU因响应某一中断源的中断请求而正在执行它的中断服务程序时,若又有一级别高的中断源向CPU发出中断请求,且CPU的中断是开放的,CPU可以把正在执行的中断服务程序暂停下来,转而响应和处理优先权更高的中断源的中断请求,等处理完后再转回来,继续执行原来的中断服务程序,这就是中断嵌套。中断嵌套的过程和子程序嵌套过程类似,子程序的返回指令是RET,而中断服务程序的返回指令是RETI。5.5.中断响应及处理过程中断响应及处理过程 保护断点 寻找中断源 中断处理 中断返回保护断点和寻找中断源都是由硬件自动自动完成的,用户不用考虑。6.6.中断系统的功能中断系统的功能中断系统:中断系统:能够实现中断功能
15、的硬件电路和软件程序。中中断断系系统统的的功功能能:能够实现中断优先权排队、中断嵌套、自动响应中断和中断返回等功能。MCS-51单片机的大部分中断电路都是集成在芯片内部的,只有外部中断请求信号产生电路才分散在各中断源电路和接口电路中。3.2.2 MCS-513.2.2 MCS-51的中断系统的中断系统 MCS-51提供了5个中断源,2个中断优先级控制,可实现2个中断服务嵌套。可通过程序设置中断的允许或屏蔽,设置中断的优先级。1 1MCS-51MCS-51的中断源的中断源 8051允许5个中断源:(1)外部中断源(中断标志为IE0和IE1)由 (P3.2)端口线引入,低电平或下降沿引起。由 (P
16、3.3)端口线引入,低电平或下降沿引起。(2)内部中断源(中断标志为TF0、TF1和TI/RI)T0:定时/计数器0中断,由T0回零溢出引起。T1:定时/计数器1中断,由T1回零溢出引起。TI/RI:串行I/O中断,完成一帧字符发送/接收引起。8051的中断结构如下图所示。CPU识别中断申请的依据:识别中断申请的依据:CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。2 2中断控制中断控制 MCS-51单片机设置了4个专用寄存器用于中断控制,用户通过设置其状态来管理中断系统。(1)定时器控制寄存器TCON(88H)TF1TF1 TR1TR1
17、 TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0TF0/TF1:定时器溢出中断申请标志位(由硬件自动置位)。=0:定时器未溢出;=1:定时器溢出(由全“1”变成全“0”)时由硬件自动置位,申请中断,中断被CPU响应后由硬件自动清零。TR0/TR1:定时器运行启停控制位(可由用户通过软件设置)。=0:定时器停止运行;=1:定时器启动运行。IE0/IE1:外部中断申请标志位(由硬件自动置位,中断响应后转向中断服务程序时,由硬件自动清0)。=0:没有外部中断申请;=1:有外部中断申请。IT0/IT1:外部中断请求的触发方式控制位(可由用户通过软件设置)。=0:在I
18、NT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效。(2)串行口控制寄存器SCON(98H)TI/RI:串行口发送/接收中断申请标志位(由硬件自动置位,必须由用户在中断服务程序中用软件清0)。=0:没有串行口发送/接收中断申请;=1:有串行口发送/接收中断申请。SCON的高6位用于串行口工作方式设置和串行口发送/接收控制。(3)中断允许控制寄存器IE(0A8H)SM0SM0 SM1SM1 SM2SM2 RENREN TB8 TB8 RB8RB8 TI RI TI RI EAEA ES ET1 EX1 ET0 EX0ES ET1 EX1 ET0 EX
19、0(3)中断允许控制寄存器IE(0A8H)EA EA ES ET1 EX1 ET0 EX0ES ET1 EX1 ET0 EX0EX0/EX1/ET1/ET0/ES 位:分别是 /,T0/T1,串行口的中断允许控制位。=0:禁止中断;=1:允许中断。EA:总的中断允许控制位(总开关):=0:禁止全部中断;=1:允许中断。(4)中断优先级控制寄存器IP(0B8H)8051有两个中断优先级,即高优先级和低优先级,每个中断源都可设置为高或低中断优先级,以便CPU对所有的中断实现两级中断嵌套。8051内部中断系统对各中断源的中断优先级有一个统一的规定,称为自然优先级(也称为系统缺省优先级)。如下表所示。
20、8051单片机的中断优先级采用了自然优先级和人工设置高、低优先级的策略,中断处于同一级别时,就由自然优先级确定。开机时,每个中断都处于低优先级,中断优先级可以通过程序来设定,由中断优先级寄存器IP来统一管理。(4)中断优先级控制寄存器IP(0B8H)PS PT1 PS PT1 PX1 PX1 PT0 PX0PT0 PX0PX0/PX1:/优先级控制位:=0:属低优先级;=1:属高优先级。PT0/PT1:T0/T1中断优先级控制位:=0:属低优先级;=1:属高优先级。PS1:串行口中断优先级控制位:=0:属低优先级;=1:属高优先级。中断优先级处理原则:对同时发生多个中断申请时:不同优先级的中断
21、同时申请:先高后低 相同优先级的中断同时申请:按序执行 正处理低优先级中断又接到高级别中断:高打断低 正处理高优先级中断又接到低级别中断:高不理低3中断响应中断响应(1)中断响应的条件 MCS-51单片机工作时,在每个机器周期中都会去查询各个中断标志,如果有中断请求。必须满足下列条件单片机才能响应中断。相应的中断是开放的;没有同级的中断或更高级别的中断正在处理;正在执行的指令必须执行完最后 1个机器周期;若正在执行RETI,或正在访问IE或IP寄存器,则必须执行完当前指令的下一条指令。后方能响应中断。(2)中断响应的过程 中断过程包括中断请求、中断响应、中断服务、中断返回四个阶段。中中断断请请
22、求求:中断源将相应请求中断的标志位置“1”,表示发出请求,并由CPU 查询。中中断断响响应应:在中断允许条件下相应中断。断点入栈撤除中断标志关闭低同级中断允许中断入口地址送PC。这些工作都是由硬件自动完成的。中中断断服服务务:根据入口地址转中断服务程序,包含保护现场、执行中断主体、恢复现场。中中断断返返回回:执行中断返回RETI指令断点出栈开放中断允许返回原程序。中断服务程序入口地址:中断服务程序入口地址:中断响应的主要内容就是由硬件自动生成一条长调用指令(LCALL addr16),CPU执行这条长调用指令便响应中断,转入相应的中断服务程序。这里的addr16就是程序存储器中相应的中断服务程
23、序的入口地址,MCS-51的5个中断源的中断服务程序入口地址是固定的,如下表所示。8051的5个中断源的中断服务入口地址之间相差8个单元。这8个存储单元用来存储中断服务程序一般来说是不够的。用户常在中断服务程序地址入口处放一条三字节的长转移指令。一般地,主程序从0030H单元以后开始存放。例如:ORG 0000HLJMP START ;转入主程序,START为主程序地址标号ORG 0003HLJMP INT0 ;转外中断中断服务程序ORG 000BHLJMP T0 ;转定时器T0中断服务程序ORG 0030HSTART:;主程序开始(3)中断响应时间 正常中断响应时间至少为38个机器周期,如果
24、有同级或高级中断服务,将延长中断响应时间。4中断请求的撤除中断请求的撤除 为了避免中断请求标志没有及时撤除而造成的重复响应同一中断请求的错误,CPU在相应中断时必须及时将其中断请求标志位撤除。8051的5个中断源的中断请求撤除的方法是不同的。(1)定时器溢出中断请求的撤除 定时器溢出中断得到响应后,其中断请求的标志位TF0和TF1由硬件自动自动复位。(2)串行口中断请求的撤除 串行口中断得到响应后,其中断请求的标志位TI和RI不能由硬件自动复位,必须由用户在中断服务程序的适当位置通过如下指令将它们撤除。CLR TI ;撤除发送中断请求标志 CLR RI ;撤除接收中断请求标志 或采用字节型指令
25、:ANL SCON,#0FCH(3)外部中断请求的撤除 外部中断请求的两种触发方式(电平触发和负边沿触发)的中断请求撤除的方法是不同的。负负边边沿沿触触发发方方式式:CPU在前一机器周期采到 /引脚为高,后一机器周期采到为低才认为是一次中断请求,即依靠CPU两次检测 (或 )上的负边沿触发电平状态而置位外部中断标志位IE0或IE1。CPU 可记忆申请、可由硬件自自动动撤除中断申请。电电平平触触发发方方式式:/引脚上的低电平须持续到中断发生。若中断返回前仍未及时撤除低电平,虽然CPU在响应中断时能由硬件自动复位IE0或IE1,但引脚上的低电平仍会使已经复位的IE0或IE1再次置位,产生重复中断的
26、错误。电平触发型外部中断请求的撤除必须由外部硬件使(或)上的低电平随着其中断被响应而变为高电平。其中断请求撤除的电路如下图所示。外来的低电平反相CP端产生上跳沿 D端的“0”输出到Q端申请中断,中断服务返回前对中断服务返回前对P1.0P1.0送送“0”“0”令令Q Q端变为端变为“1”“1”指令如下:指令如下:ANL P1,#0FEH(或(或CLR P1.0);令令Q端置端置“1”ORL P1,#01H (SETB P1.0);令令SD端置端置“1”,以免下次中断来时以免下次中断来时Q端不能变端不能变“0”3.2.3 MCS-513.2.3 MCS-51中断系统的编程中断系统的编程 (1)中断
27、初始化设置:开相应中断允许(IE)、根据需要选择优先级(IP)和选择外中断触发方式(TCON),设置计数器、串行口的有关参数。(2)中断服务程序的编写:中断入口、保护现场、关中断、中断服务主体程序、恢复现场、开中断、设置计数器、串行口的有关参数、中断返回指令RETI。例例题题2 2 设8051外部中断源接引脚 ,中断触发方式为电平触发,试编制8051中断系统的初始化程序。解:采用位操作指令实现(也可以采用传送指令和逻辑指令)。SETB EA ;开总中断 SETB EX0 ;开中断 SETB PX0 ;设置为高优先级 CLR IT0 ;设置为电平触发方式 例题例题3 3 通过通过外部中断控制八盏
28、灯循环点亮。解:解:通过P1口扩展八盏灯,在 引脚接一个按钮开关到地,每按一下按钮就申请一次中断,点亮一盏灯,中断服务则是:依次点亮八盏灯中的一盏。采用边沿触发。硬件电路如下图所示。程序如下:程序如下:ORG 0000H LJMP MAIN ORG 0013H ;中断服务程序入口地址 LJMP IN11 MAIN:SETB EA ;开总中断允许“开关”SETB EX1 ;开分中断允许“开关”CLR PX1 ;低 优先级(也可不要此句)SETB IT1 ;边沿触发 MOV A,#01H ;给累加器A赋初值 SJMP$;原地等待中断申请 IN11:RL A ;左环移一次 MOV P1,A ;输出到
29、P1口 RETI ;中断返回 END3.2.4 MCS-51扩展外部中断请求输入口扩展外部中断请求输入口 8051单片机只提供了两个外部中断请求输入端,如果需要使用多于两个的中断源,就必须扩展外部中断请求输入口。1 1定时器定时器/计数器用于扩展外部中断请求输入口计数器用于扩展外部中断请求输入口 8051单片机有两个定时器/计数器,它们作为计数器使用时,计数输入端T0(或T1)发生负跳变将使计数器加1,利用此特性,适当设置计数初值,就可以把计数输入端T0(或T1)作为外部中断请求输入口。其特点是以占用内部定时中断为代价的。中断服务程序的入口地址仍然为000BH或001BH。2 2查询方式扩展外
30、部中断请求输入口查询方式扩展外部中断请求输入口 把多个中断源通过硬件(如与非门)引入外部中断输入端,同时又连到某个I/O口。当有中断源申请中断时,在中断服务程序中通过软件查询可确定哪一个是正在申请的中断源,其查询的次序可由中断优先级决定。其特点是中断响应速度较慢。适用于外部中断源较多的场合。下页例题中,我们采用74LS21A四输入端双与门实现该任务。3 3使用专用芯片扩展外部中断请求输入口使用专用芯片扩展外部中断请求输入口 当外部中断源较多,同时又要求中断响应速度很高时,查询方式扩展外部中断请求输入口的方法很难满足要求。这时可以使用专用接口芯片进行外部中断请求输入口的扩展。下面例题中,我们采用
31、74LS21A四输入端双与门实现该任务。查询方式扩展外部中断请求输入口的查询方式扩展外部中断请求输入口的电路实现:74ls21的逻辑表是:当输入全高时输出为高,任一输入低则输出就为低。电路分析:当没有按键按下时,由于上拉电阻的作用,74ls21输出高,使INT0口为高电平,此时中断程序不被触发。如果任何一个按键按下,则74ls21输出低电平,触发中断程序。中断程序设计为:如果程序设计检测次序是P1.0、P1.1、P1.2、P1.3口,优先级即按顺序排列,如果同时有多个键被按下,可根据实际要求设定为 1、仅仅只响应最优先中断;2、按优先级顺序依次执行各个中断。设计程序如下:设计程序如下:ORG
32、0000HLJMP MAINORG 0003H;外部中断0中断服务入口地址LJMP INT;转中断服务ORG 0100H MAIN:SETB EA;开总中断允许SETB EX0;开INT0中断SETB IT0;下降沿有效中断服务程序清单如下:INTI CALL D20;延时去抖动MOV P1,#0FFH;P1口送全1值(准双向口原因)MOV A,P1;读P1口各引脚(设另四口未用)CJNE A,#0FFH,CLOSE;验证是否确实有键闭合 AJMP INT0;无键按下(按键时间过短)则退;出中断 CLOSE:JNB ACC.3,KEY 0;查询0号键 JNB ACC.2,KEY 1;查询1号键
33、 JNB ACC.1,KEY 2;查询2号键 JNB ACC.0,KEY 3;查询3号键 INT0:RETI KEY 0:;7号键处理程序 KEY 01:MOV A,P1;再读P1口各引脚 JNB ACC.0,FUNC71;确认键是否释放 RETI KEY 1:;其他键处理程序 D20:;20ms延时子程序 END 3.3 MCS-51单片机的定时器单片机的定时器/计数计数器器 3.3.1 定时器定时器/计数器计数器 1 1基本概念基本概念(1)计数:计数是指对外部事件的个数进行计量。其实质就是对外部输入脉冲的个数进行计量。实现计数功能的器件称为计数器。(2)定时:8051单片机中的定时器和计
34、数器是一个部件,只不过计数器记录的是外界发生的事件,而定时器则是由单片机内部提供一个非常稳定的计数源进行定时的。这个计数源是由单片机的晶振经过12分频后获得的一个脉冲源。所以定时器计数脉冲的时间间隔与晶振有关。(3)定时的种类 软软件件定定时时:利用执行一个循环程序进行时间延迟。其特点是定时时间精确,不需外加硬件电路,但占用CPU时间。因此软件定时的时间不宜过长。硬硬件件定定时时:利用硬件电路实现定时。其特点是不占用CPU时间,通过改变电路元器件参数来调节定时,但使用不够灵活方便。对于时间较长的定时,常用硬件电路来实现。可可编编程程定定时时器器:通过专用的定时器/计数器芯片实现。其特点是通过对
35、系统时钟脉冲进行计数实现定时,定时时间可通过程序设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数功能。MCS-51单片机内部有两个16位可编程的定时器/计数器,简称为T0和T1,均可作定时器用也可计数器,它们均是二进制加法计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已终止。适用于定时控制、延时、外部计数和检测等。计数器:计数器:对引脚T0(P 3.4)和T1(P3.5.)输入的外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。定时器:定时器:对系统晶振振荡脉冲的12分频输出进行计数。(1)定时器/计数
36、器的结构组成:组成:16位加法计数器、工作方式寄存器TMOD和控制寄存器TCON。T0:TL0(低8位)和TH0(高8位)T1:TL1(低8位)和TH1(高8位)2MCS-51内部定时器内部定时器/计数器计数器 8051单片机内部的定时器/计数器的结构如下图所示。(2)控制寄存器TCON (88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF0/TF1:T0/1计数溢出标志位。可用于申请中断或供CPU查询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。=1:计数溢出;=0:计数未满。TR0/TR1:T0/1启停控制位。=1:启动计数;=0:停止计数。IE0/
37、IE1和IT0/IT1:用于管理外部中断(前面已介绍过)。M1,M0:工作方式选择位。=00:13位定时器/计数器;=01:16位定时器/计数器(常用);=10:可自动重装的8位定时器/计数器(常用);=11:T0 分为2个8位定时器/计数器;仅适用于T0。C/:定时方式/计数方式选择位。=1:选择计数器工作方式,对T0/T1引脚输入的外部事件的负脉冲计数;=0:选择定时器工作方式,对机器周期脉冲计数定时。如下页图所示。(2)工作方式寄存器TMOD GATE C/T M1 M0 GATE C/T M1 M0T1T2GATE:门控位,定时器/计数器的启/停可由软件与硬件两者控制 =0:软件控制,
38、只由TCON中的启/停控制位TR0/TR1控制定时器/计数器的启/停。=1:硬件控制,由外部中断请求信号 /和TCON中的启/停控制位TR0/TR1组合状态控制定时器/计数器的启/停。其控制逻辑如下图所示。3.3.2 3.3.2 定时器定时器/计数器的工作方式计数器的工作方式 8051单片机的定时器/计数器共有四种工作模式,现以T0为例加以介绍,T1与T0的工作原理相同,但方式3下T1停止计数。方式(如F0)和用户定义名称等几种方式。1工作方式工作方式0(M1M0=00,13位定时器位定时器/计数器)计数器)由TH0的全部8位和TL0的低5位(TL0的高3位未用)构成13位加1计数器,当TL0
39、低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,溢出标志位TF0置“1”。2工作方式工作方式1(M1M0=01,16位定时器位定时器/计数器)计数器)由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同。3工工作作方方式式2(M1M0=10,自自动动重重装装计计数数初初值值的的8位位定定时时器器/计数器)计数器)16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计数
40、的应用场合(如串行数据通信的波特率发生器)。4工作方式3(M1M0=11,2个8位定时器/计数器,仅适用于T0)TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。TH0:只能作为8位定时器,借用T1的控制位TR1和TF1,只能对片内机器周期脉冲计数。在方式3模式下,定时器/计数器0可以构成两个定时器或者一个定时器和一个计数器。T0方式3下的T1方式2,因定时初值能自动恢复,用作波特率发生器更为合适。定时器/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数。在应用时,其工作方式和工作过程均可通过程序设定和控制,因此,
41、定时器/计数器在工作前必须先对其进行初始化,计算和设置初值。1.定时器定时器T0/T1 中断申请过程中断申请过程 (1)在已经开放T0/T1中断允许且已被启动的前提下,T0/T1加1计满溢出时 TF0/TF1标志位自动置“1”;(2)CPU 检测到TCON中TF0/TF1变“1”后,将产生指令:LCALL 000BH/LCALL 001BH 执行中断服务程序;(3)TF0/TF1标志位由硬件自动清“0”,以备下次中断申请。3.3.3 定时器定时器/计数器的应用计数器的应用 2.定时器/计数器初始化的步骤 (1)写TMOD,设置定时器/计数器的工作方式;(2)计算定时器/计数器的初值,写入TH0
42、/TH1、TL0/TL1。(3)设置IE、IP,以开放相应的中断和设定中断优先级。3.定时器/计数器的定时器/计数器范围 (1)工作方式0:13位定时器/计数器方式 最大计数值=213=8192 (2)工作方式1:16位定时器/计数器方式 最大计数值=216=65536 (3)工作方式2和工作方式3:8位的定时器/计数器方式因此,最大计数值=28=256 3.计数器初值的计算计数器初值的计算 方法:方法:用最大计数量减去需要的计数次数。即:TC=MC 其中:其中:TC计数器需要预置的初值;M计数器的模值(最大计数值);方式0时,M=213;方式1时,M=216;方式2,3时,M=28;C计数器
43、计满回0所需的计数值,即设计任务要求的计数值。例如:例如:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,则应当预置的初值为:TC=M C=213 12=81804.定时器初值的计算定时器初值的计算 定时时间的计算公式为:定时时间的计算公式为:T=(MTC)T0(或TC=MT/T0)其中:其中:T定时器的定时时间,即设计任务要求的定时时间;T0计数器计数脉冲的周期,即单片机系统主频周期的12倍;M计数器的模值;TC定时器需要预置的初值。若设初值TC=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为:工作方式工作
44、方式0 0:Tmax=2131s=8.192ms工作方式工作方式1 1:Tmax=2161s=65.536ms工作方式工作方式2 2和和3 3:Tmax=281s=0.256ms5.5.定时器定时器/计数器应用举例计数器应用举例 例例题题 设一只发光二极管LED和8051的P1.0脚相连。当P1.0脚是高电平时,LED发亮;当P1.0脚是低电平时,LED不亮。编制程序用定时器来实现发光二极管LED的闪烁功能,设置LED每1s闪烁一次。已知单片机系统主频为12MHz(这意味着每个时钟周期121/(12100000012=1 s。见p127和p29)。要是主频为11.0592MHz的话,就是12/
45、11.0592 s。解解:定时器/计数器的最长的定时是65.536ms,无法实现1s的定时。可以采用软件计数器来进行设计。设设计计思思想想:定义一个软件计数器单元30H,先用定时器/计数器0做一个50ms的定时器,定时时间到了以后将软件计数器中的值加1,如果软件计数器计到了20,取反P1.0,并清掉软件计数器中的值,否则直接返回。则完成了20次定时中断才取反一次P1.0,因此定时时间就为2050=1000ms=1s。定时器/计数器0采用工作方式1,其初值为:21650ms/1s=6553650000=15536=3CB0H电路图如下:程序如下:程序如下:ORG 0000H AJMP START
46、 ;转入主程序 ORG 000BH ;定时器/计数器0的中断服务程序入口地址 AJMP TIME0 ;跳转到真正的定时器中断服务程序处 ORG 0030H START:MOV SP,#60H ;设置堆栈指针 MOV P1,#0FFH ;关发光二极管LED(使其灭)MOV 30H,#00H ;软件计数器预清0 MOV TMOD,#01H ;定时器/计数器0工作于方式1 MOV TH0,#3CH ;设置定时器/计数器的初值 MOV TL0,#0B0H SETB EA ;开总中断允许 SETB ET0 ;开定时器/计数器0中断允许 SETB TR0;启动定时器/计数器0 LOOP:AJMP LOOP
47、 ;循环等待(真正工作时,这里可写任意其他程序)定时器定时器/计数器计数器0 0的中断服务程序如下:的中断服务程序如下:TIME0:PUSH ACC ;将PSW和ACC推入堆栈保护 PUSH PSW INC 30H ;软件计数器加1 MOV A,30H CJNE A,#20,T_LP2;软件计数器单元中的值到了20了吗?到了,继续执行;否则,转入T_LP2 T_LP1:CPL P1.0 ;到了,P1.0取反 MOV 30H,#00H;清软件计数器 T_LP2:MOV TH0,#3CH;重置定时器/计数器的初值 MOV TL0,#0B0H POP PSW ;恢复PSW和ACC POP ACC R
48、ETI;中断返回 END 例例题题 设电路图如本课件第10页所示(或见01计本实验ddb图)编制程序,对RAM中某单元内容进行显示。解解:设使用内存70H75H 6个单元存放当前时钟数据,用定时器功能以及数码管动态显示技术可该值显示出来。程序如下:程序如下:;YanQing于2006年5月7日调试成功.org 0000hjmp mainorg 001bhjmp displayorg 50hmain:nopmov tmod,#00hmov tl1,#0b0hmov th1,#00h setb easetb et1setb tr1mov 70h,#1mov 71h,#2mov 72h,#7mov
49、73h,#4mov 74h,#5mov 75h,#0sss:jmp sssdisplay:mov r1,#6fhmov r4,#11011111bplay:mov a,r4mov p2,ainc r1mov a,r4rr a mov r4,amov a,r1mov dptr,#tabmovc a,a+dptrmov dptr,#7fffhmovx dptr,adl1ms:mov r6,#14hdl1:mov r7,#19hdjnz r7,$djnz r6,dl1mov a,r4jb acc.7,playretitab:db 0c0h,0f9h,0a4h,0b0h,99hdb 92h,82h,0
50、f8h,80h,90hend 该程序的实用意义在于:不论主程序是怎么运行,该程序的实用意义在于:不论主程序是怎么运行,显示数码管总能显示特定单元的内容,电子钟、温度控显示数码管总能显示特定单元的内容,电子钟、温度控制、制、GPSGPS数据等等都可以使用。只要你把数据送到指定数据等等都可以使用。只要你把数据送到指定的内存单元即可。的内存单元即可。3.4 MCS-51 3.4 MCS-51 单片机的串行通信单片机的串行通信 3.4.1 3.4.1 概述概述1.1.通信通信 通信:通信:单片机与外界进行信息交换统称为通信。80518051单片机的通信方式有两种:单片机的通信方式有两种:并并行行通通信