第4章MCS-51功能模块的编程与仿真讲义课件.ppt(102页)

上传人(卖家):ziliao2023 文档编号:7977227 上传时间:2024-09-21 格式:PPT 页数:102 大小:1.67MB
下载 相关 举报
第4章MCS-51功能模块的编程与仿真讲义课件.ppt(102页)_第1页
第1页 / 共102页
第4章MCS-51功能模块的编程与仿真讲义课件.ppt(102页)_第2页
第2页 / 共102页
第4章MCS-51功能模块的编程与仿真讲义课件.ppt(102页)_第3页
第3页 / 共102页
第4章MCS-51功能模块的编程与仿真讲义课件.ppt(102页)_第4页
第4页 / 共102页
第4章MCS-51功能模块的编程与仿真讲义课件.ppt(102页)_第5页
第5页 / 共102页
点击查看更多>>
资源描述

1、第第4 4章章 MCS-51MCS-51功能模块的编程与仿真功能模块的编程与仿真 4.1 单片机的并行输入单片机的并行输入/输出口输出口4.2 中断的系统中断的系统4.3 MCS-51的定时的定时/计数器计数器4.4 串行接口串行接口4.1 单片机的并行输入输出端口单片机的并行输入输出端口u8051单片机有单片机有4个个8位位并行并行I/O端口,每条端口,每条I/O口线都能独立口线都能独立地用作地用作输入或输出输入或输出。u 在无片外扩展存储器的系统中,这四个在无片外扩展存储器的系统中,这四个I/O口都可以作为口都可以作为通用通用I/O口使用口使用。u 在有片外扩展存储器的系统中,在有片外扩展

2、存储器的系统中,P2口送出高口送出高8位地址位地址,P0口分时送出低口分时送出低8位地址和位地址和8位数据。位数据。图图4.1 P0 的位结构图的位结构图1.并行并行I/O的结构和原理的结构和原理(1)P0口口 1 D CP Q Q MUX&T1 T2 锁存器 地址/数据 控制信号C VCC 内部总线 写锁存器 读锁存器 读引脚 P0.X引脚 1 2 uP0口用作通用口用作通用I/O口。口。P0口用作输出口口用作输出口,此时必须外接上拉电阻。,此时必须外接上拉电阻。P0口用作输入口口用作输入口,分读引脚和读锁存器两种情况。分读引脚和读锁存器两种情况。读引脚读引脚:CPU在执行在执行“MOV”类

3、输入指令时类输入指令时(如:如:MOV A,P0),内部产生的操作信号是内部产生的操作信号是“读引脚读引脚”。P0.X引脚上的数据经过缓引脚上的数据经过缓冲器冲器2读入到内部总线。注意在读引脚时,必须先向电路中的读入到内部总线。注意在读引脚时,必须先向电路中的锁存器写入锁存器写入1。读锁存器读锁存器:CPU在执行在执行“读读-改改-写写”类输入指令时类输入指令时(如:如:ANL P0,A),内部产生的操作信号是,内部产生的操作信号是“读锁存器读锁存器”,锁存器中的数据,锁存器中的数据经过缓冲器经过缓冲器1送到内部总线,然后与送到内部总线,然后与A的内容进行逻辑的内容进行逻辑“与与”,结果送回结

4、果送回P0的端口锁存器并出现在引脚。除了的端口锁存器并出现在引脚。除了MOV类指令外,类指令外,其他的读端口操作指令都属于这种情况。其他的读端口操作指令都属于这种情况。u在扩展系统中,在扩展系统中,P0口作地址口作地址/数据总线数据总线。(2)P1口口 P1口仅作通用口仅作通用I/O口使用。由于在内部输出端已接有上拉口使用。由于在内部输出端已接有上拉电阻,所以不需再外接上拉电阻。电阻,所以不需再外接上拉电阻。图图4.2 P1 的位结构图的位结构图(3)P2口口u 当控制信号等于零时,当控制信号等于零时,MUX拨向下方,拨向下方,P2口作为通用口作为通用I/O口使用口使用u 当控制信号等于当控制

5、信号等于1 时,时,MUX拨向上方,拨向上方,P2口作为高口作为高8位地址线使用。位地址线使用。图图4.3 P2 的位结构图的位结构图 4、P3口口 锁存器锁存器Q端接与非门的一个输入端,第二功能输出线接端接与非门的一个输入端,第二功能输出线接与非门的另一个输入端。与非门的另一个输入端。图图4.4 P3 的位结构图的位结构图引引 脚脚第第 二二 功功 能能P3.0RXD:串行口输入:串行口输入P3.1TXD:串行口输出串行口输出P3.2INT0:外部中断:外部中断0请求输入请求输入P3.3INT1:外部中断外部中断1请求输入请求输入P3.4T0:定时器定时器/计数器计数器0外部计数脉冲输入外部

