片机的片内资源.ppt
《片机的片内资源.ppt》由会员分享,可在线阅读,更多相关《片机的片内资源.ppt(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 单片机的片内资源单片机的片内资源3.1 3.1 计数器与定时器计数器与定时器3.2 MCS-513.2 MCS-51的中断系统的中断系统3.3 3.3 串行通信接口串行通信接口3 31 1 计数器与定时器计数器与定时器3.1.1 3.1.1 定时定时/计数器的模式和控制寄存器计数器的模式和控制寄存器3.1.2 3.1.2 定时技术器的工作方式定时技术器的工作方式3 31 13 3定时器定时器/计数器计数器2 23.1.4 3.1.4 定时器定时器0/10/1应用举例应用举例3.1.5 AT89S513.1.5 AT89S51单片机的看门狗单片机的看门狗3 32 MCS-512
2、MCS-51的中断系统的中断系统 3.2.1 3.2.1 中断的响应过程中断的响应过程 3.2.2 3.2.2 中断处理流程中断处理流程 3.2.3 MCS-513.2.3 MCS-51的中断源的中断源3.3 3.3 串行通信接口串行通信接口 3 33 31 1 串行口控制寄存器串行口控制寄存器SCONSCON3 33 32 2 模式模式0 03 33 33 3 模式模式 1 13 33 34 4 模式模式2 2和和3 33 33 35 5 多处理机通信多处理机通信3.3.6 3.3.6 串行帧串行帧3.3.7 3.3.7 波特率波特率3 31 1 计数器与定时器计数器与定时器3.1.1 3.
3、1.1 定时定时/计数器的模式和控制寄存器计数器的模式和控制寄存器 51系列单片机有两个定时器/计数器分别叫做T1、T0。T1除了可以作串行通信的波特率发生器而T0不能外,T1、T0其它功能相同。这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536,单片机中的计数器除了可以作为计数之用外,还可以用作定时器用,定时器的应用很广泛,如打铃器,电视机定时关机,空调定时开关等,如将一个闹钟定时在1个小时后闹响,也可以说是秒针走了(3600)次,这样时间就转化为秒针走的次数的,也就是计数的次数了,计数的次数和时间之间的确十分确定。如果计数脉冲的间隔相等
4、,则计数值就代表了时间的流逝。因此,单片机中的定时器和计数器本质上是一样的,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个稳定的计数源。由单片机的时钟信号通过12分频后获得的一个脉冲源。当计数器加满后再加1就会产生进位,这种进位称之溢出。计数器溢出后将使得TF0变为“1”。计数器的容量是16位,也就是最大的计数值到65535,因此计数计到65536就会产生溢出。现实生活中,通常计数值都少于65536个数,如一打为12瓶,一瓶药片为100粒,如果要计100个数,在计数器中可先放进预置65436个数,再来100个脉冲就到了65536了。现代单片机的定时计数器已经有很大的发展,除了
5、定时计数外还具有了输入捕捉,输出比较,PWM(脉宽调制器)等一系列的功能,由于功能已经不局限于计数定时,故通常称之为计数定时单元。图3-1定时/计数器的工作方式控制 C/定时器1定时器0D7D6D5D4D3D2D1D0CATEM1M0GATEc/T M1M0门控位置1时只有在INTl脚为高及TRl控制位置1时才可打开定时器计数器1。=1,则T0为计数器模式。0013位定时器计数器,兼容8048定时器模式,TLl只用低5位参与分频,THl整个8位全用。参见定时器1部分0116位定时器计数器,TLl、THl全用108位自动重装载定时器,当溢出时将THl存放的值自动重装入TLl11这种工作方式之下,
6、定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。定时器计数器1此时定时器1可做波特率发生器表3-1 TMOD 寄存器的各位功能可位寻址76543210复位值:00HTFlTRlTF0TR0IE1IT1 IE0IT0位符号功能TCON7TFl 定时器计数器1溢出标志位。当T1被允许计数后,T1从初值开始加1计数,最高位产生溢出时,TFl置“1”,并向CPU请求中断,当CPU响应时,TFl由硬件清“0”,TFl也可以由程序查询或清“0”。TCON6TRl定时器T1的运行控制位。该位由软件置位和清零。当GATE(TMO
7、D7)=0,TR1=1时就允许T1开始计数,TR1=0时禁止T1计数。当GATE(TMOD7)=1,TR1=1且INTl输入高电平时,才允许T1计数。表3-2 定时计数器控制寄存器 TCONTCON5 TF0定时器计数器。溢出标志位。当TO被允许计数后,TO从初值开始加1计数,最高位产生溢出时,TF0置“1”,并向CPU请求中断,当CPU响应时,TF0由硬件清“0”,TF0也可以由程序查询或清“0”。TCON4 TR0定时器T0的运行控制位。该位由软件置位和清零。当GATE(TMOD3)=0,TR0=1时就允许T0开始计数,TR1=0时禁止T0计数。当GATE(TMOD3)=1,TR0=1且I
8、NT0输入高电平时,才允许TO计数。TCON3 IE1外部中断1中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件自动将IE1位清0。TCON2 IT1外部中断1触发方式控制位。ITl=0时,外部中断1为低电平触发方式,当INTl(P3.3)输入低电平时,置位1El。采用低电平触发方式时,外部中断源(输入到INTl必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行完之前,外部中断源必须被清除(P33要变高),TCON2 IT1否则将产生另一次中断。当1T1=1时,则外部中断1(INTl)端口由“1”到“0”下降沿跳变,激活中断请求标志位IEl,向CPU请求中断
9、处理。TCON1 IE0外部中断。中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件自动将IE0位清0。TCON0 IT0外部中断。触发方式控制位。IT0=0时,外部中断。为低电平触发方式,当INT0(P3 2)输入低电平时,置位IE0。采用低电平触发方式时,外部中断源输入到INT0必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行完之前,部中断源必须被清除(P32要变高),否则将产生另一次中断。当IT0=1时,则外部中断0(INT0)端口由“1”到“0”下降沿跳变,激活中断请求标志位IEl,向主CPU请求中断处理。TCON寄存器用来反映定时/计数器的状态及对
10、定时/计数器进行控制。3.1.2 3.1.2 定时技术器的工作方式定时技术器的工作方式(1)定时器/计数器的工作方式0 定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。13位模式只是为48系列兼容而设计的一种工作式,一般不用。该13位寄存器包含THn全部8个位及TLn的低5位。TLn的高3位不定,可将其忽略,如图32所示。图3-2 定时/计数器工作方式0图3-3 定时器/计数器的工作方式1(2)定时器/计数器的工作方式1工作方式1是16位的定时/计数方式,将M1、M0设为0、1即可,其它特
11、性与工作方式0相同,如图3-3所示。(3)定时器/计数器的工作方式2定时器/计数器的工作方式2,如图34所示。这种工作方式也称为自动加载方式。能够自动装入预置数,预置数存放在T(0/1)的高8位,这时高8位不参与计数。只有低8位参与计数,高8位不参与计数,用作预置数的存放,每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,预置数进入低8位。这是由硬件自动完成的,不需要由人工干预。通常这种工作方式用于波特率发生器。图3-4 定时器/计数器的工作方式2 自动装入预置数的工作方式(4)定时器/计数器的工作方式3这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以
12、构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记了,这时TL0还是用原来的T0的标记,而TH0则借用T1的标记。此时T1无标志位可用一般情况处,只有在T1以工作方式2运行(当波特率发生器用)时,T0才用于工作于方式3。在模式3时,定时器1停止计数将与TRl设置为0相同。定时/计数器工作方式3如图35所示。图3-5 定时器/计数器的工作方式3 3.1.3 3.1.3 定时器定时器/计数器计数器2 2 52单片机比51单多了一个定时器/计数器称之为定时器/计数器2是一个具
13、有16位自动重装载或捕获能力定时器/计数器。专用寄存器T2CON是它的控制寄存器。它的工作方式可分为两类,一类为定时器/计数器方式,另一为波特率发生器方式。特别现在的AT89C52/AT89S52等FLASH型52单片机中还可以用T2的溢出产生方波输出,同时还新增加了T2MOD,可以设置计数的方向,既可以加法计数,也可以减法计数。T2定时器工作方式下TL2和TH2计数的值是机器周期数。T2作计数器用时,外部计数脉冲由T2(P1.0)输入,52的定时器2有三种工作模式,分别是:捕捉模式:捕捉模式可记录事件发生的准确时间,如图36所示。自动加载模式:可实现16位的自动加载,如图37所示。波特率产生
14、器模式:主要用在串行通信上作波特率发生器和方波输出,如图39所示。定时/计数器2的控制寄存器有TC2ON和T2MOD,见表3-3所示和表3-4所示。TF2EXF2RCLKTCLKEXEN2TR2 T2CON.7定时2溢出标志必须软件清“0”。RCLK1或TCLK1时,TF2无效 T2CON.6定时器2外部标志位。EXEN21时,T2EX上的负跳变而出现捕捉或重载时,EXF2会被硬件置位。定时器2打开,EXF21时,将产生中断申请,执行定时器2中断程序。EXF2必须软件清“0”。在减计数模式(DCEN 1)下EXF2不能引起中断。T2CON.5 串行口接收数据时钟标志位。若RCLK=1,串行口将
15、使用定时器2溢出脉冲作为串行口工作模式1和3的串口接收时钟;RCLK=0,将使用定时器1计数溢出作为串口接收时钟。T2CON.4 串行口发送数据时钟标志位。若TCLK1,串行口将使用定时器2溢出脉冲作为串行口工作模式1和3的串口发送时钟;TCLK=0,将使用定时器1计数溢出作为串口发送时钟。T2CON.3定时器2外部允许标志位。当EXEN2 1时,如果定时器2没有用作串行时钟,T2EX(P1.1)的负跳变见引起定时器2捕捉和重载。若EXEN2=0,定时器2将视T2EX端的信号为无效 T2CON.2开始停止控制定时器2。TR21,定时器2开始工作1,选择计数器工作方式。外部事件计数为下降沿触发
16、0,当定时器2溢出或EXEN21时T2EX出现负跳变,都会出现自动重载操作。将引起T2EX的负脉冲。当RCKL1或T2出时,强制做自动重载操作。表33定时器计数器2控制寄存器T2CONT2OEDCENT2输出使能位计数器加/减控制位:0加;1减表34 T2MOD寄存器(C9H)装载寄存器RCAP2H和RCAP2L来实现的。TH2、TL2和RCAP2H、RCAP2L之间接有双向缓冲器(三态门)。当CP/=0时,选择自动重装载功能,即把RCAP2H和RCAP2L的数据自动装入TH1和TH2。当CP/=1时,选择捕获工作方式,数据传递方向与上述相反。捕获或重装载动作发生于下述2种情况下;(1)定时器
17、2的寄存器TH2和TL2溢出时,这时若CP/=0时,则打开重装的三态缓冲器,把RCAP2H和RCAP2L的内容自动装载到TH2和TL2中。同时,溢出标志TF2置1,申请中断。(2)当EXEN2=1且T2EX(P1.1)引脚的信号有负跳变时,这时根据CP/是0还是1,将发生捕获操作或重装载操作,同时标志EXF2置1,申请中断。若定时器/计数器2的中断是允许的,则无论发生TF2=1还是EXF2=1,CPU都会响应中断,此中断向量的地址为2BH。响应中断后,应靠软件清除中断申请,以免无休止地发生中断。TF2和EXF2都是直接可寻址位,可采用CLRTF2和CLREXF2指令实现撤除中断申请的功能。图3
18、-6定时/计数器2的捕捉模式图3-7定时器2的自动加载工作方式图3-8波特率发生器方式下的定时器/计数器2的逻辑图3.1.4 3.1.4 定时器定时器0/10/1应用举例应用举例 定时计数器需要完成的工作有:根据应用要求,通过程序初始化,正确设置控制字。正确计算和计算计数初值。编写中断服务程序,适时设置控制位。通常情况下,设置程序大致如下:(1)工作方式控制字(TMOD、T2CON)的设置;(2)计数初值的计算并装入THx、TLx、RCAP2H、RCAP2L;(3)中断允许位ETx、EA的设置,使主机允许中断;(4)启停位TRx的设置等。现以定时计数器0或1为例作一简要介绍。51系列单片机系列
19、单片机的定时器计数器0或1是加1计数器,因此,不能直接将实际的计数值作为计数初值送入计数寄存器THx、TLx中去,而必须将实际计数值以28、213、216为模求补,以其补码作为计数初值设置THx和TLx。若实际计数值为x,计数器长度为n(8、13、16),则应装入计数器THx、TLx中的计数初值为2nx,式中2n为取模值。例如,工作方式0的计数长度为13位,则n13,以213为模,工作方式1的计数长度为16,则n16,以216为模等等。所以,计数初值为(x)2nx。对于定时模式,是对机器周期计数,而机器周期与选定的时钟频率密切相关。因此,需根据应用系统所选定的时钟频率计算出机器周期值。若时钟为
20、6MHz为例,机器周期为 一个机器周期=12/6M=2us实际定时时间为Tc=xTp 式中Tp为机器周期,Tc为所需定时时间。Tp和Tp一般为已知值,在求出Tp后即可求得所需计数值x,再将x求补码,即求得定时计数初值。例31 设定时时间Tc=5ms,机器周期Tp=2us,可求得定时计数次数。设选用工作方式1,则n=16,则应设置的定时时间计数初值为:x=2500次 (x)补码216x655362500=63036,还需将它分解成两个8位十六进制数,分别求得低8位为3CH装入TLx,高8位为F6H装入THx中。工作方式0、1、2的最大计数次数分别为8192、65536和256。对外部事件计数模式
21、,只需根据实际计数次数求补后变换成两个十六进制码即可。例32 定时计数器应用编程,设某应用系统,选择定时计数器1定时模式,定时时间Tc=lms,主频频率为12MHz,每lms向主机请求处理。选定工作方式1。计算得计数初值:低8位初值为0F0H,高8位初值为0D8H。所谓初始化,一般在主程序中根据应用要求对定时计数器进行功能选择及参数设定等预置程序,本例初始化程序如下START:;主程序段MOV SP,#60H ;设置堆栈区域MOV TMOD,#10H ;选择T1,定时模式,工作方式1MOV TH1,0D8H ;设置高字节计数初值MOV TL1,#0F0H ;设置低字节计数初值SETB EA ;
22、开中断SETB ET1 ;其他初始化程序SETB TR1 ;启动T1开始计时 .;继续主程序中断服务程序INTT1:PUSH A ;现场保护 PUSH DPL ;PUSH DPH ;MOV TL1,#0F0H ;重新设置初值MOV TH1,#0D8H ;中断处理POP DPH ;现场恢复POP DPL ;POP A ;RETI ;返回INTTO MOV TMOD,09H;设T0为定时方式1,GATE为1MOV TL0,#00H ;TH0,TL0清0MOV TH0,#00H ;CLR EX0 ;关 LOP1:JB P3.2,LOP1 ;等待 引脚低电平LOP2:JNB P3.2,LOP2 ;等待
23、 引脚高电平SETB TR0 ;启动T0开始计数LOP3:JB P3.2,LOP3 ;等待 低电平CLR TR0 ;停止T0计数MOV A,TL0 ;低字节计数值送AMOV B,TH0 ;高字节计数值送BORG 0000HAJMP MAIN ;转主程序ORG 001BHLJMP INTER ;转T1中断服务程序ORG 0100 ;主程序入口MAIN:MOV SP,#60H ;设置堆栈区 MOV TMOD,#60H ;设置定时/计数器1,计数方式2 MOV TL1,#0FFH ;设置计数常数 MOV TH1,#0FFH SETB EA ;开中断 SETB ET1 ;开定时/计数器1中断 SETB
24、 TR1 ;启动定时/计数器1计数 中断程序(具体处理程序略)ORG 1000H INTER:PUSH A PUSH DPL PUSH DPH POP DPH POP DPL POP A RETI ;返回 这是中断服务子程序的基本形式。51系列单片机的中断属于矢量中断,每一个矢量中断源只留有8个字节单元,一般是不够用的,常需用转移指令转到真正的中断服务子程序区去执行。例33 测外部输入的脉冲宽度。选择定时计数器2进行脉宽测试较方便,但也可选用定时计数器0或定时计数器1进行测宽操作。本例选用定时计数器0(T0)工作在定时器方式模式,工作方式1对INT0引脚上的正脉冲进行脉宽测试。图310 脉宽测
25、试图设置GATE为1,机器周期Tp为1s。本例程序段编制如下:INTT0:MOV TMOD,#09H;设T0为定时方式1,GATE为1 MOV TL0,#00H ;清TH0,TL0 MOV TH0,#00H CLREX0 ;禁止外中断0LOP1:JB P3.2,LOP1 ;等待P3.2变低SETBTR0MOVA,TL0MOVB,TH0例34 利用定时计数器0或定时计数器1的Tx端口作为外部中断源输入端口的应用设计。在某些应用系统中常会出现两个外部中断源INT0和INTl不够用的情况,可将Tx用于增加的外部中断输入。现选择定时计数器1为计数方式2(自动再装入),设置计数初值为0FFH,则T1端口
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 资源
限制150内