版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机接口技术第六章第1页,课件共56页,创作于2023年2月内容概述本章主要介绍8051单片机的内部资源的结构及使用方法。主要内容有并行输入输出(I/O)端口的结构及功能,定时/计数器结构、工作原理及使用,中断的概念、中断系统的结构与中断响应过程及相关程序设计,串行口的结构、工作方式与控制等。第2页,课件共56页,创作于2023年2月教学目标1.了解并行输入输出(I/O)端口的结构及功能,关键是P0口的地址、数据分时复用、P2口的地址总线功能、P3口的第二功能,掌握P0、P1、P2、P3端口的操作方法。2.了解定时/计数器结构,理解其工作原理,领会定时器、计数器的本质区别在于计数的脉冲来源的不同。掌握定时/计数器的四种工作方式及TMOD、TCON两个寄存器的控制作用,掌握定时/计数时间常数的计算方法,在此基础上进行定时/计数器的初始化与应用。3.了解中断的概念、8051单片机中断系统的结构,理解中断响应过程,掌握中断允许寄存器IE、中断优先级控制寄存器IP的控制方法,在此基础上实现中断服务程序的C51程序设计。4.了解了解单片机串行端口的结构、工作方式,掌握通信速率的概念,能根据通信速率bps设置定时器的时间常数,理解SCON寄存器中每一位的含义,能根据要求进行串行通信的初始化工作,完成简单的双机通信程序设计。第3页,课件共56页,创作于2023年2月6.1输入/输出(I/O)端口MCS-51单片机有4个双向并行的8位I/O口P0~P3,P0口为三态双向口,可驱动8个TTL电路,P1、P2、P3口为准双向口(作为输入时,口线被拉成高电平,故称为准双向口),其负载能力为4个TTL电路。第4页,课件共56页,创作于2023年2月6.1.1并行I/O口结构及功能1. P0口的结构关键理解P0口的作用,既可作普通I/O口,又用来作地址/数据总线,分时复用。第5页,课件共56页,创作于2023年2月2.P1口结构P1端口是单片机中唯一仅有单功能的I/O端口,输出信号锁存在端口上,故又称为通用静态端口。第6页,课件共56页,创作于2023年2月3.P2口的结构与P1口比较,P2口多了转换控制部分。P2口除了可以作普通I/O口使用,还可以作为地址总线的高8位。第7页,课件共56页,创作于2023年2月4.P3口的结构P3口的一位结构如图6-1-4所示。和P1口比较,P3口增加了一个与非门和一个缓冲器,使其各端口线有两种功能选择。
第8页,课件共56页,创作于2023年2月6.1.2应用实例例6-1在单片机P1.0~P1.2三根口线上分别接有三个发光二极管,要求编程实现三个发光二极管循环依次闪亮。第9页,课件共56页,创作于2023年2月源程序#include<reg51.h>voidDelay(void);sbitP1_0=P1^0;sbitP1_1=P1^1;sbitP1_2=P1^2;voidmain(void){while(1){P1_1=0;P1_1=1;P1_2=1;//P1.0对应的LED亮Delay();P1_1=1;P1_1=0;P1_2=1;//P1.1对应的LED亮Delay();P1_1=1;P1_1=1;P1_2=0;//P1.2对应的LED亮Delay();}}//延时子程序voidDelay(void){inti;for(i=0;i<10000;i++);}第10页,课件共56页,创作于2023年2月6.2定时器/计数器定时器/计数器简称定时器,8051系列单片机有2个16位的定时器/计数器:定时器0(T0)和定时器1(T1)。8052系列单片机增加了一个定时器T2。它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。第11页,课件共56页,创作于2023年2月6.2.1定时/计数器结构T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。作定时器时,定时器计数8031片内振荡器输出经12分频后的脉冲,即每个机器周期使定时器(T0或T1)的寄存器自动加1直至计满溢出。所以定时的分辨率是时钟振荡频率的1/12。作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。不论是定时或是计数工作方式,定时器T0或T1都不占用CPU时间,除非定时器/计数器溢出,才可能中断CPU的当前操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。第12页,课件共56页,创作于2023年2月6.2.2定时器/计数器工作方式
6.2.2定时器/计数器工作方式除可选择定时或计数工作方式外,每个定时器/计数器还有4种工作模式。模式0、1和2,T0和T1的工作模式相同,在模式3,两个定时器的模式不同。第13页,课件共56页,创作于2023年2月1模式0图6-2-1定时/计数器T1(T0)工作模式0由TL1的低5位和TH1的8位构成13位计数器。定时器启动后,定时或计数脉冲加到TL1,从预先设置的初值(时间常数)开始不断增1。TL1计满后向TH1进位,直至13位寄存器计满溢出。溢出时,13位寄存器清0。TF1置位并申请中断。如需进一步定时/计数,需用指令重置时间常数。模式0的结构如图6-2-1。第14页,课件共56页,创作于2023年2月2模式1模式1和模式0几乎完全相同,唯一的差别是:模式1中,定时器寄存器TH1和TL1组成16位计数器参与操作,从而比模式0有更大的定时/计数范围。模式1的结构见图6-2-2。图6-2-2定时/计数器T1(T0)工作模式1第15页,课件共56页,创作于2023年2月4模式3由于定时器T1无操作模式3。若将T0设置为模式3,TL0和TH0被分成为两个互相独立的8位计数器,如图6-2-4所示。图6-2-4定时/计数器T1(T0)工作模式3第16页,课件共56页,创作于2023年2月6.2.3定时/计数器的控制寄存器定时器共有2个控制寄存器TMOD和TCON,由软件写入TMOD和TCON两个8位寄存器,设置各个定时器的操作模式和控制功能。第17页,课件共56页,创作于2023年2月1工作模式控制寄存器——TMOD(89H)TMOD在特殊功能寄存器中。TMOD的格式如图6-2-5所示。
第18页,课件共56页,创作于2023年2月2定时器控制寄存器——TCON(88H)定时器控制寄存器除可字节寻址外,各位还可位寻址。第19页,课件共56页,创作于2023年2月6.2.4定时/计数常数的计算1初始化步骤在使用8051的定时器/计数器前,应对它进行初始化编程,主要是对TCON和TMOD编程,计算和装载计数初值(也称做时间常数)。一般完成以下几个步骤:1)确定T/C的工作方式——编程TMOD寄存器;2)计算T/C中的计数初值,并装载到THx和TLx;3)T/C在中断方式工作时,须开CPU中断和源中断——编程IE寄存器;4)启动定时器/计数器——编程TCON中TRl或TR0位。第20页,课件共56页,创作于2023年2月2计数初值的计算定时器/计数器工作时必须给计数器设置计数器初值,这个计数器初值是送到TH(TH0/TH1)和TL(TL0/TL1)中的时间常数。把计数器计满为零所需要的计数值(或脉冲个数)设定为C,计数初值设定为TC,由此便可得到如下的计算公式:
TC=M-CM为计数器模值,该值和计数器工作方式有关。在方式0时M为
;在方式1时M为;在方式2和方式3时M为。也可以理解为TC为所需脉冲个数按位取反再加1,即TC=+1第21页,课件共56页,创作于2023年2月6.2..5应用实例例6-2-1:若单片机时钟频率为12MHZ,计算定时2ms所需的定时器初值。解:由于定时器工作在方式2和方式3下时的最大定时时间只有0.256ms,因此要想获得2ms的定时时间定时器必须工作在方式0或方式1。T计数=12/12=1μs则定时所需脉冲个数为2ms/1μs=2000个。若采用方式0,则定时器的初值为:TC=-2000=6192=1830H=1100000110000B即:TH0应装C1H;TL0应装10H(TL1只用低5位,高3位填0)。若采用方式1,则定时器的初值为:TC=216-2000=63536=F830H即:TH0应装F8H;TL0应装30H。第22页,课件共56页,创作于2023年2月例6-2-2在例6-2-1的基础上,要求从P1.1引脚输出周期为4ms的方波。解:此处采用定时器0定时,通过查询TF0状态检查定时时间是否已到。由上例计算已知,定时器定时周期为2ms,TH0=F8H;TL=30H。第23页,课件共56页,创作于2023年2月C51源程序#include<reg51.h>//805I系列的寄存器头文件sbitP1_1=P1^1;voidmain(void){TMOD=0x01;//定时器0方式1TH0=0xf8;TL0=0x30;//装入时间常数TR0=1;//启动定时器while(1){while(!TF0);//查询TF0状态,时间未到则空等待P1_1=!P1_1;//P1.1取反TH0=0xf8;TL0=0x30;//装入时间常数}}第24页,课件共56页,创作于2023年2月6.3中断6.3.1中断的基本概念当CPU正在处理某件事情时,外部发生了某一事件(如定时器/计数器溢出,被监视电平突变等)请求CPU迅速去处理,于是CPU暂时中断当前的工作,转去处理所发生的事件;中断服务处理完成后,再回到原来被中断的地方,继续原来的工作。这一过程称为中断,如图6-3-1所示。图6-3-1中断流程第25页,课件共56页,创作于2023年2月8051的中断系统能处理中断的功能部件称为中断系统,能产生中断请求的源称为中断源。8051单片机中断系统的基本特点是:有5个固定的中断源,3个在片内,2个在片外。它们在程序存储器中各有固定的中断入口地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形成中断嵌套;2个特殊功能寄存器用于中断控制的编程。对于8052单片机来说,则多一个中断源定时器T/C2。第26页,课件共56页,创作于2023年2月8051的中断源外部中断源:由P3.2端口线引入,低电平或下降沿引起。由P3.3端口线引入,低电平或下降沿引起。这两个外部中断源和它们的触发方式控制位锁存在特殊功能寄存器TCON的低4位。内部中断源:T0:定时器/计数器0中断,由T0回零溢出引起。T1:定时器/计数器1中断,由T1回零溢出引起。TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。这3个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中。第27页,课件共56页,创作于2023年2月6.3.2中断系统的结构第28页,课件共56页,创作于2023年2月6.3.3中断的控制1中断允许寄存器IE(A8H)IE在特殊功能寄存器中,字节地址A8H,位地址(由低位到高位)分别是A8H~AFH。IE控制CPU对中断源总的开放或禁止以及每个中断源是否允许中断。第29页,课件共56页,创作于2023年2月2中断优先寄存器IP(B8H)IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H~BFH,IP用来锁存各中断源优先级的控制位,即设定中断源属于两级中断中的哪一级(用户可用软件设定)
第30页,课件共56页,创作于2023年2月中断优先级的响应系统复位后,IP低5位全部清零,并将所有中断源设置为低优先级中断。如果几个同优先级的中断源同时向CPU申请中断,哪一个申请得到服务,取决于它们在CPU内部登记排队的序号。CPU通过内部硬件查询登记序号,按自然优先级响应各个中断请求。其内部登记序号是由硬件形成的,先后顺序如下:→T0→→T1→RI/TI第31页,课件共56页,创作于2023年2月6.3.4中断响应过程及中断入口地址
下列任何一种情况存在时,中断申请将被封锁。(1)CPU正在执行一个同级或高一级的中断服务程序;(2)当前正在执行的那条指令还未执行完;(3)当前正在执行的指令是RETI或对IE,IP寄存器进行读/写指令,执行这些指令后至少再执行一条指令才会响应中断。第32页,课件共56页,创作于2023年2月中断入口地址中断得到响应后,自动清除中断请求标志(对串行口中断请求标志,要用软件清除),由硬件自动将程序计数器PC内容(断点地址)压入堆栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向该中断矢量地址单元中,去执行相应的中断服务程序。各个中断源在程序存储器中的中断入口地址如下:中断源 入口地址外部中断0 0003H定时器0溢出 000BH外部中断1 0013H定时器1溢出 001BH串行口 0023H第33页,课件共56页,创作于2023年2月6.3.5C51中断程序设计C51编译器支持在C源程序中直接嵌入中断服务程序,C51提供的中断函数定义语法如下:
返回值类型函数名interruptnn对应中断源的编号,KeilC51支持最大值为31。
voidtimer0(void)interrupt1//定时器0中断服务程序,中断号为1{
……;}KeilC51编译器用特定的编译器指令分配奇存器组。当前工作寄存器由PSW中RS1、RS0两位设置用using指定,“using”后的变量为一个0~3的整数。“using”只允许用于中断函数,它在中断函数入口处将当前寄存器组保留,并在中断程序中使用指定的寄存器组,在函数退出前恢复原寄存器组。
第34页,课件共56页,创作于2023年2月中断函数的完整语法如下:返回值函数名([参数])[模式][重入]interruptn[usingm]
m、n为正整数,不允许使用表达式。n取值范围0~31,对应该中断源的编号。通常对普通8052系列单片机来说,外部中断0、定时器0、外部中断1、定时器1、串口、定时器2的中断源编号依次为0、1、2、3、4、5。m取值范围0~3。例如:voidserial_serviceinterrupt4using2{
……;}第35页,课件共56页,创作于2023年2月C51中断服务程序的注意事项:1)若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭CPU对中断的响应,在中断返回前再开放中断。2)注意外部电平触发的中断不锁存。若在外部电平出现时被中断屏蔽,而在中断识别之前电平消失,它被完全忽略——中断处理本身不能锁存外部电平请求。3)外部中断0、1及定时器0、1的中断申请标志在CPU响应中断后会自动清0,但串行口中断标志TI/RI及定时器2的中断申请标志TF2不会自动清0,必须在中断服务程序中用软件清0,否则会立即产生重复中断,程序会陷入死循环。对于串口中断,通常要判别是RI或TI中断。4)为提高中断响应的实时性,中断服务程序应尽量简短,并避免使用复杂变量类型及复杂算术运算。通常在中断服务程序中使用一些标志,由主程序或相应背景程序根据对应的标志作相应的处理。
第36页,课件共56页,创作于2023年2月例6-3-1在例6-2-2的基础上,要求从P1.1引脚输出周期为4ms的方波。解:与例6-2-2不同的是,此处对定时器0采用中断方式编程。C51源程序如下:第37页,课件共56页,创作于2023年2月C51源程序#include<reg51.h>sbitP1_1=P1^1;voidtimer0(void)interrupt1//定时器0中断服务程序{TH0=0xf8;TL0=0x30;//装入时间常数 P1_1=!P1_1;//P1.1取反}voidmain(void){TMOD=0x01;//定时器0方式1TH0=0xf8;TL0=0x30;//装入时间常数TR0=1;//启动定时器 TF0=0; EA=1;//开全局中断ET0=1;//开定时器0中断while(1);//主程序死循环,空等待}第38页,课件共56页,创作于2023年2月6.4串行口MCS-51内部有一个可编程的全双工串行通信接口,该串行口有4种工作方式,以供不同场合使用。波特率可由软件设置,由片内的定时器/计数器产生。接收、发送均可工作在查询方式或中断方式,使用十分灵活。第39页,课件共56页,创作于2023年2月6.4.1 串行口的结构与控制MCS-51单片机内部的串行口有两个物理上独立的接收、发送缓冲器SBUF,可同时接收和发送数据。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。两个缓冲器占用同一个地址(99H)。控制MCS-51单片机串行口的控制寄存器共有两个,即特殊功能寄存器SCON和PCON。第40页,课件共56页,创作于2023年2月6.4.1.1串行口控制寄存器SCONSM0、SM1:控制串行口的工作方式。SM2:允许方式2和方式3进行多机通信控制位。REN:允许串行接收控制位。REN=1,允许接收。TB8:是工作在方式2和方式3时要发送的第9位数据,根据需要由软件置位和复位。RB8:是工作在方式2和方式3时接收到的第9位数据。TI:发送中断标志位。必须由软件清零。RI:接收中断标志位。必须由软件清零。第41页,课件共56页,创作于2023年2月6.4.1.2.特殊功能寄存器PCONSMOD:波特率倍增位。当SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。GF1、GF0:两个通用标志位,用户使用。。第42页,课件共56页,创作于2023年2月PD、IDL
CHMOS型8051单片机的低功耗控制位当将PD置1的指令执行后,80C51进入掉电方式,此时片内振荡器停止工作,仅片内RAM内容被保持,SFR内容也被破坏。掉电方式下Vcc可降到2V,耗电仅50μA。退出掉电方式唯一方法是硬件复位。应当保证进入掉电方式前Vcc不降下来,在通过硬件复位退出掉电方式之前应当先保证Vcc恢复到正常值。当将IDL位置1指令执行后,80C51进入节电方式。这时供给CPU的时钟信号被切断,但时钟信号仍送给片内RAM、定时器、中断系统和串口,同时CPU状态被保存,即堆栈指针、程序计数器PC、程序状态字PSW、累加器ACC及通用寄存器的内容。节电方式下Vcc仍为5V,但耗电从24mA降到3.7mA。退出掉电方式有两种,一种是任一中断被激活,一种是硬件复位,前者较为常用。第43页,课件共56页,创作于2023年2月6.4.2 串行口的工作方式串行接口的工作方式有四种,由SCON中的SM0、SM1定义,编码及功能如表6-4-1。在这四种工作方式中,串行通信只使用方式1,方式2,方式3。方式0主要用于用串口扩展并行口。第44页,课件共56页,创作于2023年2月1方式0在方式0状态下,串行口为同步移位寄存器输入/输出方式,其波特率固定不变为fosc/12。数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端输出,发送、接收的是8位数据,低位在先。第45页,课件共56页,创作于2023年2月2方式1当SCON中的SM0SM1=01时,串行口以工作方式1工作,此时串行口为8位异步通信接口。下图为方式1发送时序。第46页,课件共56页,创作于2023年2月3方式2当SM0SM1=10时,串行口工作在方式2,发送和接收的一帧信息由11位组成,即1位起始位、8位数据位(低位在先)、1位可编程位(第9位数据位)和1位停止位。TB8根据需要设为0或1,作为多机通信中的地址数据标志位或数据的奇偶校验位。第47页,课件共56页,创作于2023年2月4方式3
当SM0SM1=11时,串行口工作在方式3。方式3为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2相同。方式3的波特率由下式确定:第48页,课件共56页,创作于2023年2月6.4.3 波特率的计算注:若SMOD=0,则K=1;若SMOD=1,则K=2
第49页,课件共56页,创作于2023年2月常用的波特率及计算器初值
第50页,课件共56页,创作于2023年2月6.4.4串行口初始化在使用串行口之前,应对它进行编程初始化,主要是设置产生波特串的定时器1、串行口控制和中断控制。具体步骤如下:1)确定定时器l的工作方式——编程TMOD寄存器;2)计算定时器l的初值——装载THl、TL13)启动定时器1——编程TCON中的TRl位;4)确定串行口的控制——编程SCON;5)串行口在中断方式工作时,须开CPU和源中断——编程IE寄存器。第51页,课件共56页,创作于2023年2月6.4.5应用实例例6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平安理财2027届暑期实习生招聘备考题库含答案详解(完整版)
- 2026中铁工程设计咨询集团有限公司社会招聘10人备考题库附答案详解(综合卷)
- 2026天津市宁河区图书馆就业见习基地招聘备考题库及答案详解(典优)
- 无人机行业应用(航测)电子教案 1.5 测绘常用无人机
- 2026四川省绵阳市卫生健康委员会直属事业单位招聘43人备考题库及参考答案详解
- 2026重庆奉节县竹园镇人民政府公益性岗位招聘备考题库附答案详解(典型题)
- 2026江西赣湘产业投资集团有限公司招聘7人备考题库附答案详解(培优a卷)
- 2026新疆阿拉尔市拓华国有资产经营有限责任公司招(竞)聘高层管理人员5人备考题库(含答案详解)
- 2026“才聚齐鲁 成就未来”山东黄河生态发展集团有限公司招聘10人备考题库含答案详解(完整版)
- 2026北京大学生命科学学院陈玥舟课题组招聘科研助理1人备考题库及一套完整答案详解
- 2026年超星尔雅学习通《艺术美学》章节考试题库含答案详解【培优A卷】
- 西北工业大学附属中学2026届高三下学期第十一次适应性训练数学试卷(含答案)
- 2026福建龙岩新罗区西陂社区卫生服务中心招聘非在编工作人员5人笔试备考题库及答案解析
- 临电施工方案编写
- 2026 年逻辑思维(逻辑思考)试题及答案
- 8人之初 课件(共34张)
- 2026黑龙江省疾病预防控制中心招聘19人考试参考题库及答案解析
- 2026年田园综合体一二三产融合项目申报要点
- 低压电工资格证考试题库(附答案)
- 室内给水管道及配件安装工程检验批质量验收记录表
- 奔驰GLK汽车说明书
评论
0/150
提交评论