6、计数脉冲输入P3.5T1:定时器定时器/计数器计数器1外部计数脉冲输入外部计数脉冲输入P3.6WR:外部数据存储器写控制信号输出:外部数据存储器写控制信号输出P3.7RD:外部数据存储器读控制信号输出外部数据存储器读控制信号输出表表4.1 P3口的第二功能表口的第二功能表2、MC5-51并行并行I/O的应用举例的应用举例1、七段数码管的结构与原理、七段数码管的结构与原理 在单片机应用系统中通常使用的是在单片机应用系统中通常使用的是8段式段式LED数码管显数码管显示器,它有共阴极和共阳极两种,如图所示。示器,它有共阴极和共阳极两种,如图所示。数码管数码管不同的发光段亮,可组成不同字型,这种组合称

7、为不同的发光段亮,可组成不同字型,这种组合称为字型码或断码。在字型码或断码。在COM送入低电平或高电平,然后控制送入低电平或高电平,然后控制个各段引脚电平,即可形成相应段码个各段引脚电平,即可形成相应段码。n共阳顺序段码:共阳顺序段码:C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90Hn共阴顺序段码共阴顺序段码:3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH(Dpa)例例4.1:要求通过开关输入要求通过开关输入4位二进制数,送到数码管显示出来位二进制数,送到数码管显示出来如图如图(见书见书)。汇编源程序汇编源程序 ORG 0000H

8、LJMP STA ORG 0100hSTA:MOV P1,#0FFH ;关数码管关数码管LOP:MOV P0,#0FFH ;读引脚前端口置读引脚前端口置1 MOV A,P0 ;读开关状态读开关状态 CPL A ;转成数据信息转成数据信息 ANL A,#0FH ;保留低保留低4位信息位信息 MOV DPTR,#TAB MOVC A,A+DPTR ;查表取得断码信息查表取得断码信息 MOV P1,A ;断码送数码管显示断码送数码管显示 AJMP LOP END C程序#include reg51.h /包含8051单片机寄存器定义头文件#define LED P1#define KEY P0cha

9、r code disp=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 x88,0 x83,0 x0C6,0 xA1,0 x86,0 x8E;/定义断码表main()int i;LED=0 xFF;/关数码管 while(1)KEY=0XFF;/读引脚前端口置1 i=KEY;i=i;/转成数据信息 i=i&0 x0f;/保留低4位信息 LED=dispi;/查表取得断码信息,断码送数码管显?仿真实验仿真实验u在Proteus ISIS 中画出设计电路,并进行电气检测。u根据电路设计图,在Keil C中编写源程序。u编译

10、程序,并产生HEX文件。u将HEX文件加入AT89c51,并仿真电路,通过拨动开关观察发光二极管的显示状况,如图所示。图图4.7 例例4.1的仿真图的仿真图n例例4.2:要求对某引脚送入的脉冲进行计数,把脉冲的个要求对某引脚送入的脉冲进行计数,把脉冲的个数送到八个发光二极管以二进制数的形式显示出来,并进数送到八个发光二极管以二进制数的形式显示出来,并进行仿真实验。行仿真实验。汇编语言源程序:汇编语言源程序:ORG 0000h AJMP STAR ORG 0100H STAR:MOV A,#0ffh MOV P1,A CLR A ;计数器清计数器清0L081D:JB P3.0,L081D ;P3

11、.0为低吗为低吗?MOV R2,#10H LCALL DELY JNB P3.0,$;延时后再判断延时后再判断P3.0为低吗为低吗?INC A ;累加器加累加器加1 PUSH ACC CPL A ;转成驱动二极管的电平转成驱动二极管的电平 MOV P1,A ;A送送P1口口 POP ACC AJMP L081DDELY:;延时子程序延时子程序 RET END 仿真实验:仿真实验:u在在Proteus ISIS 中画出设计电路,并进行电气检中画出设计电路,并进行电气检测。测。u根据电路设计图,在根据电路设计图,在Keil C中编写源程序。中编写源程序。u编译程序,并产生编译程序,并产生HEX文件

