版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章MCS51的功能部件 31中断系统32定时器/计数器33串行接口31中断系统MCS51单片机允许有五个中断源,提供两个中断优先级。每一个中断源的优先级的高低都可以通过编程来设定。中断源的中断请求是否能得到响应,受中断允许寄存器IE的控制。各个中断源的优先级可以由中断优先级寄存器IP中的各位来确定。同一优先级中的各中断源同时请求中断时,由内部的查询逻辑来确定响应的次序。MCS51中断系统见图所示。MCS51中断系统1010101010源码源码高优先级中断请求向量入口低优先级中断请求向量入口IE0IT0IE1IT1EX0EX1ET0ET1ESINT0INT1TF0TF1TIRI中断允许寄存器
2、IE源允许总允许中断优先级寄存器IP优先级查询电路EA中断系统分以下几个内容:一、中断请求源和中断请求标志二、中断控制三、中断优先级结构四、中断响应过程一、中断请求源和中断请求标志1.中断请求源8051提供5个中断源:!INT0来自P3.2引脚上的外部中断请求(外中断0)!INT1来自P3.3引脚上的外部中断请求(外中断1)T0 片内定时器/计数器0溢出(TF0)中断请求T1 片内定时器/计数器1溢出(TF1)中断请求串行口 片内串行口完成一帧发送或接收中断请求源TI或RI说明:每一个中断源都对应有一个中断请求标志位,设在SFR的TCON和SCON中。当有中断请求时,由TCON和SCON中的相
3、应位来锁存。2. TCON定时器/计数器(T0,T1)控制R(88H) TF1 TF0 IE1 IT1 IE0 IT0 8F 8E 8D 8C 8B 8A 89 88TCONT1溢出中断标志T0溢出中断标志外中断1请求标志外部中断1(!INT1)触发方式控制位外部中断0(!INT0)触发方式控制位外中断0请求标志T0、T1从初值开始加1计数到产生溢出,使TF0、TF1置“1”,直到CPU响应中断时由硬件复位。若ITi1(沿触发),则!INTi上的电平由1变到0时,置位IEi、在CPU响应该中断时由硬件清0。若ITi0(电平触发),则输入到!INTi的外部中断源必须保持低电平有效,直到该中断被响
4、应。同时在中断返回前必须使电平变高,否则将会再次产生中断。位地址3.SCON串行口控制寄存器(98H)SCON中只列出低2位的情况:当发送和接收中任何一个标志被置位时,都可以向CPU提出申请。事实上,CPU在响应串行口中断时,并不清楚中断是由RI和TI引起,必须在中断服务程序中判断,并由软件按RI和TI标志位清0发送中断标志接收中断标志TI RI SCON9F 9E 9D 9C 9B 9A 99 98位地址二、中断控制IE中断允许寄存器(A8H)控制中断允许或禁止的。格式如下: EA ES ET1 EX1 ET0 EX0IEAF AE AD AC AB AA A9 A8中断允许标志0禁止 所有
5、中断1开放中断外部中断01允许中断外部中断11允许中断T0的溢出中断1允许中断T1的溢出中断1允许中断串行口中断允许位1允许中断位地址2.IP中断优先级寄存器(B8H)中断系统提供两个中断优先级每一个中断源都可编程设置为高优先级或低优先级中断源,以便实现二级中断嵌套。中断优先级是由IP控制的,IP的格式如下: PS PT1 PX1 PT0 PX0IPBF BE BD BC BB BA B9 B8外部中断01设高优先级0设低优先级外部中断11设高优先级0设低优先级T0中断优先级1设高优先级0设低优先级T1中断优先级1设高优先级0设低优先级串行口中断优先级1设高优先级0设低优先级位地址三、中断优先
6、级结构中断系统内具有两级优先级,遵循以下两条基本规则:(1)低优先级中断源可被高优先级中断源所中断。(2)一种中断源一旦得到响应,与它同级的中断源不能再中断它。当同时收到几个同一优先级的中断,其优先级排列如下:中断源同级内的中断优先级外部中断0最高T0溢出中断外部中断1T1溢出中断串行口中断最低四、中断响应过程CPU在每个机器周期的S4P2时刻采样中断标志,而在下一个机器周期对采样到的中断进行处理。按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。封锁CPU对中断响应的条件:(1)CPU正在处理同级的或高一级的中断(2)现行的机器周期不是当前所执行指令的最后一个机器周期。(3
7、)当前正在执行的指令是返回(RETI)指令或是对IE或IP进行读/写的指令。CPU响应中断时,先置相应的优先级激活触发器,封锁同级和低级的中断。根据中断源的类别,在硬件的控制下,程序转向相应的向量入口单元,执行中断服务程序。基本部件32定时器/计数器MCS51内部有两个16位可编程的定时器/计数器(T0、T1)。一、结构微处理器TH07 0TL07 0TH17 0TL17 0T1T0P3.5(T1)P3.4(T0)TCONTMOD功能:作定时器时:输入的时钟脉冲是由晶体振荡器的输出经12分频(一个机器周期)后得到的。作对外部事件计数时:接相应的外部输入引脚T0(P3.4)或T1(P3.5)。最
8、高计数频率为晶振频率的1/24。例如:fosc6MHz,则最高计数频率6M/24250KHz。1.TMOD方式寄存器(89H)C/!T 方式选择位。0,定时器方式; 1,计数器方式。GATE 运行控制位。0,只要TCON中的TRi被置1,Ti就开始计数;1,不仅要TCON中的 TRi被置1,还需要!INT0或!INT1引脚为高电平,才允许计数。M1M0 工作方式选择GATE C/T M1 M0T1方式控制GATE C/T M1 M0T0方式控制D7 D6 D5 D4 D3 D2 D1 D0TMODM1M0方式说明00013位定时器/计数器01116位定时器/计数器102自动装入时间常数的8位定
9、时器/计数器113对T0分为两个8位计数器;对T1置方式3时停止工作2.TCON 控制寄存器(88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT08F 8E 8D 8C 8B 8A 89 88TCONT1的溢出中断1T1计数溢出T1的运行控制位0停止计数1启动计数用于外部中断T0的溢出中断1T0计数溢出T0的运行控制位0停止计数1启动计数位地址二、工作方式1.方式013位计数器图方式0(13位计数器)振荡器12M0M1C/TGATE00TMODINT0TL0(5位)TH0(8位)C/T=0C/T=1TF0TR0TCON中断控制T0此时由TH0的8位和TL0的低5位组成一个13
10、位计数器。2.方式116位计数器由TH0和TL0组成一个16位计数器。与方式0的区别仅仅为计数器的位数不同。图方式1(16位计数器)振荡器12M0M1C/TGATE10TMODINT0TL0(8位)TH0(8位)C/T=0C/T=1TF0TR0TCON中断控制T03.方式2初始常数自动装入把TL0配置成一个可以自动恢复初值的8位计数器,TH0作为常数缓冲器。TH0由软件预置值。常用作串行口波特率发生器。振荡器12M0M1C/TGATE01TMODINT0TL0(8位)C/T=0C/T=1TF0TR0TCON中断控制T0TH0(8位)重新装入图方式2(初始常数自动装入)4.方式3两个8位计数器方
11、式3只适用于T0。将T1用作串行口波特率发生器,T0定义为方式3,以增加一个8位计数器。振荡器12M0M1C/TGATE11TMODINT0TL0(8位)C/T=0C/T=1TF0TR0TCONT0中断控制T0TH0(8位)TF1TR1TCONT1中断控制1/12fosc图方式3(两个8位计数器)三、应用举例1.计数器方式常数计算设T0为方式2工作时,在外界发生一次事件时产生中断请求。时间常数的计算:方式2工作时,当计数到28时计数器就产生溢出。设常数值为x,当发生一次外界事件时就溢出,则x128x28111111111BFFH2.定时器方式时间常数计算设方式0工作时,定时时间为1ms,时钟振
12、荡频率为6MHz,计算:1个机器周期为:121/f12/6MHz2s设时间常数为x,则(213x) 2s1ms1000s x21350076921E0CH0001,1110,0000,1100B形成13位定时常数: x111100000 1100B F 0 0 C H根据13位定时器/计数器特性,实现如下: MOVTL0, #0CH ;低8位送TL0 MOVTH0, #0F0H;高8位送TH03.设T1作定时器,以方式1工作,定时时间为10ms;T0作计数器,以方式2工作,外界发生一次事件即溢出。时钟为6MHz。 1个机器周期为:121/f12/6MHz2s 设时间常数为x,则(216x) 2
13、s10ms10000s xEC78H初始化程序MOVTMOD,#00010110B;T1定时方式1,T0计数方式2MOVTL0,#0FFH ;T0时间常数送TL0MOVTH0,#0FFH ;T0时间常数送TH0MOVTL1,#78H ;T1时间常数送TL1MOVTH1,#0ECH;T1时间常数送TH1SETBTR0 ;置TR0为1允许T0启动计数SETBTR1 ;置TR1为1允许T1启动计数33串行接口串行口发送和接收数据缓冲器是通过特殊功能寄存器SBUF来访问,口地址为99H。控制串行口的寄存器有两个:PCON、SCON。一、串行口控制寄存器SCON及波特率选择位1.PCON波特率选择位(8
14、7H)SMOD D7 D6 D5 D4 D3 D2 D1 D0PCON波特率选择位无定义位字节地址87HSMOD1,串口方式1,2或3,波特率提高一倍。可用MOVPCON,80H;或MOV87H,80H;使SMOD置12.串行口控制寄存器SCON(98H)位地址 9F 9E 9D 9C 9B 9A 99 98 SM0 SM1 SM2 REN TB8 RB8 TI RI位 D7 D6 D5 D4 D3 D2 D1 D0SCON字节地址98H串行口操作方式选择位00方式001方式110方式211方式3允许方式2、3的多机通信使能位允许串行接收位1允许接收;0禁止接收方式2、3中要发送的第9位数据,
15、可编程方式2、3中接收到的第9位数据。方式1中,若SM20,RB8是接收到的停止位。方式0,不用。发送中断标志接收中断标志二、串行接口工作方式串口工作方式由SM0,SM1决定,见下表:表 串行口方式选择 SM0 SM1 0 0 0 1 1 0 1 1 方式 0 1 2 3 功能说明 移位寄存器方式 8位UART 9位UART 9位UART 波特率 fosc/12 可变(T1溢出率/n) fosc/64或fosc/32 可变(T1溢出率/n)方式1、3的波特率:波特率(T1溢出率)/n式中:当SMOD0,n32当SMOD1,n161.方式0移位寄存器方式该方式通过RxD端(P3.0)串行发送或接
16、收数据。用TxD端(P3.1)输出移位脉冲。故亦称此方式为同步方式。数据的传送以8位为一帧。无论是发送或接收,都是最低有效位LSB居先。传送的波特率固定为振荡频率的12分之一。方式0的两种形式:方式0输出(发送)方式0输入(接收)(1)方式0输出(发送)串行数据通过RxD(P3.0)输出,而在TxD(P3.1)输出移位时钟脉冲。当一个数据写入串口数据发送缓冲器时,就开始发送。发送控制器送出移位信号。直到最高位(D7)数字移出后,停止发送数据和移位时钟脉冲。完成一帧数据的发送过程,并置TI为1,申请中断。若CPU响应中断,则从0023H单元开始执行串口中断服务程序。RxD8051 TxDD1D2
17、 74LS164CLK D7D6D5D4D3D2D1D0(2)方式0输入(接收)此时RxD端为数据输入端,TxD端为移位时钟信号输出。REN0,禁止接收。REN1,允许接收。当满足方式0,且REN1,且RI0的条件时,就会启动一次接收过程。在接收过程开始后的第10个机器周期,SCON中的RI位被置位,从而发出中断申请。至此,完成了一帧数据的接收过程。若CPU响应中断,就去执行由0023H作为入口地址的中断服务程序。RxD8051 TxDQ 74LS165CLK D7D6D5D4D3D2D1D0说明:方式0发送或接收完8位数据后由硬件置位发送中断标志TI或接收中断标志RI。CPU响应中断请求转入
18、中断服务程序时并不清TI或RI。中断标志TI或RI要用程序来清0。具体做法:CLRTICLRRI或ANLSCON,0FEHANLSCON,0FDH 来实现。以方式0工作时SM2位(多机通信控制位)必须为0.2.方式18位标准异步通信方式该方式通过TxD端发送数据,RxD端接收数据,通信格式为每帧10位,其中包括有8个数据位,一个起始位,一个停止位,格式如下:D0 D1 D2 D3 D4 D5 D6 D7起始位停止位接收时,接收到的停止位要被送入SCON寄存器的RB8位。传送的波特率可变,它由T1的溢出率决定:波特率T1的溢出率/n方式1的两种形式:(1)方式1发送CPU执行任何一条以SBUF为
19、目标寄存器的指令,就启动发送。当发送完数据位时,置位中断标志位TI。(2)方式1接收当检测到RxD引脚上由1到0的跳变时开始接收过程,并复位内部16分频计数器,以实现同步。将1位时间等分成16份,在第7,8,9个计数状态时采样RxD的电平,保证排除噪声干扰。8位数据进入SBUF,停止位进入RB8,且置位中断标志RI。例:假定甲、乙机以方式1进行串行数据通信,其波特率为1200,时钟6MHz。甲机发送,发送数据在外部RAM4000401FH单元中。乙机接收,并把接收到的数据块首末地址及数据依次存入外部RAM5000H开始的区域中。假设晶振频率为6MHz,按1200波特率,计算定时器1的计数初值:
20、X256fosc*2smod/(384*波特率)2566*106*1/(384*1200)2430F3Hsmod0,波特率不倍增,则应使PCON00H串行发送的内容包括数据块的首末地址和数据两部分内容。对数据块首末地址的传送以查询方式进行,而数据则以中断方式传送。因此在程序中要先禁止串行中断,后允许串行中断。下面是发送和接收的参考程序:甲机发送主程序:ORG0023HLJMPACINTORG8030HMOVTMOD, #20H;设置定时器1工作方式2MOVTL1, #0F3H;定时器1计数初值MOVTH1, #0F3H;计数重装值SETBEA;中断总允许CLRES;禁止串行中断MOVPCON,
21、#00H;波特率不倍增SETBTR1;启动定时器1MOVSCON,#40H;设置串行口方式1,REN0MOVSBUF,#40H;发送数据区首地址高位SOUT1: JNBTI,$;等待一帧发送完毕CLRTI;清发送中断标志MOVSBUF,#00H;发送数据区首地址低位SOUT2: JNBTI,$;等待一帧发送完毕续:CLRTI;MOVSBUF,#40H;发送数据区末地址高位SOUT3: JNBTI,$;等待一帧发送完毕CLRTI;清发送中断标志MOVDPTR,#4000H;数据区地址指针MOVR7,#20H;数据个数SETBES;开放串行中断MOVSBUF,#1FH;发送数据区末地址低位AHAL
22、T: AJMP $;甲机中断服务程序:ORG8100HACINT: MOVX A,DPTR;读数据CLRTI;清发送中断续:MOVSBUF,A;发送字符CJNER7, #00H, AEND1;未发送完转AEND1CLRES;禁止串行中断CLRTR1;定时器1停止计数AJMPAEND2; 发送完转AEND2AEND1: INCDPTR;DECR7AEND2: RETI;中断返回乙机接收主程序:ORG0023HLJMPBCINTORG8030HMOVTMOD,#20H;设置定时器1工作方式2MOVTH1,#0F3H;计数重装值MOVTL1,#0F3H;定时器1计数初值SETBEA;中断总允许CLR
23、ES;禁止串行中断续:MOVPCON,#00H;波特率不倍增SETBTR1;启动定时MOVSCON,#50H;设置串行口方式1,REN1MOVDPTR,#5000H;数据存放首地址MOVR7,#20H;接收数据个数SIN1:JNBRI,$;等待CLRRI;清接收中断标志MOVA,SBUF;接收数据区首地址高位MOVX DPTR,A;存首地址高位INCDPTR;地址指针增量SIN2:JNBRI,$;CLRRIMOVA,SBUF;接收数据区首地址低位MOVX DPTR,A;存首地址低位INCDPTRSIN3:JNBRI,$;CLRRI续:MOVA,SBUF;接收数据区末地址高位MOVX DPTR,
24、A;存末地址高位INCDPTR;地址指针增量SIN4:JNBRI,$;CLRRIMOVA,SBUF;接收数据区末地址低位MOVX DPTR,A;存末地址低位INCDPTRSETBES;开放串行中断BHALT: AJMP $;等待中断乙机中断服务程序:ORG8100HBCINT: MOVA,SBUF;接收数据MOVDPTR,A;存数据CLRRI;清接收中断标志CJNER7,#00H,BEND1 ;未接收完转BEND1续:CLRES;禁止串行中断CLRTR1;定时器1停止计数AJMPBEND2;接收完转BEND2BEND1: INCDPTRDECR7BEND2: RETI;中断返回T1的时间常数计
25、算:X2N所需定时时间/计数周期2N计数频率/所需频率(溢出率)返回3. 方式2、方式39位异步通信接口该方式通过TxD端发送数据,RxD端接收数据,通信格式为每帧11位,其中包括一个起始位,8个数据位,一个可编程的第9位,一个停止位,格式如下:数据发送前,第9数据位(TB8)可由程序设置为1或0。接收时,第9数据位被送入RB8位中,而将停止位忽略。方式2的波特率固定为fosc的1/32或1/64,方式3的波特率可变,由定时器T1的溢出率所确定:波特率T1的溢出率/nD0 D1 D2 D3 D4 D5 D6 D7 D8起始位停止位(1)方式2、方式3发送由写入SBUF信号把8位数据装入SBUF
26、,置TB8,并通知发送控制器要求进行一次发送。发送一帧数据,置TI1,请求中断。第9位数据由软件置位或清0,可以作为数据的奇偶校验位,也可以作为多机通信中的地址、数据标志位。如果把TB8作为奇偶校验位,可以在发送中断服务程序中,在数据写入SBUF之前,先将数据的奇偶位写入TB8。例:数据从串口输出。设内部RAM50H5FH中的数据从串口输出,串口以方式2工作,TB8位奇偶校验位。偶校验。程序流程图见附图。程序清单:LOOP0: MOV SCON, #80H ;串口工作在方式2MOVPCON, #80H;SMOD1,波特率为fosc/32MOVR0, #50H ;R0地址50HMOVR7, #1
27、0H ; R7数据长度10HLOOP1: MOV A, R0 ; A 数据MOVC, P ;进位位C 奇偶位PMOVTB8, C ;TB8 奇偶位PMOVSBUF, A ; 数据送SBUF,启动发送续:WAIT: JBCTI, LOOP2 ; TI1时转至执行LOOP2指示的指令;同时将TI清零SJMPWAIT ; 循环判断LOOP2: INC R0 ; R0 R01DJNZR7, LOOP1 ; R7 R71,R70,转至LOOP1 RET ; 程序返回发送程序流程图:开始串行口初始化R0地址指针R7计数初值A数据TB8奇偶位PSBUFATI1?R7-1=0?NTI0,R0R0+1YN返回Y
28、返回(2)方式2、方式3接收数据从RxD端输入,接收过程由RxD端检测到负跳变时开始。采样速率为波特率的16倍。8位数据装入接收缓冲器,第9位数据装入SCON中的RB8,并置中断标志RI1。注意:(1)装入RB8的是第9位数据,而不是停止位。(2)所接收的第9位可用于多机处理,也可作奇偶校验位。例:从串口接收数据。设工作方式为方式3。9位异步通信方式,奇偶校验,波特率为2400,晶振为11.0592MHz,定时器T1工作方式2。程序流程图见附图。时间常数的确定当SMOD0时,计算得到T1的时间常数为F4H。程序清单:RECEIV:MOV TMOD, #20H ;控制字20H送TMOD,T1方式
29、2 MOVTH1, #0F4H ; 时间常数送T1的TH1MOVTL1, #0F4H ; 时间常数送T1的TL1 SETBTR1 ; 置TCON的TR1位为1,启动T1 MOVR0, #50H ; 地址指针R0置初值MOVR7, #10H ; 计数长度10H送R7定时器1的时间常数的确定由于波特率(定时器1溢出率)/32所以2400(定时器1溢出率)/32定时器1溢出率=2400*327680028xfosc/(fT1*12)28x11.0952*106/(76800*12)28x0CHX0F4H返回续: MOVSCON, #0D0H ; 控制字D0H送SCON,方式3,允许接收MOVPCON
30、, #00H ; 设PCON的SMOD0WAIT: JBC RI, LOOP1 ; 判断RI等待接收到数据SJMPWAITLOOP1: MOV A, SBUF ; 接收到的数据送A JNBPSW.0, LOOP2 ; P为0转LOOP2 JNBRB8, LOOP3 ; P=1而RB8为0,转LOOP3 SJMPLOOP4 ; 跳转到LOOP4LOOP2: JBRB8, LOOP3 ; RB81转LOOP3LOOP4: MOV R0, A ; 存数 INCR0 ; 地址指针加1 DJNZR7, WAIT ; 数据块未接收完继续接收 CLRPSW.5 ; 接收完后,把PSW的D5位清0 RET ; 返回LOOP3: SETB PSW.5 ; 奇校验出错,把PSW的D5位置1 RET ; 返回接收程序流程图:开始串行口初始化R0地址指针R7计数初值RI1?R7-1=0?NRI0,ASBUFY返回定时器T1初始化RB8=P?修改地址指针YPSW.50R0A存数据YN返回NPSW.514.多机通信上图为一种简单的主从式多机通讯系统。先将从机编程为接收方式,置SM2=1,允许中断。主机发送来的数据以第9位来区别是地址字节还是数据字节。第9位=1 表示地址字节第9位=0表示数据字节TXDRXD8051 主 机 TXD RXD80511#从机TXD RXD80512#从机T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理上半年工作亮点与挑战
- 护理病区护理实施与效果评价
- 抑郁障碍患者的护理技术应用
- 浙江省杭州市上城区2023-2024学年四年级下学期语文期末检测试卷(含答案)
- 护理团队协作要点
- 2026青年申论面试题及答案解析
- 2026山东士官面试题目及答案
- 2026生活老师面试题及答案
- 护理医师诊疗岗医疗卫生事业招聘考试参考题库 含答案
- 电工电子技术课件 项目四 日光灯电路的安装与改造
- 三副换证实习报告
- 八年级数学下册 中心对称图形-平行四边形综合压轴(50题12个考点)(原卷版)
- 北京市东城区东直门中学2024-2025学年七年级上学期分班考数学试卷
- JT-T-1185-2018城市轨道交通行车组织规则
- 社会工作实务(初级):就业援助员(三)
- XFT 3004-2020 汽车加油加气站消防安全管理
- 《商务数据分析与应用》课程标准
- GB 31608-2023食品安全国家标准茶叶
- 防溺水安全培训PPT
- 网络营销试卷A参考答案
- 一通三防存在的问题及整改措施
评论
0/150
提交评论