资源描述
第第5 5章章 MCS-51 MCS-51系列单片机的系列单片机的片内接口及中断片内接口及中断 主要内容主要内容并行并行并行并行I/OI/OI/OI/O接口及其应用接口及其应用接口及其应用接口及其应用 定时器定时器定时器定时器/计数器及其应用计数器及其应用计数器及其应用计数器及其应用中断系统及其应用中断系统及其应用中断系统及其应用中断系统及其应用 串行接口及其应用串行接口及其应用串行接口及其应用串行接口及其应用2020/10/28 MCS-51 MCS-51系列单片机内部有系列单片机内部有4 4个个8 8位的并行位的并行I/OI/O接口,分别接口,分别命名为命名为P0P0、P1P1、P2P2和和P3P3。每个并行。每个并行I/OI/O接口的各位均可作为接口的各位均可作为输入或输出输入或输出。由于它们都属于地址号可被。由于它们都属于地址号可被8 8整除的特殊功能整除的特殊功能寄存器,故可以通过位寻址或直接寻址方式对其进行按位或寄存器,故可以通过位寻址或直接寻址方式对其进行按位或字节型的字节型的I/OI/O操作。它们的映像位地址或字节地址见下表:操作。它们的映像位地址或字节地址见下表:5.1 5.1 并行并行I/OI/O接口及其应用接口及其应用 5.1.1 5.1.1 并行并行I/OI/O接口的基本功能接口的基本功能接口名接口名映像字映像字节地址地址映像位地址映像位地址P P0 080H80H80H80H87H87HP P1 190H90H90H90H97H97HP P2 2A0HA0HA0HA0HA7HA7HP P3 3B0HB0HB0HB0HB7HB7H2020/10/28精品资料2020/10/28 1.P1 1.P1口口 准双向口准双向口 1)1)功能功能 作为输入作为输入/输出口。输出口。在增强型在增强型(52(52系列系列)和和ISP(In System Progrme)ISP(In System Progrme)型中有如下功能型中有如下功能:P1.0 T2 P1.0 T2引脚引脚,定时定时/计数器计数器2 2外部计数脉冲输入外部计数脉冲输入 P1.1 T2EX P1.1 T2EX引脚引脚,定时定时/计数器计数器2 2触发和方向控制触发和方向控制 P1.5 MOSI P1.5 MOSI引脚引脚,在系统编程数据输入在系统编程数据输入 P1.6 MISO P1.6 MISO引脚引脚,在系统编程数据输出在系统编程数据输出 P1.7 SCK P1.7 SCK引脚引脚,在系统编程时钟输入在系统编程时钟输入5.1.2 5.1.2 并行并行I/OI/O接口的扩展功能及结构接口的扩展功能及结构2020/10/282)2)结构结构可字节操作:可字节操作:可位操作:可位操作:MOV P1,#10HANL P1,#53H;读;读修改修改写指令写指令SETB P1.5;P1口第五位置口第五位置12020/10/282.P32.P3口口 双功能准双向口双功能准双向口 1 1)功能)功能 与与P1P1口功能相同。口功能相同。交替输入交替输入/出功能,借助出功能,借助P3P3口产生某些控制信号,口产生某些控制信号,其每位功能定义如下表所示其每位功能定义如下表所示:RDRD(读外部数据存外部数据存储器控制信号)器控制信号)P3.7P3.7WRWR(写外部数据存(写外部数据存储器控制信号)器控制信号)P3.6P3.6T1T1(定(定时器器/计数器数器1 1输入入线)P3.5P3.5T0T0(定(定时器器/计数器数器0 0输入入线)P3.4P3.4INT1INT1(外部中断(外部中断1 1请求求线)P3.3P3.3INT0INT0(外部中断(外部中断0 0请求求线)P3.2P3.2TXDTXD(串行口(串行口发送端)送端)P3.1P3.1RXTRXT(串行口接收端)(串行口接收端)P3.0P3.0第二功能第二功能引脚引脚2020/10/282)2)结构结构2020/10/28 3.P2 3.P2口口 双功能双功能准双向口准双向口 1)1)功能功能 与与P1P1口功能相同。口功能相同。高高8 8位地址输出口(位地址输出口(A8A8A15A15)-仅在访问仅在访问 外部存储器时有效外部存储器时有效2020/10/282)2)结构结构2020/10/28 4.P0 4.P0口口 双功能双向口双功能双向口 1)1)功能功能 一般的一般的I/OI/O口(口(OC/ODOC/OD输出),加上拉电阻才能输出),加上拉电阻才能 形成高电平输出形成高电平输出 低低8 8位地址位地址A0A0A7A7及数据及数据D0D0D7D7的分时复用口的分时复用口 (仅在访问外部存储器时有效)(仅在访问外部存储器时有效)2020/10/282)2)结构结构2020/10/28如果单片机内部有程序存贮器,不需要扩展外部存贮器如果单片机内部有程序存贮器,不需要扩展外部存贮器和和I/OI/O接口,单片机的四个口均可作接口,单片机的四个口均可作I/OI/O口使用。口使用。四个口在作输入口使用时,均应先对其写四个口在作输入口使用时,均应先对其写“1”1”,以避免,以避免误读。误读。P0P0口作口作I/OI/O口使用时应外接口使用时应外接10K10K的上拉电阻,其它口则可的上拉电阻,其它口则可不必。不必。P2P2口某几根线作地址使用时,剩下的线不能作口某几根线作地址使用时,剩下的线不能作I/OI/O口线使口线使用。用。P3P3口的某些口线作第二功能时,剩下的口线可以单独作口的某些口线作第二功能时,剩下的口线可以单独作I/OI/O口线使用。口线使用。归纳四个并行口使用的注意事项如下归纳四个并行口使用的注意事项如下:2020/10/28 例例1 1:设计一电路设计一电路,监视某开关监视某开关K,K,用发光二极管用发光二极管LEDLED显示开显示开 关状态关状态,如果开关合上如果开关合上,LED,LED 亮、开关断开亮、开关断开,LED,LED熄灭。熄灭。5.1.3 5.1.3 并行并行I/OI/O接口的应用接口的应用LEDLED+5V5VVccVccRSTRST10uF 10uF 1K1KP1.0P1.05151单片机单片机+5V+5VP1.1P1.11K1K30P30P30P30PXTAL1XTAL1XTAL2XTAL2GNDGNDK KEAEA2020/10/28 汇编程序如下:汇编程序如下:CLR P1.0 CLR P1.0 ;使发光二极管灭;使发光二极管灭AGA:SETB P1.1 AGA:SETB P1.1 ;先对;先对P1P1口写入口写入“1”“1”JB P1.1 JB P1.1,LIG LIG;开关断,转;开关断,转LIGLIG SETB P1.0 SETB P1.0 ;开关合,二极管亮;开关合,二极管亮 SJMP AGA SJMP AGALIG:CLR P1.0 LIG:CLR P1.0 ;开关断,二极管灭;开关断,二极管灭 SJMP AGA SJMP AGAC51C51参考程序如下:参考程序如下:sfr P1=0 x90sbit P1_0=0 x90;sbit P1_1=0 x91;void main()volatile bit k;P1_0=0;P1_1=1;while(1)k=P1_1;P1_0=k;2020/10/28 例例2:2:用用P1.0P1.0输出输出1KHz1KHz和和500Hz500Hz的音频信号驱动扬的音频信号驱动扬声器,作报警信号,要求声器,作报警信号,要求1KHz1KHz信号响信号响100ms 100ms,500Hz500Hz信号响信号响200ms200ms,交替进行,交替进行,P1.7P1.7接一开关进接一开关进行控制,当开关合上报警信号打开,当开关断开行控制,当开关合上报警信号打开,当开关断开报警信号停止,试编程实现。报警信号停止,试编程实现。P P1.01.05151单片机单片机+5V+5VP P1.71.7K K2020/10/28 500Hz 500Hz信号周期为信号周期为2ms2ms,信号电平为每,信号电平为每1ms1ms变反变反1 1次。次。1KHz1KHz的的信号周期为信号周期为1ms1ms,信号电平,信号电平 每每500S500S变反变反1 1次,编一个延时次,编一个延时500S500S子程序,延时子程序,延时1ms1ms只需调用只需调用2 2次。用次。用R2R2控制音响时间长短,控制音响时间长短,A A作音作音响频率的交换控制的标志。响频率的交换控制的标志。A=0A=0时产生时产生1KHz1KHz信号,信号,A=FFA=FF时产生时产生500Hz500Hz信号。信号。P1.0 波波 形形 图图 1ms 1ms100个个T(变反变反200次即次即200ms)。500S500S100个个T(变反变反200次即次即100ms)。TT分析:分析:2020/10/28 ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 0100H ORG 0100HMAIN:CLR A MAIN:CLR A ;A A作作1KHz1KHz,500Hz 500Hz 转换控制转换控制 SETB P1.7 SETB P1.7 BEG:JB P1.7,BEG:JB P1.7,;检测检测P1.7P1.7的开关状态的开关状态 MOV R2,#200 MOV R2,#200 ;开关闭合报警,开关闭合报警,R2R2控制音响时间控制音响时间DVDV:CPL P1.0 CPL P1.0 CJNE A,#0FFH,N1 CJNE A,#0FFH,N1 ;AFFHAFFH,延时,延时500S500S ACALL D500 ACALL D500 ;A=FFH ;A=FFH ;延时延时1ms P1.01ms P1.0变反变反N1N1:ACALL D500 ACALL D500 DJNZ R2 DJNZ R2,DV DV CPL A CPL A SJMP BEG SJMP BEGD500:MOV R7,#250 D500:MOV R7,#250 ;延时延时500 S500 S子程序子程序 DJNZ R7,DJNZ R7,RET RET END END2020/10/28小小 结结 1.1.四个并行口均可作为输入输出接口使用,但又有各自的特点。因四个并行口均可作为输入输出接口使用,但又有各自的特点。因POPO口是口是数据线和低八位的地址线,因此不用它作输入数据线和低八位的地址线,因此不用它作输入/输出接口,而是用它传输输出接口,而是用它传输数据和低八位的地址信息,除非在不接其他外围芯片的情况下才作数据和低八位的地址信息,除非在不接其他外围芯片的情况下才作I/OI/O接接口使用,此时由于内部漏极开路,需外接上拉电阻。四个口的使用特点口使用,此时由于内部漏极开路,需外接上拉电阻。四个口的使用特点是本章的重点。是本章的重点。2.2.当并行口作为输入口使用时,应对所用的口线写当并行口作为输入口使用时,应对所用的口线写“1”“1”,使其内部的驱,使其内部的驱动场效应管截止动场效应管截止 ,防止误读。写,防止误读。写“1”“1”以后不影响读引脚指令,因为读以后不影响读引脚指令,因为读入的信息是经缓冲器进入入的信息是经缓冲器进入CPUCPU的,而不是读的锁存器。的,而不是读的锁存器。3.3.在应用设计中应理解,计算机内由数字电路组成只存在两种在应用设计中应理解,计算机内由数字电路组成只存在两种TTLTTL电平。电平。TTL(5V):TTL(5V):输出输出 L L(0 0):0.8V H0.8V H(1 1):2.4V 2.4V 输入输出噪声容限输入输出噪声容限0.4V0.4V 输入输入 L L(0 0):1.2V H1.2V H(1 1):2.0V2.0V外设的状态要通过电路转换成高、低电平,计算机才能识别外设的状态要通过电路转换成高、低电平,计算机才能识别(如开关电路如开关电路)。计算机输出的数据也要转换成相应的电平电压。计算机输出的数据也要转换成相应的电平电压 ,根据外设需要的电,根据外设需要的电平要求平要求 输出输出“1”“1”或或“0”“0”数据,这就是程序控制外设的本质。数据,这就是程序控制外设的本质。2020/10/285.2 5.2 定时器定时器/计数器及其应用计数器及其应用5.2.1 5.2.1 定时器定时器/计数器的结构和工作原理计数器的结构和工作原理2020/10/281 1)方式)方式0 0和方式和方式1 1区别:计数器位数不同区别:计数器位数不同启动方式启动方式两种两种TRiTRi直接启动,条件直接启动,条件GATE=0GATE=0TRiTRi和和INTiINTi双重控制启动,要求双重控制启动,要求GATE=1GATE=1利用它可测试由利用它可测试由INTiINTi上引入的脉冲宽度上引入的脉冲宽度方式方式0 0:THiTHi高高8 8位,位,TLiTLi低低5 5位;方式位;方式1 1:1616位位5.2.2 5.2.2 定时器定时器/计数器的工作方式计数器的工作方式2020/10/282 2)方式)方式2 2特点:能自动重装计数初值特点:能自动重装计数初值2020/10/283 3)方式)方式3 3只允许只允许T0T0使用,此时使用,此时T1T1可工作在其他方式可工作在其他方式2020/10/281.1.工作模式寄存器工作模式寄存器TMOD(89H)TMOD(89H)TMODTMOD用于控制用于控制T0T0和和T1T1的操作模式。其各位的定义如下:的操作模式。其各位的定义如下:TMODD7D6D5D4D3D2D1D0(89H)GATEGATE C/TC/TM1M1M0M0 GATE C/T M1M0定时器定时器T0T0 定时器定时器T1T15.2.3 5.2.3 定时器定时器/计数器的编程计数器的编程2020/10/28GATEGATE:门控信号:门控信号 GATE=0 GATE=0,TRi=1TRi=1时即可启动定时器工作时即可启动定时器工作 ;GATE=1 GATE=1,TRi=1 INTi=1 TRi=1 INTi=1才可启动定时器工作。才可启动定时器工作。C/TC/T:定时器:定时器/计数器选择位计数器选择位 C/T=1 C/T=1,为计数器方式;,为计数器方式;C/T=0 C/T=0,为定时器方式。,为定时器方式。M1 M0 M1 M0 工作模式选择位工作模式选择位 M1M0=00 M1M0=00 工作方式工作方式0 0(1313位方式)。位方式)。M1M0=01 M1M0=01 工作方式工作方式1 1(1616位方式)。位方式)。M1M0=10 M1M0=10 工作方式工作方式2 2(8 8位自动再装入方式)。位自动再装入方式)。M1M0=11 M1M0=11 工作方式工作方式3 3(T0T0为为2 2个个8 8位方式)。位方式)。2020/10/282.2.控制寄存器控制寄存器TCON(88H)TCON(88H)TR1TR1:T1T1运行控制位。运行控制位。TR1=1 TR1=1,启动,启动T1T1工作。工作。TR1=0 TR1=0,停止,停止T1T1工作。工作。TF1 TR1 TF0 TR0 IE1IT1IE0IT0TR0TR0:T0T0运行控制位。运行控制位。TR0=1 TR0=1,启动,启动T0T0工作。工作。TR0=0 TR0=0,停止,停止T0T0工作。工作。2020/10/283.3.计数初值计数初值 定时:定时:(2 2N N-计数初值计数初值TCTC)时钟周期时钟周期=延时时间延时时间 计数:计数:2 2N N-要求计数的次数要求计数的次数=TC=TC 不同的工作方式其不同的工作方式其N N取值不同:取值不同:方式:方式:0 1 2 3 0 1 2 3 N N:13 16 8 8 13 16 8 8 4.4.定时时间到的查询与中断定时时间到的查询与中断 2020/10/28方式方式0 0(13 13位方式):位方式):TC=2 TC=21313-100=2000H-100=2000H64H=1F9CH64H=1F9CH 1F9CH 1F9CH0000001 1111 1001 1111 1001 11001 1100B B用指令装入计数初值:用指令装入计数初值:MOV TH0 MOV TH0,#0FCH#0FCH;MOV TL0 MOV TL0,#1CH#1CH;1.1.计数初值初始化计数初值初始化例例:要计要计100100个脉冲的计数初值个脉冲的计数初值5.2.4 5.2.4 定时定时/计数器计数器应用应用2020/10/28方式方式2 2(8 8位自动再装入方式)位自动再装入方式):TC=2 TC=28 8100=100H100=100H64H=9CH64H=9CH 初值既要装入初值既要装入TH0TH0,也要装入,也要装入TL0TL0:用指令装入计数初值:用指令装入计数初值:MOV TH0 MOV TH0,#9CH#9CH MOV TL0 MOV TL0,#9CH#9CH方式方式1(161(16位方式位方式):):TC=2 TC=21616-100=10000H-64H=FF9CH-100=10000H-64H=FF9CH用指令装入计数初值:用指令装入计数初值:MOV TH0 MOV TH0,#0FFH#0FFH MOV TL0 MOV TL0,#9CH#9CH2020/10/28例例1:1:如图所示,如图所示,P1P1中接有中接有八个发光二极管,要求八八个发光二极管,要求八个管轮流点亮,每个管亮个管轮流点亮,每个管亮100ms100ms,设晶振为,设晶振为6MHz6MHz。试编程实现。试编程实现。2.2.应用举例应用举例若利用若利用T1T1工作于方式工作于方式1 1定时定时100ms100ms有:有:TC=2TC=2N N-定时时间定时时间/机器周期机器周期 因为:机器周期因为:机器周期=2s=2s,N=16N=16故有:故有:TC=65536-100ms/2sTC=65536-100ms/2s =65536-50000 =65536-50000 =15536=3CB0H =15536=3CB0H 2020/10/28 ORG 0000HORG 0000HLJMPLJMP MAIN MAINORG 0030HORG 0030HMAINMAIN:MOV AMOV A,#01H#01H ;置第一个;置第一个LEDLED亮亮MOV TMODMOV TMOD,#10H#10H;T1T1工作于定时方式工作于定时方式1 1NEXTNEXT:MOV P1MOV P1,A A MOV TH1 MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H#0B0H;定时;定时100ms 100ms SETB TR1 SETB TR1 AGAI:JBC TF1,SHIAGAI:JBC TF1,SHI;100ms 100ms到转到转SHI,SHI,并清并清TF1TF1 SJMP AGAI SJMP AGAISHISHI:RL A RL A SJMP NEXT SJMP NEXT2020/10/28例例2 2:欲测量图中:欲测量图中INT0INT0(P3.2P3.2)引脚上出现的正脉冲宽度)引脚上出现的正脉冲宽度N N,并将结果存入,并将结果存入70H70H和和71H71H两个单元中,请编程实现。设两个单元中,请编程实现。设fosc=12MHzfosc=12MHz。GATE=1GATE=1,TR0=1TR0=1,C/T=0C/T=0,计数器清,计数器清0 0TMOD=0 0 0 0 1 0 0 1 BTMOD=0 0 0 0 1 0 0 1 BINT0INT00 00 01 11 1N NBACK1BACK1:JB P3.2JB P3.2,BACK1 BACK1;等待;等待INT0INT0变低变低 SETB TR0 SETB TR0 ;为;为T0T0的启动作准备的启动作准备 BACK2BACK2:JNB P3.2JNB P3.2,BACK2 BACK2;等待;等待INT0INT0引脚变高引脚变高BACK3BACK3:JB P3.2JB P3.2,BACK3 BACK3;等待;等待INT0INT0变低变低T0T0停止工作停止工作CLR TR0CLR TR0MOV 70HMOV 70H,TL0TL0MOV 71HMOV 71H,TH0 TH0 ;存放结果;存放结果 SJMP$SJMP$ENDEND ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 0100H ORG 0100HMAINMAIN:MOV TMODMOV TMOD,#09H#09H MOV TH0 MOV TH0,#00H#00H MOV TL0 MOV TL0,#00H#00H2020/10/28例例3 3:利用:利用T0T0、T1T1测某脉冲频率测某脉冲频率 fosc=6MHZ fosc=6MHZT1 T1 定时定时100ms 10100ms 10次次 即即1S T0 1S T0 计数,设计数值计数,设计数值216T0T0:GATE=0 C/T=1 M1M0=01 TC=0000H GATE=0 C/T=1 M1M0=01 TC=0000H T1T1:GATE=0 C/T=0 M1M0=01 TC=3CB0HGATE=0 C/T=0 M1M0=01 TC=3CB0HTMOD=0 0 0 1 TMOD=0 0 0 1 0 1 0 10 1 0 1 B BRUTL EQU 70HRUTH EQU 71HCONT EQU 72H ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV TMOD,#15H MOV TH0,#00H MOV TL0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV CONT,#10 SETB TR1 SETB TR0BACK1:JNB TF1,BACK1;等待100ms到 CLR TF1 ;溢出标志清0 MOV TH1,#3CH MOV TL1,#0B0H;重装时间常数 DEC CONT ;计数初值减1 MOV A,CONT JNZ BACK1 ;延时1秒等待 CLR TR0 ;1秒时间到,T0停止计数 MOV RUTH,TH0 MOV RUTL,TL0 ;存结果 SJMP$END 2020/10/28小小 结结5151系列单片机既有两个系列单片机既有两个1616位的定时计数器,有四种不同的位的定时计数器,有四种不同的工作方式,归纳于下表:工作方式,归纳于下表:定时和计数实质都是对脉冲的计数,只是被计脉冲的来源定时和计数实质都是对脉冲的计数,只是被计脉冲的来源不同,定时方式的被计脉冲来源于不同,定时方式的被计脉冲来源于时钟时钟,计数方式的被计,计数方式的被计脉冲来源于脉冲来源于外部外部,定时方式的计数初值和被计脉冲,定时方式的计数初值和被计脉冲周期周期有有关,计数方式的和被计脉冲的关,计数方式的和被计脉冲的个数个数有关。有关。无论定时还是计数,当计满规定的无论定时还是计数,当计满规定的 脉冲个数产生溢出(计脉冲个数产生溢出(计数初值寄存器回零),置位数初值寄存器回零),置位TFx,TFx,可以通过程序查询,如可以通过程序查询,如果允许中断,会产生中断。果允许中断,会产生中断。本章应重点掌握定时计数器的应用设计本章应重点掌握定时计数器的应用设计2020/10/2828=256=100H28=256=100H216=65536=10000H213=8192=2000H 模模 值值 (计数最大值计数最大值)TL0定时,计数定时,计数占用占用TR0、TF0;TH0定时,使用定时,使用T1 的的TR1、TF1此时此时T1作波特率作波特率发生器发生器定时、计数范围定时、计数范围小,不用重装时小,不用重装时间常数,多用于间常数,多用于串行通信的波特串行通信的波特率发生器率发生器用于用于定时时间定时时间 65.5ms,计数脉冲计数脉冲 65536 个个场合场合用于用于定时时间定时时间 8.19ms,计数脉冲计数脉冲 8192 个个场合场合 应用场合应用场合(设设fosc12MHz)同方式同方式0、1第一次装入第一次装入,启动启动工作后工作后,每次每次TL回回零后零后,不用程序装不用程序装入入,由由TH自动装入自动装入到到TL每启动一次工作每启动一次工作,需装入一次需装入一次计数初值计数初值 同左同左 TH TL高八位高八位 TH低八位低八位 TL高八位高八位 TH低五位低五位 TL 计数初值计数初值C的装入的装入方式方式 3 3T0T0两个两个8 8位位 方式方式方式方式 2 28 8位自动位自动重装方式重装方式方式方式 116位定时位定时计数方式计数方式 方式方式 013位定时位定时计数方式计数方式 方方 式式八位八位2020/10/285.3 5.3 中断系统及其应用中断系统及其应用5.3.1 5.3.1 中断系统结构中断系统结构1 1、中断源与中断向量地址、中断源与中断向量地址 51 51系列单片机有系列单片机有5 5个中断源,个中断源,5252系列有系列有6 6个中断个中断源,源,2 2个在片外,其余的中断源在片内。个在片外,其余的中断源在片内。在程序存贮器中有固定的中断入口地址,当在程序存贮器中有固定的中断入口地址,当CPUCPU响应中断时,硬件自动形成这些地址,由此进入中响应中断时,硬件自动形成这些地址,由此进入中断服务程序。断服务程序。5 5个中断源有两级中断优先级,可实现中断嵌套。个中断源有两级中断优先级,可实现中断嵌套。2020/10/28INT0INT0INT1INT1T0T0T1T1TI/RITI/RI中断源中断源T2T2中断向量中断向量0003H0003H0013H0013H000BH000BH001BH001BH0023H0023H002BH002BH2020/10/28(1)(1)中断请求标志及外部中断方式选择寄存器中断请求标志及外部中断方式选择寄存器TCONTCON2 2、中断控制的有关寄存器、中断控制的有关寄存器TF1TF1TR1TR1 TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0 T1 T1 T0 T0 INT1 INT1 INT0INT0触发触发方式选择方式选择下沿下沿/低电平低电平 INT0 INT0INT1INT1触发触发方式选择方式选择下沿下沿/低电平低电平IT0IT0和和IT1IT1若选下降沿触发则相应位置若选下降沿触发则相应位置1 1;若选低电平触发,;若选低电平触发,ITIT相应位置相应位置0 0。某中断源有中断请求,该中断标志置某中断源有中断请求,该中断标志置1 1,无中断请求,该中断标志置,无中断请求,该中断标志置0 0 TR0 TR0 和和 TR1 TR1 为定时器为定时器T0T0和和T1 T1 工作启工作启动和停止控制。动和停止控制。TCONTCON2020/10/28 (2 2)中断控制寄存器)中断控制寄存器IEIE 中断的允许和禁止中断的允许和禁止 1 1 允许中断;允许中断;0 0 禁止中断。禁止中断。EAEA ESESET1ET1 EX1EX1 ET0ET0 EX0EX0IEIEEAEA:中断允许:中断允许/禁止;禁止;ET0ET0、ET1ET1:定时器:定时器0 0和和1 1 中断允许中断允许/禁止;禁止;ESES:串行口中断允许:串行口中断允许/禁止;禁止;EX0EX0、EX1EX1:外中断:外中断INT0INT0和和INT1 INT1 中断允许禁止;中断允许禁止;TI接收中断标志接收中断标志RI发送中断标志发送中断标志 TI TI RI RISCONSCON2020/10/28 PSPSPT1PT1 PX1PX1 PT0PT0 PX0PX0IPIP(3 3 3 3)中断优先级管理寄存器中断优先级管理寄存器IPIP 51/5251/52系列单片机只有两级中断优先级,对应位系列单片机只有两级中断优先级,对应位为为1 1,则该中断源为高优先级,为,则该中断源为高优先级,为0 0则为低优先级。则为低优先级。优先级相同时,则优先响应先查询的中断请求。优先级相同时,则优先响应先查询的中断请求。CPUCPU查询顺序为:查询顺序为:INT0 T0 INT1 T1 TI/RI INT0 T0 INT1 T1 TI/RI2020/10/285.3.2 5.3.2 中断响应过程中断响应过程 51 51单片机在每个机器周期采样中断源,在第单片机在每个机器周期采样中断源,在第二个机器周期轮询上一机器周期的采样值。如果二个机器周期轮询上一机器周期的采样值。如果发现有标志为发现有标志为“1”“1”,则中断系统会生成一个远调,则中断系统会生成一个远调用用LCALLLCALL,调用相应的服务程序。,调用相应的服务程序。2020/10/281 1、中断响应的条件、中断响应的条件a.CPUa.CPU开中断且未响应中断或正在响应低级中断;开中断且未响应中断或正在响应低级中断;b.b.现行机器周期为正在执行指令的最后一个周期;现行机器周期为正在执行指令的最后一个周期;c.c.没执行没执行RETRET、RETIRETI,也未访问,也未访问IEIE、IPIP;执行这些操作后,至少执行一条其他指令后才执行这些操作后,至少执行一条其他指令后才会响应中断。会响应中断。2020/10/282 2、中断响应过程、中断响应过程 CPU CPU响应中断请求时,将响应中断请求时,将PCPC压栈,将中断服务程压栈,将中断服务程序入口地址送入序入口地址送入PCPC,程序转向相应的中断服务程序。,程序转向相应的中断服务程序。51/52 51/52系列单片机响应中断后,不会自动保护标系列单片机响应中断后,不会自动保护标志寄存器志寄存器PSWPSW,不会自动保护现场,不会自动关中断,不会自动保护现场,不会自动关中断,不会自动发中断响应信号。不会自动发中断响应信号。执行执行RETIRETI指令从中断服务程序返回主程序。指令从中断服务程序返回主程序。RETIRETI清除响应中断时被置位的优先级状态触发器。清除响应中断时被置位的优先级状态触发器。2020/10/283 3、中断请求的撤除、中断请求的撤除 响应中断后,应撤除该中断请求标志,否则会响应中断后,应撤除该中断请求标志,否则会再次中断。再次中断。a.a.定时计数器定时计数器T0T0、T1T1的溢出中断的溢出中断 响应中断后,硬件自动清除中断请求标志响应中断后,硬件自动清除中断请求标志TF0TF0、TF1TF1。b.b.串行口中断串行口中断 响应中断后,必须用软件清除清除中断请求标响应中断后,必须用软件清除清除中断请求标志志TITI、RIRI,这是在编串行通信中断服务程序中应该,这是在编串行通信中断服务程序中应该注意的。注意的。2020/10/28c.c.边沿触发的外部中断边沿触发的外部中断INT1INT1和和INT0INT0 CPU CPU响应中断后,硬件自动清除中断请求标志响应中断后,硬件自动清除中断请求标志IE0IE0和和IE1IE1。d.d.电平触发的外部中断电平触发的外部中断INT1INT1和和INT0INT0 CPU CPU在响应中断时不会自动清除中断标志,因在响应中断时不会自动清除中断标志,因此,在此,在CPUCPU响应中断后,应立即撤除响应中断后,应立即撤除INT1INT1或或INT0INT0的的低电平信号,否则会错误地再一次引起中断过程。低电平信号,否则会错误地再一次引起中断过程。2020/10/28外部外部电平电平中断请求的撤除中断请求的撤除 对对于于电电平平触触发发的的外外部部中中断断,由由于于CPUCPU对对引引脚脚没没有有控控制制作作用用,也也没没有有相相应应的的中中断断请请求求标标志志位位,需需要要外外接接电电路路来来撤撤除除中中断断请求标志,如下图。中断服务程序中用两条指令:请求标志,如下图。中断服务程序中用两条指令:ANLANLP1,#0FEHP1,#0FEHORLORLP1,#01HP1,#01H2020/10/28NYYYN中断返回,断点出栈送PC中断请求.中断响应中断服务中断返回执 行 指 令CPU判别优先权,响应优先权高的中断断点的PC进栈,中断服务入口地址送PC撤 除 中 断 标 志中 断 服 务中断标志置1?(中断请求?)指令最后一个T周期?EA=1?允 许 位=1?N2020/10/285.3.3 5.3.3 中断的应用中断的应用 用户对中断的控制和管理,实际是对用户对中断的控制和管理,实际是对4个与中断有关的个与中断有关的寄存器寄存器IE、TCON、IP、SCON进行控制进行控制 或管理。这几个寄或管理。这几个寄存器在单片机复位时是清零的,因此必须根据需要对这几个存器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的有关寄存器的有关 位进行预置。在中断程序的编制中应注意:位进行预置。在中断程序的编制中应注意:开中断总控开关开中断总控开关EAEA,置位中断源的中断允许位。,置位中断源的中断允许位。对外部中断对外部中断INT0INT0、INT1INT1应选择中断触发方式。应选择中断触发方式。多个中断源中断,应设定中断优先级,预置多个中断源中断,应设定中断优先级,预置IPIP。编写中断服务程序,并注意用保护现场和恢复现场,以免中编写中断服务程序,并注意用保护现场和恢复现场,以免中断返回时,丢失原寄存器、累加器中的信息。断返回时,丢失原寄存器、累加器中的信息。若要在执行当前中断程序时禁止更高优先级中断,可以采若要在执行当前中断程序时禁止更高优先级中断,可以采 用软件关用软件关CPUCPU中断或禁止某中断源中断,在中断返回前再中断或禁止某中断源中断,在中断返回前再开放中断。开放中断。2020/10/28例例1 1 如图所示,欲使与如图所示,欲使与P1.0P1.0引脚相连的引脚相连的LEDLED以以2 2秒为周期秒为周期闪烁,试编程实现。设闪烁,试编程实现。设fosc=6MHzfosc=6MHz。T0 T0方式方式1 1定时定时50ms50ms,在,在P1.3P1.3输出周期输出周期100ms100ms方波,方波,T1T1方式方式2 2对方波计数对方波计数1010次为次为1S,1S,然后在然后在P1.0P1.0输出周期输出周期2S2S的方波驱动的方波驱动LEDLED。定时器定时器T0T0的时间常数的时间常数4053640536即即9E58H9E58H。定时器。定时器T1T1的的时间常数为时间常数为246246即即F6HF6H。T0 T0、T1T1均允许中断,均允许中断,TMOD=01100001BTMOD=01100001B。2020/10/28 ORG 0000H LJMP MAIN ORG 000BH LIMP INTT0 ORG 001BH LJMP INTT1 ORG 0100H MAIN:CLR P1.0 ;给LED一个初态 SETB P1.3 ;P1.3输出高电平 MOV TMOD,#61H;T0、T1方式初始 MOV TH1,#0F6H;设置T1计数初值 MOV TL1,#0F6H MOV TH0,#9EH ;设置T0计数初值 MOV TL0,#58H SETB TR0 ;启动T0 SETB TR1 ;启动T1 SETB PT0 ;设T0为高优先级 CLR PT1 ;设T1为低优先级 SETB ET0 ;开放T0中断 SETB ET1 ;开放T1中断 SETB EA ;开放CPU的中断 SJMP$;等待中断 ORG 0400H INTT0:MOV TH0,#9EH MOV TL0,#58H CPL P1.3 RETI ORG 0500HINTT1:CPL P1.0 RETI2020/10/28例例2 2:欲测量图中:欲测量图中INT0INT0(P3.2P3.2)引脚上出现的正脉冲宽度)引脚上出现的正脉冲宽度N N,并将结果存入,并将结果存入70H70H和和71H71H两个单元中,请利用中断方式编两个单元中,请利用中断方式编程实现。设程实现。设fosc=12MHzfosc=12MHz。GATE=1GATE=1,TR0=1TR0=1,C/T=0C/T=0,计数器清,计数器清0 0TMOD=0 0 0 0 1 0 0 1 BTMOD=0 0 0 0 1 0 0 1 BINT0INT00 00 01 11 1N NBACK1BACK1:JB P3.2JB P3.2,BACK1 BACK1;等待;等待INT0INT0变低变低 SETB TR0 SETB TR0 ;为;为T0T0的启动作准备的启动作准备SETB IT0SETB IT0 ;为;为T0T0的启动作准备的启动作准备SETB EX0SETB EX0 ;为;为T0T0的启动作准备的启动作准备SETB EA SETB EA ;为;为T0T0的启动作准备的启动作准备SJMP$SJMP$;等待中断;等待中断 ORG 0200HORG 0200HINT0:CLR TR0INT0:CLR TR0 MOV 70H,TL0 MOV 70H,TL0 MOV 71H,TH0 MOV 71H,TH0 RETI RETI ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 0003H ORG 0003H LJMP INT0 LJMP INT0 ORG 0100H ORG 0100HMAINMAIN:MOV TMODMOV TMOD,#09H#09H MOV TH0 MOV TH0,#00H#00H MOV TL0 MOV TL0,#00H#00H2020/10/28例例3 3:利用:利用T0T0、T1T1测某脉冲频率测某脉冲频率 fosc=6MHZ fosc=6MHZT1 T1 定时定时100ms 10100ms 10次次 即即1S T0 1S T0 计数,设计数值计数,设计数值2 21616T0T0:GATE=0 C/T=1 M1M0=01 TC=0000H GATE=0 C/T=1 M1M0=01 TC=0000H T1T1:GATE=0 C/T=0 M1M0=01 TC=3CB0HGATE=0 C/T=0 M1M0=01 TC=3CB0HTMOD=0 0 0 1 1 0 0 1 BTMOD=0 0 0 1 1 0 0 1 BRUTL EQU 70HRUTL EQU 70HRUTH EQU 71HRUTH EQU 71HCONT EQU 72HCONT EQU 72H ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 001BH ORG 001BH LJMP INTT1 LJMP INTT1 ORG 0200H ORG 0200HINITT1INITT1:MOV TH1MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H#0B0H DEC CONT DEC CONT MOV A MOV A,CONTCONT JNZ EXIT JNZ EXIT CLR TR0 CLR TR0 MOV RUTH MOV RUTH,TH0TH0 MOV RUTL MOV RUTL,TL0 TL0 EXIT:RETI EXIT:RETI ORG 0100H ORG 0100HMAINMAIN:MOV TMOD MOV TMOD,#15H#15H MOV TH0 MOV TH0,#00H#00H MOV TL0 MOV TL0,#00H#00H MOV TH1 MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H#0B0H MOV CONT MOV CONT,#10#10 SETB TR1 SETB TR1 SETB TR0 SETB TR0 SETB ET1 SETB ET1 SETB EA SETB EA SJMP$SJMP$2020/10/28小小 结结(1)中断技术是)中断技术是实时控制实时控制中的常用技术,中的常用技术,51系列单片机有三个内部中断,系列单片机有三个内部中断,二个外部中断。所谓二个外部中断。所谓 外部中断就是在外部引脚上有产生中断所需要的信外部中断就是在外部引脚上有产生中断所需要的信号。号。每个中断源有固定的中断服务程序的入口地址每个中断源有固定的中断服务程序的入口地址(称矢量地址或向量地称矢量地址或向量地址址)。当。当CPU响应中断以响应中断以 后单片机内部硬件保证它能自动的跳转到该地后单片机内部硬件保证它能自动的跳转到该地址。址。(2)单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器)单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器IE,中断优先权寄存器中断优先权寄存器IP,必须在,必须在CPU开中断即开全局中断开关开中断即开全局中断开关EA,开各,开各中断源的中断开关,中断源的中断开关,CPU才能响应该中断源的才能响应该中断源的 中断请求,其中缺一不可。中断请求,其中缺一不可。(3)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌握中断响应的过程,握中断响应的过程,才能理解中断的发生和返回,看得懂中断程序,并才能理解中断的发生和返回,看得懂中断程序,并能编写高质量中断程序。能编写高质量中断程序。(4)本章重点应掌握中断的基本概念,并能熟练编制中断程序。)本章重点应掌握中断的基本概念,并能熟练编制中断程序。2020/10/285.4 5.4 串行接口及其应用串行接口及其应用系统计算机系统计算机单单片片机机单单片片机机单单片片机机 单单片片机机应应用用于于数数据据采采集集或或工工业业控控制制时时,往往往往作作为为前前端端机机安安装装在在工工业业现现场场,远远离离主主机机,现现场场数数据据采采用用串串行行通通信信方方式式发发往往主主机机进进行行处处理理,以以降降低低通通信信成成本本,提提高通信可靠性。如图所示高通信可靠性。如图所示。2020/10/281.1.串行口的内部结构串行口的内部结构 5.4.1 5.4.1 串行口的结构串行口的结构内内 部部 总总 线线发送发送SBUF(99H)控制门控制门88RXD(P3.0)TXD(P3.1)中中断断请请求求接收接收SBUF(99H)定定时时器器T122串寄串寄行存行存控器控器制制 SCON (98H)输入移位寄存器输入移位寄存器发送控制器发送控制器接收控制器接收控制器+分分频频器器SMOD10TITIRIRI2020/10/28串行控制寄存器串行控制寄存器SCONSCON 用以存放串行口的控制和状态信息。用以存放串行口的控制和状态信息。8XX518XX51串串行口正是通过对上述专用寄存器的设置、检测与行口正是通过对上述专用寄存器的设置、检测与读取读取 来管理串行通信的。来管理串行通信的。波特率发生器波特率发生器 定时器定时器T1T1作波特率发生器,改变计数初值就可以作波特率发生器,改变计数初值就可以改变串行通信的速率,称为可变波特率。改变串行通信的速率,称为可变波特率。以内部时钟的分频器作波特率发生器,因内部时以内部时钟的分频器作波特率发生器,因内部时钟频率一定,称为固定波特率。钟频率一定,称为固定波特率。2020/10/282.2.串行通信的传送过程串行通信的传送过程Shift时钟MOV A,SBUF串行数据串行数据CPUCPU SBUF SBUFShift时钟MOV SBUF,A并行数据并行数据甲方(发送)甲方(发送)乙方(接收)乙方(接收)TIRI2020/10/28 甲、乙方的移位时钟频率应相同,即应具有相同的甲、乙方的移位时钟频率应相同,即应具有相同的 波特率,否则会造成数据丢失。波特率,否则会造成数据丢失。发送方是先发数据再查标志,接收方是先查标志再发送方是先发数据再查标志,接收方是先查标志再 收数据。收数据。CPUCPU通过指令和通过指令和SBUFSBUF并行交换数据,并不能控制数并行交换数据,并不能控制数 据的串行移位,它只能查询标志位来确定数据的移据的串行移位,它只能查询标志位来确定数据的移 位是否完成。位是否完成。2020/10/28 51 51单片机串行口是一个可编程接口,对它的编程单片机串行口是一个可编程接口,对它的编程只用两个控制字分别写入特殊功能寄存器:只用两个控制字分别写入特殊功能寄存器:串行口控制寄存器串行口控制寄存器 SCON(98H)SCON(98H)电源控制寄存器电源控制寄存器 PCON(87H)PCON(87H)3.3.串行口的控制寄存器串行口的控制寄存器 2020/10/281.1.工作方式工作方式 根据串行通信数据格式和波特率的不同根据串行通信数据格式和波特率的不同,51,51系列单系列单片机的串行通信有四种工作方式片机的串行通信有四种工作方式,即方式即方式0 0、方式、方式1 1、方、方式式2 2、方式、方式3 3。(1 1)方式)方式0 0 移位寄存器输入移位寄存器输入/输出方式输出方式 其时序如图:其时序如图:5.2.3 5.2.3 串行口的工作方式串行口的工作方式2020/10/28 RXDRXD为串行数据的发送端或接收端为串行数据的发送端或接收端,TXDTXD输出频率为输出频率为fosc/12fosc/12的时钟脉冲。的时钟脉冲。波特率固定为波特率固定为fosc/12(foscfosc/12(fosc为单片机晶振频率为单片机晶振频率)方式方式0 0的数据格式为的数据格式为8 8位位,低位在前低位在前,高位在后高位在后 移位寄位器方式多用于接口的扩展移位寄位器方式多用于接口的扩展,当用单片机当用单片机构成系统时构成系统时,往往感到并行口不够用往往感到并行口不够用,此时可通过外接此时可通过外接串入并出移位寄存器扩展输出接口;通过外接并入串串入并出移位寄存器扩展输出接口;通过外接并入串出移位寄存器扩展输入接口,方式出移位寄存器扩展输入接口,方式0 0 也可应用于短距也可应用于短距离的单片机之间的通信。离的单片机之间的通信。2020/10/28(2 2)方式)方式1 1 1010位异步通信方式位异步通信方式 2020/10/28 每帧数据由每帧数据由1 1个起始位个起始位“0”.“0”.八个数据位和八个数据位和1 1个个停止位停止位“1”“1”共共1010位构成位构成.其中起始位和停止位在发其中起始位和停止位在发送时是自动插入的送时是自动插入的.以以TXDTXD为串行数据的发送端,为串行数据的发送端,RXDRXD为数据的接收为数据的接收端端,由定时器由定时器T1T1提供移位时钟提供移位时钟,是波特率可变方式是波特率可变方式波特率波特率=(2(2SMODSMOD/32)(/32)(T1T1的溢出率的溢出率)=(2(2SMODSMOD/32)(fosc/12(256-N)/32)(fosc/12(256-N)根据给定的波特率根据给定的波特率,可以计算可以计算T1T1的计数初值的计数初值X X。2020/10/28(3 3)方式方式2 2、3 3 1111位异步通讯方式位异步通讯方式2020/10/28 每帧数据由有一个起始位每帧数据由有一个起始位“0”,9“0”,9个数据位和个数据位和1 1个个停止位停止位“1”“1”组成组成.发送时九个数据位发送时九个数据位,由由SCONSCON寄存器寄存器的的TB8TB8位提供位提供,接收到的第九位数据存放在接收到的第九位数据存放在SCONSCON寄存器寄存器的的RB8RB8位位.第九位数据可作为检验位第九位数据可作为检验位,也可用于多机通也可用于多机通信中识别传送的是地址还是数据的特征位。信中识别传送的是地址还是数据的特征位。波特率固定为波特率固定为(2(2SMODSMOD/64)fosc./64)fosc.方式方式3 3数据格式同方式数据格式同方式2 2,所不同的是波特率可变,所不同的是波特率可变,计算方式同方式计算方式同方式 1 1。2020/10/281.1.与串行口有关的特殊功能寄存器与串行口有关的特殊功能寄存器 SBUF SBUF SBUF为串行口接收为串行口接收/发
展开阅读全文