12、。文件。u 将将HEX文件加入文件加入AT89c51,并仿真电路,通过拨并仿真电路,通过拨动开关观察发光二极管的显示状况,如图所示。动开关观察发光二极管的显示状况,如图所示。图图4.8-9 例例4.2的仿真图的仿真图4.2 中断系统中断系统4.2.1 中断的概述中断的概述1.中断的基本概念中断的基本概念2.中断优先权与嵌套中断优先权与嵌套图4.10 中断过程流程图图4.11 中断嵌套过程图4.2.2 MCS-51的中断系统的中断系统 8051共有5个中断源。分为高级和低级两个中断优先级,可实现2级中断服务嵌套。1.MCS-51的中断源的中断源 8051允许5个中断源:外部中断源外部中断源 由外

13、部原因引起的,可以通过两个固定引脚 INT0(P3.2)和INT1(P3.3)来引入。这两个中断源的请求方式有两种:低电平触发或下降沿触发。内部中断源内部中断源 T0:定时/计数器0中断,由T0回零溢出引起。T1:定时/计数器1中断,由T1回零溢出引起。TI/RI:串行I/O中断,完成一帧字符发送/接收引起。2、中断控制、中断控制 图图4.12 8051中断系统结构中断系统结构 IE0 PX0 EA EX0 1 中断 矢量地址 1 0 ET0 EX1 ET1 ES PT0 PX1 PT1 PS 1 0 1 0 1 0 1 0 自然优先级 中断 矢量地址 自然优先级 IT0=1 IT0=0 TF

14、0 IE1 1 IT1=1 IT1=0 TF1 TI RI T0 T1 INT1 TX RX TCON IE IP SCON 中断标志 各中断 源允许 总允许 优先级 硬件查询 PC 低级中断请求 PC 高级中断请求 INT0 1 定时控制寄存器定时控制寄存器TCONTCON(88H)D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1IT1IE0IT0nTF0/TF1:定时器溢出中断申请标志位(由硬件自动置定时器溢出中断申请标志位(由硬件自动置位)。位)。=0:定时器未溢出;:定时器未溢出;=1:定时器溢出(由全:定时器溢出(由全“1”变成全变成全“0”)时由硬件自动)时由

15、硬件自动置位,申请中断,中断被置位,申请中断,中断被CPU响应后由硬件自动清零响应后由硬件自动清零。nTR0/TR1:定时器运行启停控制位 =0:定时器停止运行;:定时器停止运行;=1:定时器启动运行。:定时器启动运行。nIE0/IE1:外部中断申请标志位(由硬件自动置位,中 断响应后转向中断服务程序时,由硬件自动清0)。=0:没有外部中断申请;=1:有外部中断申请。u IT0/IT1:外部中断请求的触发方式控制位(可由用户通过软件设置)。=0:在INT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效。u TI/RI:串行口发送串行口发送/接收中断申

16、请标志位接收中断申请标志位 =0:没有串行口发送:没有串行口发送/接收中断申请;接收中断申请;=1:有串行口发送:有串行口发送/接收中断申请。接收中断申请。这两位不会由硬件自动置位,所以用户必须在中断服务子这两位不会由硬件自动置位,所以用户必须在中断服务子程序中用软件清程序中用软件清0。例如:例如:CLR TI RE TI 串行口控制寄存器串行口控制寄存器SCONSCON(98H)D7D6D5D4D3D2D1D0 SM0 SM1 SM2 REN TB8 RB8TIRI中断允许寄存器中断允许寄存器IEIE(A8H)D7D6D5D4D3D2D1D0EAET2ESET1EX1ET0EX0 ES:串行

17、口中断允许位。ET1:定时器/计数器T1的溢出中断允许位。EX1:外部中断1中断允许位。ET0:定时器/计数器T0的溢出中断允许位。EX0:外部中断0中断允许位。EA:总的中断允许控制位(总开关):=0:禁止全部中断;=1:允许中断。中断优先级寄存器中断优先级寄存器IPIP(B8H)D7D6D5D4D3D2D1D0PT2PSPT1PX1PT0PX0PX0/PX1:外部中断外部中断0/外部中断外部中断1 优先级控制位:优先级控制位:=0:属低优先级;:属低优先级;=1:属高优先级。:属高优先级。PT0/PT1:T0/T1中断优先级控制位:中断优先级控制位:=0:属低优先级;:属低优先级;=1:属

18、高优先级。:属高优先级。PS1:串行口中断优先级控制位:串行口中断优先级控制位:=0:属低优先级;:属低优先级;=1:属高优先级。:属高优先级。当同级的几个中断源同时发中断请求时,当同级的几个中断源同时发中断请求时,MCS-51单片机的中断系统对各中断源的中断单片机的中断系统对各中断源的中断优先级有一个统一的规定,称为自然优先级。优先级有一个统一的规定,称为自然优先级。自然优先级的排列如下:自然优先级的排列如下:中断源 自然优先级 外部中断 0 最高级 定时器 T0 中断 外部中断 1 定时器 T1 中断 串行口中断 最低级 3.中断响应及处理过程中断响应及处理过程 中断响应的条件中断响应的条

19、件u相应的中断是开放的;相应的中断是开放的;u没有同级的中断或更高级别的中断正在处理;没有同级的中断或更高级别的中断正在处理;u正在执行的指令必须执行完最后正在执行的指令必须执行完最后 1个机器周期;个机器周期;u若当前正在执行的是中断返回指令(若当前正在执行的是中断返回指令(RETI),或对),或对IE或或IP寄存器操作的指寄存器操作的指令,则必须执行完当前指令的下一条指令才能响应中断。令,则必须执行完当前指令的下一条指令才能响应中断。中断响应的过程中断响应的过程 中断过程包括中断请求、中断响应、中断服务、中断返回四个阶段。中断过程包括中断请求、中断响应、中断服务、中断返回四个阶段。u中断优

20、先级状态触发器置中断优先级状态触发器置1。u由硬件自动生成一条长调用指令由硬件自动生成一条长调用指令,将断点的地址压入堆栈区进行保护,将断点的地址压入堆栈区进行保护,uCPU将执行中断服务子程序,包含保护现场、执行中断主体、恢复现场。将执行中断服务子程序,包含保护现场、执行中断主体、恢复现场。u中断返回:中断子程序最后为中断返回中断返回:中断子程序最后为中断返回RETI指令,该指令使断点出栈,然指令,该指令使断点出栈,然后开放中断允许,中断过程结束,后开放中断允许,中断过程结束,CPU返回原程序。返回原程序。中断服务程序入口地址(中断矢量)中断服务程序入口地址(中断矢量)中断入口地址就是中断服

21、务子程序的起始地址,即第中断入口地址就是中断服务子程序的起始地址,即第一条指令的第一个字节在程序存储器中的位置。单片机的一条指令的第一个字节在程序存储器中的位置。单片机的中断入口地址由单片机硬件电路决定,各中断服务子程序中断入口地址由单片机硬件电路决定,各中断服务子程序的入口地址为:的入口地址为:中断源中断源 入口地址入口地址 INT0 0003 T0 000BH INT1 0013H T1 001BH RI/TI 0023H 外部中断触发方式的选择外部中断触发方式的选择n边沿触发边沿触发 当当ITx=1时,外部中断为边沿触发方式。时,外部中断为边沿触发方式。CPU在每个机器周在每个机器周期的

22、期的S5P2期间采样期间采样INT1(P3.3)引脚。若在连续两个机器引脚。若在连续两个机器周期采样到先高电平后低电平,则认为有中断申请,硬件周期采样到先高电平后低电平,则认为有中断申请,硬件自动使自动使IE0置置1,此标志一直保持到,此标志一直保持到CPU响应中断时,才由响应中断时,才由硬件自动清硬件自动清0。在边沿触发方式下,为保证。在边沿触发方式下,为保证CPU在两个机在两个机器周期内检测到先高后低的负跳变,输入高低电平的持续器周期内检测到先高后低的负跳变,输入高低电平的持续时间至少要保持时间至少要保持12个时钟周期。个时钟周期。u电平触发电平触发当当ITx=0时,外部中断为电平触发方式

23、。若时,外部中断为电平触发方式。若CPU检测外部中检测外部中断请求输入引脚为低电平,硬件自动置位相应的中断标志断请求输入引脚为低电平,硬件自动置位相应的中断标志位位IEx;若为高电平,则认为无中断申请,硬件自动清除;若为高电平,则认为无中断申请,硬件自动清除中断标志位。所以,外部中断请求输入信号,必须保持到中断标志位。所以,外部中断请求输入信号,必须保持到CPU响应该请求为止。当响应该请求为止。当CPU响应请求后通过硬件清零响应请求后通过硬件清零IEx,但请求信号并没有被清除,在该中断服务子程序返,但请求信号并没有被清除,在该中断服务子程序返回之前,这个中断请求信号必须撤掉,否则,将引起再次回

24、之前,这个中断请求信号必须撤掉,否则,将引起再次响应。为此,用以下电路清除外部中断请求信号,并在中响应。为此,用以下电路清除外部中断请求信号,并在中断服务程序中执行以下指令断服务程序中执行以下指令:ORL P1,#01HANL P1,#0FEH4.2.3 MCS-51中断的应用举中断的应用举【例例4.3】:见书:见书P85。图图4-12 用二极管显示中断请求信号用二极管显示中断请求信号 汇编语言源程序汇编语言源程序:ORG 0000H AJMP MAIN ;转向主程序 ORG 0013H ;外部中断1入口地址 AJMP PINT ORG 0050HMAIN:SETB IT1 ;置边沿触发方式

25、SETB EX1 SETB EA ;开发外部中断1LOOP:MOV A,P1 ANL A,#0FH CJNE A,#0FH,LOOP ;有外部 中断请求,去LOOP ORL P1,#0FFH ;无中断请求,外部灯全灭 LJMP LOOP SJMP$;中断子程序;中断子程序 JB P1,0,L2 CLR P1.4L2:JB P1.1,L3 CLR P1.5L3:JB P1.2 L4 CLR P1.6L4:JB P1.3 L5 CLR P1.7L5:RETI END C语言程序语言程序#include reg51.h sbit P11=P11;sbit P12=P12;sbit P13=P13;s

26、bit P14=P14;sbit P15=P15;sbit P16=P16;sbit P17=P17;void extern0_IR(void)interrupt 1 p14=p10;p15=p11;p16=p12;p17=p13;void main(void)unsigned char c;IT1=1;EX0=1;EA=1;while(1)c=P1;c&=0 x0f;if(c=0 x0f)P1|0 xff;例例4.4 平时平时LED发光二极管处于全亮状态;发光二极管处于全亮状态;INT0外外中断控制二极管循环左移中断控制二极管循环左移8次;次;INT1外中断控制外中断控制二极管循环右移二极管

27、循环右移8次;并进行仿真实验次;并进行仿真实验汇编语言源程序:汇编语言源程序:ORG 0000H LJMP START ORG 0003H LJMP PINT0 ORG 0013H LJMP PINT1 ORG 0030HSTART:MOV SP,#30HSETB IT0 ;外部中断1为边沿触发方式 SETB IT1 ;外部中断1为边沿触发方式 SETB EX0 SETB EX1 SETB EA ;开放外部中断0和1 MOV IP,#04H ;外部中断1为高优先级 LOOP:MOV P1,#00H ;灯全亮 SJMP LOOP ;等中断;INT0中断服务子程序 PINT0:PUSH PSW C

28、LR RS1 SETB RS0 MOV R1,#8 MOV A,#0FEH ;置灯的初态置灯的初态 LP0:MOV P1,A LCALL DELAY RL A ;循环左移;循环左移 DJNZ R1,LP0 POP PSW RETI;INT1中断服务子程序中断服务子程序PINT1:PUSH PSW SETB RS1 CLR RS0 MOV R1,#8 MOV A,#07FH ;置灯的初态;置灯的初态 LP1:MOV P1,A LCALL DELAY RR A ;循环右移;循环右移 DJNZ R1,LP1 POP PSW RETI;延时子程序;延时子程序 略略 C程序程序#include“reg5

29、1.h /定定 8051接触器的头文件接触器的头文件void pint1(void);void pint1(void);void delay(void);void main(void)IT0=1;IT1=1;/外部中断外部中断0、1为边沿触发方式为边沿触发方式 EX0=1;EX1=1;EA=1;/开放外部中断开放外部中断0和和1 IP=0 x04;/外部中断外部中断1为高优先级为高优先级 while(1);P1=0 x00;delay()/灯全亮灯全亮/INT0中断服务子程序中断服务子程序 void pint0(void)interrupt 0 int,i;P1=0 xfe;/置灯的初态置灯的

30、初态 for(i=0,i7,i+)delay(void);P1=P11;/循环左移循环左移 /INT1中断服务子程序中断服务子程序 void pint1(void)interrupt 2 int,i;P1=0 x7f;/置灯的初态置灯的初态 for(i=0,i1;/循环右移循环右移delay(void);/延时子程序延时子程序 略略 仿真实验仿真实验图图4.16 例题例题4.4 仿真图仿真图4.3 定时定时/计数器的结构和原理计数器的结构和原理 8051内部提供两个十六位的定时器/计数器T0和T1 启动控制振荡器TX端TFX中断12方式控制可重置初值加1计数器 1计数功能:计数功能:所谓计数功

31、能是指对外部脉冲进行计数。外部脉所谓计数功能是指对外部脉冲进行计数。外部脉冲从单片机的冲从单片机的T0(P3.4)和和T1(P3.5)两个引脚输入,两个引脚输入,最高计数脉冲频率为晶振频率的最高计数脉冲频率为晶振频率的1/24。2定时功能定时功能:以定时方式工作时,计数输入信号是内部时钟脉以定时方式工作时,计数输入信号是内部时钟脉冲,每个机器周期使计数器加冲,每个机器周期使计数器加1,所以,计数频,所以,计数频率是振荡频率的率是振荡频率的1/12,4.3.2定时定时/计数器的工作方式选择及控制计数器的工作方式选择及控制1.方式控制寄存器方式控制寄存器TMODTMOD(89H)B7B7B6B6B

32、5B5B4B4B3B3B2B2B1B1B0B0GATEGATEC CT TM1M1M0M0GATEGATEC CT TM1M1M0M0工作方式选择位工作方式选择位M1、M0M1M0工作方式工作方式功能描述功能描述00方式0初值寄存器TL的低5位与TH的8位构成13位计数器01方式方式116位计数器位计数器10方式2自动重新装入初值的8位计数器12方式方式3仅用于仅用于T0,分为两个,分为两个8位计数器,位计数器,T1停止工作停止工作门控位:门控位:GATE。GATE=0:软件启动定时器,使软件启动定时器,使TRx置置1即可启动定即可启动定时器。时器。GATE=1:软件和硬件共同启动定时器,除了

33、要使:软件和硬件共同启动定时器,除了要使TRx置置1外,外部中断请求信号输入端外,外部中断请求信号输入端INTx还必还必须输入高电平才能启动定时器。须输入高电平才能启动定时器。功能选择位:功能选择位:C/T。C/T=0时时,以定时器方式工作。,以定时器方式工作。C/T=1时时,以计数器方式工作。,以计数器方式工作。2.定时器控制寄存器定时器控制寄存器TCONTCON(88H(88H)8FH8FH 8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88HTF1TF1 TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0 定时器启动控制位

34、定时器启动控制位:TR0、TR1 TRx=0,停止定时器,停止定时器/计数器计数器1工作。工作。TRx=1,启动定时器,启动定时器/计数器计数器1工作。工作。该位由软件置位和复位该位由软件置位和复位 定时器溢出中断标志位定时器溢出中断标志位:TF0、TF1 当定时当定时/计数器溢出时,由硬件自动置计数器溢出时,由硬件自动置1。使用查询方式时,。使用查询方式时,此位做状态位供此位做状态位供CPU查询,查询有效后需由软件清零;使用查询,查询有效后需由软件清零;使用中断方式时,此位做中断申请标志位,进入中断服务后被硬中断方式时,此位做中断申请标志位,进入中断服务后被硬件自动清零件自动清零 4.3.3

35、 定时器定时器/计数器的工作方式计数器的工作方式方式方式0(以定时器以定时器/计数器计数器T0为例为例)n定时寄存器由定时寄存器由TH0的的8位和位和TL0的低的低5位(高位(高3位不用)组位不用)组成一个成一个13位计数器。位计数器。n当当GATE=0时,只要时,只要TR0为为1,13位计数器就开始进行加位计数器就开始进行加1计数;当计数;当GATE=1以及以及TR0=1时,是否计数还取决于时,是否计数还取决于INT0引脚信号,当引脚信号,当INT0引脚为高电平时开始计数,当引脚为高电平时开始计数,当INT0为为低电平时停止计数。低电平时停止计数。n当定时器溢出时,初值寄存器当定时器溢出时,

36、初值寄存器TH0、TL0会自动清零,要会自动清零,要对它们重新装初值,否则,下次它们将从对它们重新装初值,否则,下次它们将从0开始进行加法开始进行加法计数。计数。n方式方式0为定时工作方式时,定时时间计算公式为:为定时工作方式时,定时时间计算公式为:t=(213 计数初值计数初值X)晶振周期晶振周期12 振荡器 12 分频 TH0(8 位)TL0(5 位)TF0 1&C/T=0 C/T=1 T0(P3.4)TR0 GATE INT0(P3.2)中断 1 图4.18 计数器0的方式0结构图 方式方式1n方式是16位的定时器/计数器,其余与方式0相同。n方式1的定时时间计算公式为:(216计数初值

37、)晶振周期12 振荡器 12 分频 TH0(8 位)TL0(8 位)TF0 1&C/T=0 C/T=1 T0(P3.4)TR0 GATE INT0(P3.2)中断 1 图4.19 计数器0的方式1结构图3、方式、方式2u它是一个能自动重装初值的它是一个能自动重装初值的8位定时器位定时器/计数器,计数器,u方式方式2是由是由TL0组成组成8位计数器,位计数器,TH0作为常数缓冲器。作为常数缓冲器。u当当TL0产生溢出时,一方面使溢出标志位产生溢出时,一方面使溢出标志位TF0置;同时硬件电路又置;同时硬件电路又把把TH0中的数据重新装入中的数据重新装入T0L中,重装初值后,中,重装初值后,TH0的

38、内容保持不变。的内容保持不变。u其定时时间为:其定时时间为:t=(28-T0初值)初值)晶振周期晶振周期12 重新装入 振荡器 12 分频 TL0(8 位)TH0(8 位)TF0 1&C/T=0 C/T=1 T0(P3.4)TR0 GATE INT0(P3.2)中断 1 图图4.20 计数器计数器0的方式的方式2结构图结构图4.方方 式式3 只有只有T0能够工作于这种方式,此时,能够工作于这种方式,此时,TL0和和TH0成为两个相互独立的成为两个相互独立的8位计数器位计数器,TL0占用了占用了全部全部T0的控制位和信号引脚,即的控制位和信号引脚,即GATE、CT、TR0、TF0等。而等。而TH

39、0只用作定时器使用。而且由只用作定时器使用。而且由于定时器于定时器/计数器计数器0的控制位已被的控制位已被TL0独占,因此独占,因此TH0只好借用定时器只好借用定时器/计数器计数器1的控制位的控制位TR1和和TF1进行工作。进行工作。图图4.21 计数器计数器0的方式的方式3结构图结构图4.3.4 定时定时/计数器的初始化计数器的初始化 定时定时/计数器作为一种可编程部件,在使用前,计数器作为一种可编程部件,在使用前,对其进行初始化,以确定其工作方式和功能。对其进行初始化,以确定其工作方式和功能。定时定时/计数器的初始化步骤计数器的初始化步骤确定定时确定定时/计数器的工作方式,并写入计数器的工

40、作方式,并写入TMOD。计算计数初值,并写入计算计数初值,并写入THx、TLx。如果使用中断方式,则开放定时如果使用中断方式,则开放定时/计数器的中断,计数器的中断,根据需要给根据需要给IE中的相关位赋值。中的相关位赋值。启动定时启动定时/计数器,给计数器,给TRx置置1。4.3.5 定时定时/计数器的应用举例计数器的应用举例例例4.5:设单片机晶振频率为设单片机晶振频率为12MHz,试用,试用T0在在P1.0端线输端线输出周期为出周期为1ms的方波脉冲如图所示,如用方式的方波脉冲如图所示,如用方式0分别以查询分别以查询方式和中断方式实现。并在仿真实验中用示波器观察输出方式和中断方式实现。并在

41、仿真实验中用示波器观察输出波形。波形。0.5msP1.080511ms图图4.22 例例4.5波形图波形图 计数初值计算。计数初值计算。由题意可得,只要从由题意可得,只要从P1.0口每隔口每隔500 s交替输出高交替输出高低电平即可得到周期为低电平即可得到周期为1ms的方波,所以的方波,所以T0的定时的定时时间为时间为500 s。得:。得:s500s12121x213 记数初值记数初值 X21350076921111000001100B 即即 TH0F0H,TL00CH依题意得依题意得(TMOD)00H(2)查询方式)查询方式 汇编语言源程序:汇编语言源程序:ORG 0000H AJMP MA

42、IN ;转向主程序。;转向主程序。ORG 0040H MAIN:MOV SP,#30H ;堆栈设置;堆栈设置。MOV TMOD,#00H ;TMOD初始化。初始化。MOV TH0,#0F0H MOV TL0,#0CH ;设置计数初值。;设置计数初值。MOV IE,#00H ;禁止中断。;禁止中断。SETB TR0 ;启动;启动T0。LOP:JBC TF0,LOOP1 ;查询等待;查询等待 AJMP LOP ;继续查询。;继续查询。LOOP1:MOV TH0,#0F0H ;重新设置计数初值。;重新设置计数初值。MOV TL0,#0CH CPL P1.0 ;输出状态翻转;输出状态翻转。AJMP L

43、OP ;返回;返回LOOP END C语言程序语言程序#include reg51.h /定义定义8051寄存器的头文件寄存器的头文件 sbit P10=P10;void time0(void)p10=p10;/输出状态翻转输出状态翻转 TH0=0 xF0;/重新设置计数初值。重新设置计数初值。TL0=0 x0C;void main(void)TMOD=0 x00;/TMOD初始化。初始化。TH0=0 xF0;TL0=0 x0C;/设置计数初值。设置计数初值。EA=0;/禁止中断禁止中断。TR0=1;/启动启动T0。while(1)while(TF0=0);time0();(3)用中断方式编写

44、程序)用中断方式编写程序汇编语言源程序:汇编语言源程序:ORG 0000H AJMP MAIN ;转向主程序。;转向主程序。ORG 000BH ;T0中断服务程序固定入口地址。中断服务程序固定入口地址。AJMP ZD ;转向;转向T0中断服务程序。中断服务程序。ORG 0040H MAIN:MOV SP,#30H ;设置堆栈指针。;设置堆栈指针。MOV TMOD,#00H ;TMOD初始化初始化。MOV TH0,#0F0H ;设置计数初值。;设置计数初值。MOV TL0,#0CH SETB ET0 ;开放;开放T0中断。中断。SETB EA ;开放总中断。;开放总中断。SETB TR0 ;启动

45、;启动T0。HERE:AJMP HERE ;等待中断。;等待中断。ZD:CPL P1.0 ;输出取反。;输出取反。MOV TH0,#0F8H ;重新设置计数初值。;重新设置计数初值。MOV TL0,#06H RETI ;返回;返回。ENDC语言程序语言程序#include reg51.h /定义定义8051寄存器的头文件寄存器的头文件 sbit P10=P10;void time0(void)interrupt 1 p10=p10;/输出状态翻转输出状态翻转TH0=0 xF0;/重新设置计数初值重新设置计数初值。TL0=0 x0C;void main(void)TMOD=0 x00;/TMOD

46、初始化初始化。TH0=0 xF0;TL0=0 x0C;/设置计数初值设置计数初值。ET0=1 EA=1;/禁止中断。禁止中断。TR0=1;/启动启动T0。while(1););(4)仿真实验)仿真实验 p1.0XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113

47、P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC130pR110kC410ufC230pABCDp1.0V=4.99502图图4.23 例例4.5仿真图仿真图图图4.24 仿真中用示波器观察到的波形图仿真中用示波器观察到的波形图4.4 串行接口串行接口4.4.1 串行通信基本知识串行通信基本知识1、串行通信的传送方式单工方式单工方式n单工方式是指甲乙双方通信时只能单向传送数据,单

48、工方式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定发送方和接收方固定。图4.25 单工方式 半双工方式半双工方式 半双工方式是指通信双方都有自己的发送器和半双工方式是指通信双方都有自己的发送器和接收器,既可发送也可接收,但不能同时接收和接收器,既可发送也可接收,但不能同时接收和发送。发送。图图4-22 半双工方式半双工方式 全双工制式全双工制式 全双工制式是指通信双方均有发送器和接收全双工制式是指通信双方均有发送器和接收器,并且信道划分为发送信道和接收信道,因此器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,全双工制式可实现甲乙双方同时发送和接收

49、数据,发送时能接收,接收时也能发送。发送时能接收,接收时也能发送。图图4.27 双工方式双工方式(2)同步和异步通信同步和异步通信(1)同步通信同步通信:在数据块传送开始时先发送在数据块传送开始时先发送12个同步字符,个同步字符,并由同时传送的时钟信号来实现发送端和接收端并由同时传送的时钟信号来实现发送端和接收端同步,即接受方检测到规定的同步字符后,接着同步,即接受方检测到规定的同步字符后,接着就连续按顺序传送数据。就连续按顺序传送数据。数数据据数数据据同同步步字字符符1同同步步字字符符2数数据据流流图图4.28 同步通信数据帧格式同步通信数据帧格式(2)异步通信异步通信n异步通信中,数据按字

50、符组成字符帧。字符发送端一帧一异步通信中,数据按字符组成字符帧。字符发送端一帧一帧地发送,接收端一帧一帧地接收。帧地发送,接收端一帧一帧地接收。n异步通信以字符为传送单位,用起始位和停止位标识每个异步通信以字符为传送单位,用起始位和停止位标识每个字符的开始和结束。字符的开始和结束。n发送端和接收端可以由各自的时钟来控制数据的发送和接发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,并不要求同步,收,这两个时钟源彼此独立,并不要求同步,0/10/10/10/10/1100/10/10/10/10/10/1100/1停停止止位位起起始始位位8位位数数据据校校验验位位停停止

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第4章MCS-51功能模块的编程与仿真讲义课件.ppt(102页))为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|