1、单片机原理及应用北京化工大学北京化工大学信息科学与技术学院信息科学与技术学院主讲教师:郭青主讲教师:郭青E-mail: 第四章第四章80C51单片机的功能单元单片机的功能单元主要内容主要内容u并行并行I/OI/O接口接口u定时定时/ /计数器计数器u串行通讯接口串行通讯接口u中断系统中断系统概述:概述:4个并行个并行I/O端口端口P0、P1、P2、P3,共,共32根根I/O线线每一个口都有一个每一个口都有一个8位的锁存器,复位后,初态位的锁存器,复位后,初态为为1,即,即FFH4个个I/O端口分别对应于内部端口分别对应于内部RAM的四个特殊功的四个特殊功能寄存器能寄存器4.1 并行I/O接口一
2、、内部结构一、内部结构(以(以P1口为例)口为例)DCL P1X锁存器锁存器QQ读锁存器读锁存器内部总线内部总线写锁存器写锁存器读引脚读引脚输入缓冲器输入缓冲器BUF1Vcc R(上拉电阻)(上拉电阻)P1X引脚引脚特点:输出锁存,输入缓冲特点:输出锁存,输入缓冲输入缓冲器输入缓冲器BUF2二、第一功能:通用二、第一功能:通用I/OI/O口口双向通道,即可输入又可输出双向通道,即可输入又可输出可作可作8位并行位并行I/O口,每一位也可单独使用,应用位口,每一位也可单独使用,应用位操作指令操作指令1、用作输出口、用作输出口可直接与外设相连,不必外加锁存器可直接与外设相连,不必外加锁存器输出指令:
3、输出指令:MOV P1,A ;MOV P1,RnMOV P1,#data ;MOV P1,RiMOV P1,direct字节寻址字节寻址MOV P1.X , C位操作位操作P10位位DCL P1X锁存器锁存器QQ读锁存器读锁存器内部总线内部总线写锁存器写锁存器读引脚读引脚输入缓冲器输入缓冲器Vcc R(上拉电阻)(上拉电阻)P1X引脚引脚101驱动能力:驱动能力:P1、P2、P3可驱动可驱动4个个LSTTL负载负载 P0可驱动可驱动8个个LSTTL负载负载1例:例: MOV P1,#0FH输入缓冲器输入缓冲器2、用作输入口、用作输入口两种工作方式:两种工作方式:读锁存器读锁存器读引脚读引脚1)
4、读锁存器)读锁存器 将端口锁存器的内容读入内部总线,经过运算和变换,再将端口锁存器的内容读入内部总线,经过运算和变换,再写回到端口锁存器。写回到端口锁存器。称为称为 读读修改修改写指令写指令例:例:ANL P1,#0FH10种读种读修改修改写指令:写指令: (以(以I/O口或位为目标操作数)口或位为目标操作数)ANL 、ORL 、XRL、CPL (位取反)、(位取反)、INC、DEC、DJNZ、CLR、SETBMOV (MOV PXY,C)DCL P1X锁存器锁存器QQ读锁存器读锁存器内部总线内部总线写锁存器写锁存器读引脚读引脚输入缓冲器输入缓冲器Vcc R(上拉电阻)(上拉电阻)P1X引脚引
5、脚读引脚内容与锁存器内容,可能不一致读引脚内容与锁存器内容,可能不一致引脚输出引脚输出为为1,驱动,驱动三极管基三极管基极极 ,将被,将被钳位为钳位为010所以用所以用“读读修改修改写写”指令读指令读I/OI/O口锁存器口锁存器如用如用P1.X口驱口驱动三极管基极动三极管基极0输入缓冲器输入缓冲器2 2)读引脚)读引脚读引脚状态,将外部的数据读入到内部总线,读引脚状态,将外部的数据读入到内部总线,所以读引脚指令是所以读引脚指令是 输入指令输入指令例:例:MOV A,P1 MOV Rn,P1 MOV direct,P1 MOV C,P1X注意:注意:当端口作为输入口使用时,必须将端口当端口作为输
6、入口使用时,必须将端口锁存器的相应位置锁存器的相应位置“1”,该位才能正确的读入,该位才能正确的读入原因:如某位为原因:如某位为“0”,则不管引脚状态如何,则不管引脚状态如何,读引脚的结果始终为读引脚的结果始终为“0”字节操作字节操作位操作位操作DCL P1X锁存器锁存器QQ读锁存器读锁存器内部总线内部总线写锁存器写锁存器读引脚读引脚输入缓冲器输入缓冲器Vcc R(上拉电阻)(上拉电阻)P1X引脚引脚如如P10口锁存器为口锁存器为“0”01导通导通00无论引脚输入如何,始终读到无论引脚输入如何,始终读到0;且外设输入高电平时,易损坏输出且外设输入高电平时,易损坏输出MOS管管有效有效输入缓冲器
7、输入缓冲器DCL P1X锁存器锁存器QQ读锁存器读锁存器内部总线内部总线写锁存器写锁存器读引脚读引脚输入缓冲器输入缓冲器Vcc R(上拉电阻)(上拉电阻)P1X引脚引脚P10口锁存器为口锁存器为“1”1011有效有效输入缓冲器输入缓冲器DCL P1X锁存器锁存器QQ读锁存器读锁存器内部总线内部总线写锁存器写锁存器读引脚读引脚输入缓冲器输入缓冲器Vcc R(上拉电阻)(上拉电阻)P1X引脚引脚P10口锁存器为口锁存器为“1”1000因为因为I/O端口在执行输入指令时,须先使用指令将端口锁存端口在执行输入指令时,须先使用指令将端口锁存器置器置“1”,所以称,所以称 准双向口准双向口系统复位后,系统
8、复位后,I/OI/O端口锁存器状态为全端口锁存器状态为全“1”1”,即,即P0P0、P1P1、P2P2、P3P3均为均为FFHFFH,可直接作为输入口使用,可直接作为输入口使用有效有效输入缓冲器输入缓冲器3、输入、输出操作、输入、输出操作字节操作:字节操作: 8位一组,并行输入、输出位一组,并行输入、输出例:例:MOV P1,A位操作:位操作: 利用位操作指令,进行逐位的输入、输出利用位操作指令,进行逐位的输入、输出例:例:MOV P1.0,C多位分组操作:多位分组操作:利用读改写指令,仅对选定位进行输出操作利用读改写指令,仅对选定位进行输出操作例例1: ORL P1,#0000 0110B使
9、使P1.1、P1.2输出为输出为1,其余位不变,其余位不变例例2:ANL P1,#1111 0110BP1.0、P1.3输出为输出为0,其余位不变,其余位不变4、作为双向口使用、作为双向口使用80C51的的4个个I/O口在进行数据的输入输出操作时,口在进行数据的输入输出操作时,均可作为双向口使用。即,同一口线既作为输入均可作为双向口使用。即,同一口线既作为输入口,又用作输出口。口,又用作输出口。操作方法:操作方法:以以P1口为例口为例MOV P1, A MOV P1,#0FFHMOV A,P1;直接使用输出指令;直接使用输出指令;锁存器置;锁存器置1;输入指令;输入指令80C51的的P1由输出
10、口转为输入口时,需先将锁由输出口转为输入口时,需先将锁存器置存器置1,然后使用输入指令。,然后使用输入指令。准双向口准双向口三、第二功能三、第二功能1)P0口:口:8位数据总线,地址总线低位数据总线,地址总线低8位分时复用位分时复用2)P2口:高口:高8位地址总线位地址总线3)P3口:每一位具有不同的第二功能口:每一位具有不同的第二功能注:注:对于对于P0、P2口,如用作第二功能,将不能作为通用口,如用作第二功能,将不能作为通用I/O口使用;口使用;P3口,剩余位仍可用作通用口,剩余位仍可用作通用I/O口。复位时,口。复位时,因各口锁存器初态均为因各口锁存器初态均为“1”,可直接用作第二功能,
11、可直接用作第二功能四、带负载能力四、带负载能力P0口:口:8个个TTL负载负载P1、P2、P3口:口:4个个TTL负载负载五、五、80C5180C51的外部总线的外部总线单片微机系统特点:面向测控系统单片微机系统特点:面向测控系统要求单片微机能够提供实时功能,以实现定时、要求单片微机能够提供实时功能,以实现定时、延时或实时时钟;也常要求计数功能,以实现延时或实时时钟;也常要求计数功能,以实现对外部事件计数对外部事件计数80C51系列单片微机提供系列单片微机提供2个(个(8051型)或型)或3个个(8052型)型)16位的定时位的定时/计数器,可程控为计数器,可程控为4种种工作方式工作方式4.2
12、 定时/计数器fosc/12TXP3.4, P3.5 T0 , T1 TLX THX(8) (8) TFXTMOD TCON加加1计数器计数器控制逻辑控制逻辑C/T80C51定时定时/计数器原理框图计数器原理框图X=0,1一、定时一、定时/计数器的基本原理计数器的基本原理1 1、定时方式、定时方式计数脉冲来源于内部振荡器(计数脉冲来源于内部振荡器(12分频)分频)例:主频为例:主频为12MHz,机器周期为,机器周期为1 s0TC/ fosc/12TXP3.4, P3.5 T0 , T1 TLX THX(8) (8) TFXTMOD TCON加加1计数器计数器控制逻辑控制逻辑C/TX=0,10一
13、个机器一个机器周期加周期加12 2、计数方式、计数方式计数脉冲来源于外部引脚计数脉冲来源于外部引脚1TC/ fosc/12TXP3.4, P3.5 T0 , T1 TLX THX(8) (8) TFXTMOD TCON加加1计数器计数器控制逻辑控制逻辑C/TX=0,11P3.4, P3.5T0 , T12 2、计数方式、计数方式计数脉冲来源于外部引脚(计数脉冲来源于外部引脚(Tx,x=0,1)1TC/ 有效脉冲为负跳变脉冲有效脉冲为负跳变脉冲Tx10S5P2S5P2A)最大计数速率为振荡频率的)最大计数速率为振荡频率的1/24。B)计数脉冲给出的高电平应至少保持)计数脉冲给出的高电平应至少保持
14、1个完整的个完整的机器周期,以保证被采样机器周期,以保证被采样对计数脉冲要求:对计数脉冲要求:计数器计数器加加1 13 3、计数器、计数器“溢出溢出”整个定时整个定时/计数器功能由用户通过指令对特殊功能计数器功能由用户通过指令对特殊功能寄存器寄存器TMOD和和TCON编程实现编程实现fosc/12TXP3.4, P3.5 T0 , T1 TLX THX(8) (8) TFXTMOD TCON加加1计数器计数器控制逻辑控制逻辑C/TX=0,11111 1111 1111 11110000 0000 0000 0000TF=1全全“1” 全全“0”,计数器,计数器溢出溢出,置位,置位TF,请求中断
15、,请求中断二、定时/计数器控制与状态寄存器1、工作方式寄存器、工作方式寄存器TMOD用于定义定时用于定义定时/计数器的操作方式及工作模式计数器的操作方式及工作模式字节地址:字节地址:89HM1 M0:操作方式选择位:操作方式选择位M1 M0 操作方式操作方式 功能说明功能说明 0 0 方式方式0 13位计数器位计数器 0 1 方式方式1 16位计数器位计数器 1 0 方式方式2 自动重装的自动重装的8位计数器位计数器 1 1 方式方式3 T0分成两个分成两个8位计数器位计数器 T1无效(停止计数)无效(停止计数)C/T:选择定时或计数模式:选择定时或计数模式 C/T=1,计数模式;,计数模式;
16、C/T=0,定时模式,定时模式GATE:选通控制:选通控制GATE=1,当,当INTx端口为高电平且端口为高电平且TRx=1,定,定时计数器才启动计数。时计数器才启动计数。应用:对脉冲的宽度进应用:对脉冲的宽度进行测量行测量GATE=0,只要,只要TRx置位为置位为1,定时计数器就启动,定时计数器就启动计数计数复位时,复位时,TMOD=00H允许定时计数器工作的条件是:允许定时计数器工作的条件是:GATE=1时:时:TRx=1且且INTx=1GATE=0时:时:TRx=1101111 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1INT0 is “1”TR0 is “1” 0
17、0 1 0 0 0 0 12 2、启停与中断控制寄存器、启停与中断控制寄存器TCONTCON用于控制定时用于控制定时/计数器的启停与中断请求。计数器的启停与中断请求。字节地址:字节地址:88H各位含义如下:各位含义如下:TF1:T1溢出中断请求标志位。当溢出中断请求标志位。当T1计数回计数回0溢溢出时,由硬件置位为出时,由硬件置位为1,向,向CPU请求中断。当请求中断。当CPU响应中断,转向中断服务程序,响应中断,转向中断服务程序,由硬件清由硬件清0。TR1:T1启启/停控制位。当软件置位停控制位。当软件置位TR1=1,T1启动启动计数。计数。TR1=0,停止计数。,停止计数。TF0:T0溢出
18、中断请求标志位,同溢出中断请求标志位,同TF1。TR0:T0启启/停控制位,同停控制位,同TR1。TCON字节地址为字节地址为88H,可以位寻址。可以位寻址。复位时,复位时,TCON=00H三、定时/计数器的工作方式TMOD中的中的C/T位的设置,可选择定时位的设置,可选择定时/计数器工计数器工作在定时或计数模式作在定时或计数模式M1、M0位的位的4种编码,可用于选择种编码,可用于选择4种工作方式种工作方式1 1、方式、方式0 0 M1、M0编码为编码为00,由,由TLX低低5位及位及THX8位组位组成成13位计数器位计数器组成结构示意图见下页组成结构示意图见下页允许定时计数器工作的条件是:允
19、许定时计数器工作的条件是:GATE=1时:时:TRx=1且且INTx=1GATE=0时:时:TRx=12 2、方式、方式1 1M1、M0编码为编码为01,TLx、THx组成组成16位定时计数器位定时计数器,其组成结构同方式其组成结构同方式03 3、方式、方式2 2M1、M0编码为编码为10,自动重装的,自动重装的8位定时计数器。位定时计数器。4 4、方式、方式3 3 M1、M0编码为编码为11,将,将T0分为两个独立的分为两个独立的8位计数位计数器,器,TL0组成完整的组成完整的8位定时位定时/计数器,计数器,TH0组成只组成只能定时的能定时的8位定时器。位定时器。T1无方式无方式3功能,如功
20、能,如T1设定为方式设定为方式3,则停止工作。,则停止工作。TL0使用定时使用定时/计数器计数器0的全部控制位,组成一个完的全部控制位,组成一个完整的整的8位定时位定时/计数器。计数器。TH0借用定时借用定时/计数器计数器1的的TR1和和TF1位,只能用于位,只能用于定时,不能对外部事件计数定时,不能对外部事件计数此时,定时此时,定时/计数器计数器T1可工作在方式可工作在方式0、1、2,但不,但不能使用中断。典型应用为串行通讯波特率发生器能使用中断。典型应用为串行通讯波特率发生器方式方式3 T0 结构简图结构简图补充说明:T0方式3时,T1的设置与控制 在方式在方式3中,中,TL0和和TH0成
21、为两个相互独立的成为两个相互独立的8位计数器。位计数器。TL0占用了全部占用了全部T0的控制位和信号引脚,即的控制位和信号引脚,即GATE、CT、TR0、TF0等。而等。而TH0只用作定时器使用。而且由于定时器只用作定时器使用。而且由于定时器/计数器计数器0的控制位已被的控制位已被TL0独占,因此独占,因此TH0只好借用定时器只好借用定时器/计数器计数器1的控制位的控制位TR1和和TF1进行工作。进行工作。 同时,由于同时,由于TR1,TF1已已“出借出借”给给TH0,TH1和和TL1的的溢出就送给串行口,作为串行口时钟信号发生器(即波特率溢出就送给串行口,作为串行口时钟信号发生器(即波特率信
22、号发生器),并且只要设置好工作方式(方式信号发生器),并且只要设置好工作方式(方式0,方式,方式1,方式方式2)以及计数初值,)以及计数初值,T1无须启动使可自动运行。如要停无须启动使可自动运行。如要停止止T1工作,只要将其设置工作方式工作,只要将其设置工作方式3即可。即可。四、定时/计数器应用举例初始化顺序:初始化顺序:设置工作方式控制字(设置工作方式控制字(TMOD)计算计数初值,并置计算计数初值,并置TLX,THX设置中断允许位设置中断允许位ETX、EA,开放中断,开放中断设置启设置启/停控制位停控制位TRX定时时间:定时时间: TC=XTP X:计数次数:计数次数计数初值:计数初值:
23、2n-X方式方式0:n=13方式方式1:n=16方式方式2:n=8设振荡频率设振荡频率 fosc=6MHZ,TP= 12 6MHZ=2us机器周期:机器周期: TP=12/fosc以定时模式为例:以定时模式为例:设定时时间为设定时时间为5ms,计数次数,计数次数 X=Tc/Tp=25001、计数初值的计算、计数初值的计算因为因为MCS51定时计数器为加定时计数器为加1计数器,所以设置入计数器,所以设置入THX、TLX的计数初值为实际计数长度的补码的计数初值为实际计数长度的补码 方式方式0: (X)补补=213-X=8192-2500=5692=163CH0 0 0 1 0 1 1 0 0 0
24、1 1 1 1 0 0 B TLX低低5位位THX8位位计数初值:计数初值:THX=B1H TLX=1CH方式方式1: (X)补补=216-X=65536-2500=63036=F63CH计数初值:计数初值: THX=F6H TLX=3CH最大计数次数:方式最大计数次数:方式0为为8192次,方式次,方式1为为65536次,次,方式方式2为为256次次2、方式、方式0应用举例应用举例设系统主频为设系统主频为6MHZ,要求,要求P10口输出周期为口输出周期为10ms的方波,使用的方波,使用T0,方式,方式0分析:周期为分析:周期为10ms方波方波定时时间为定时时间为5ms,定时时间到对,定时时间
25、到对P10取反取反计数初值:计数初值: TH0=B1H TL0=1CH工作方式控制字:工作方式控制字: TMOD=00H程序如下:程序如下:MOV TMOD , #00HSETB TR0MOV TH0 , #0B1HMOV TL0 , #1CHJNB TF0 , HERECLR TF0?CPL P1.0SJMP LOOPLOOP:HERE:; 置置T0方式方式0;启动计数;启动计数;置计数初值;置计数初值;TF0=0,定时时间未到,等待,定时时间未到,等待;定时时间到,定时时间到,TF0清清0?;继续下一次计数;继续下一次计数;P10取反取反方式方式0及方式及方式1,计数满后,计数器回,计数满
26、后,计数器回0,需重新,需重新置计数初值置计数初值3、方式、方式2应用应用设系统主频为设系统主频为12MHZ,使用,使用T1方式方式2在在P10口输口输出出5KHZ方波方波机器周期:机器周期:TP=1us5KHZ方波,周期为方波,周期为200us,即每隔,即每隔100us将将P10口取反。口取反。定时时间:定时时间:TC=100us计数次数:计数次数:X=100计数初值:计数初值: 28-X=156=9CH程序如下:程序如下:MOV TMOD , #20HMOV TH1 , #9CHMOV TL1 , #9CHSETB TR1JNB TF1 , HERECLR TF1CPL P1.0SJMP
27、HEREHERE:;置工作方式为方式;置工作方式为方式2;置计数初值;置计数初值;启动计数;启动计数;定时时间未到,等待;定时时间未到,等待;定时时间到,;定时时间到,TF1清清0;转下一次定时;转下一次定时方式方式2为自动重装方式,无须重置计数初值。但计数为自动重装方式,无须重置计数初值。但计数初值应同时装入初值应同时装入THX及及TLX;P10取反取反4、应注意的问题、应注意的问题1)定时)定时/计数器的实时性计数器的实时性定时定时/计数器计满回计数器计满回0,向主机请求中断,主,向主机请求中断,主机响应中断进入中断服务程序,存在时间延机响应中断进入中断服务程序,存在时间延迟,一般应用场合
28、可忽略不记。但在一些实迟,一般应用场合可忽略不记。但在一些实时性要求很高的场合,应采用补偿措施时性要求很高的场合,应采用补偿措施2)动态读取运行中的计数器动态读取运行中的计数器先读先读THX,后读,后读TLX,再读,再读THX。如两次读取的。如两次读取的THX相同,说明读得的值是正确的;如不同,则相同,说明读得的值是正确的;如不同,则重复以上过程,重复读得的值一般不会再错。重复以上过程,重复读得的值一般不会再错。4.3 中断系统概述:概述:5到到6个(个(52系列)中断源,系列)中断源,2个中断优先级,可个中断优先级,可用软件设定。用户可通过软件来屏蔽或接受中用软件设定。用户可通过软件来屏蔽或
29、接受中断请求断请求一、一、 中断源中断源8051提供提供5个中断源,其中两个中断请求信号由个中断源,其中两个中断请求信号由外部产生并输入,称外部中断;其余的中断请外部产生并输入,称外部中断;其余的中断请求信号均由内部产生,称内部中断。求信号均由内部产生,称内部中断。1、外部中断源、外部中断源INT0: 外部中断外部中断0请求输入(请求输入(P32)INT1: 外部中断外部中断1请求输入(请求输入(P33)中断请求触发方式:中断请求触发方式: (CPU在在S5P2采样采样INT0和和INT1)2)负跳变触发,前一机周采样高电平,后一机)负跳变触发,前一机周采样高电平,后一机周为低电平周为低电平1
30、)低电平触发,采样低电平)低电平触发,采样低电平2、定时器类、定时器类 当当T0、T1溢出时,置位溢出时,置位TF0、TF1,向向CPU请求中断请求中断3、串行通讯口、串行通讯口 发送或接收到一帧数据后,向发送或接收到一帧数据后,向CPU请求中断请求中断二、二、 中断控制中断控制4个与中断系统有关的个与中断系统有关的SFRTCON:启停中断控制寄存器启停中断控制寄存器IE:中断允许控制寄存器中断允许控制寄存器IP:中断优先级寄存器中断优先级寄存器SCON:串行控制寄存器串行控制寄存器这这4个个SFR均可位寻址,改变某些标志位的状态均可位寻址,改变某些标志位的状态1、TCON: 地址地址88H高
31、高4位与定时位与定时/计数器有关计数器有关TF1:T1溢出中断请求标志位溢出中断请求标志位TF0:T0溢出中断请求标志位溢出中断请求标志位1:请求中断:请求中断低低4位与外部中断源有关位与外部中断源有关IT0:选择外部中断请求:选择外部中断请求0为边沿触发方式或电平触为边沿触发方式或电平触发方式的控制位(发方式的控制位(INT0中断触发方式选择位)中断触发方式选择位)IT0=0,电平触发方式;,电平触发方式;IT0=1,边沿触发方式,边沿触发方式IT1:选择外部中断请求:选择外部中断请求1触发方式控制位触发方式控制位IE0:外部中断:外部中断0中断请求标志位。中断请求标志位。如如IT0=0,电
32、平触发方式时,电平触发方式时,INT0为低电平为低电平时时, IE0IE0由硬件置由硬件置1 1,向,向CPUCPU请求中断。当请求中断。当CPUCPU响应中断,转向中断服务程序时,由硬件清响应中断,转向中断服务程序时,由硬件清0 0。如如IT0=1,边沿触发方式时,边沿触发方式时,INT0出现有效出现有效负跳变时,负跳变时,IE0由硬件置由硬件置1,向,向CPU请求中断。请求中断。当当CPU响应中断,转向中断服务程序时,由响应中断,转向中断服务程序时,由硬件清硬件清0。IE1:外部中断:外部中断1中断请求标志位,同中断请求标志位,同IE02、串行控制寄存器、串行控制寄存器SCON 地址:地址
33、:98H 可位寻址可位寻址功能:用于设置串行通讯的工作方式和某些控功能:用于设置串行通讯的工作方式和某些控制功能。其中低二位与中断有关制功能。其中低二位与中断有关TI:发送中断请求标志位:发送中断请求标志位RI:接收中断请求标志位:接收中断请求标志位串行通讯口发送或接收完一帧数据,由硬件置串行通讯口发送或接收完一帧数据,由硬件置1,向向CPU请求中断;响应中断后,需由软件清除请求中断;响应中断后,需由软件清除3、中断允许控制寄存器、中断允许控制寄存器IE地址:地址:A8H 可位寻址可位寻址功能:通过对某一位的设置,可以允许(开放)功能:通过对某一位的设置,可以允许(开放)或屏蔽(禁止)各中断源
34、的中断请求。又称中断或屏蔽(禁止)各中断源的中断请求。又称中断允许寄存器允许寄存器EA:开放:开放/禁止所有中断。如禁止所有中断。如EA=0,禁止所有,禁止所有中断。中断。EA=1,各中断源的开放与否,取决于各,各中断源的开放与否,取决于各自的中断控制位的状态。自的中断控制位的状态。X:保留位,无定义:保留位,无定义ET2:定时:定时/计数器计数器2中断允许控制位。仅对中断允许控制位。仅对8052有有效,效,8051及及31系列,此位为保留位系列,此位为保留位ES:串行口中断允许控制位:串行口中断允许控制位ET1:定时:定时/计数器计数器1中断允许控制位中断允许控制位EX1:外部中断:外部中断
35、1中断允许控制位中断允许控制位ET0:定时:定时/计数器计数器0中断允许控制位中断允许控制位EX0:外部中断:外部中断0中断允许控制位中断允许控制位以上各位均为:以上各位均为: 设置为设置为1,开放对应中断源;,开放对应中断源;0,禁止对应中断源申请中断。禁止对应中断源申请中断。复位时,复位时,IE=00H,禁止所有中断,禁止所有中断4、中断优先级控制寄存器、中断优先级控制寄存器IP 地址:地址:B8H 可位寻址可位寻址通过用软件对相应位置通过用软件对相应位置“1”或清或清“0”,设定对应,设定对应中断源的优先级。中断源的优先级。1:高优先级,:高优先级,0:低优先级:低优先级各位对应中断源:
36、各位对应中断源:PT2:定时计数器:定时计数器2(8052)PS:串行通讯口:串行通讯口PT1:定时计数器:定时计数器1PX1:外部中断:外部中断1PT0:定时计数器:定时计数器0PX0:外部中断:外部中断0复位时,复位时, IP=00H。所有中断源均为低优先级中断。所有中断源均为低优先级中断80C5180C51对中断优先级的处理原则:对中断优先级的处理原则:1)不同级的中断源同时申请中断时,先高后低,)不同级的中断源同时申请中断时,先高后低,高级优先高级优先2)处理低级中断又接到高级中断请求时:停止低)处理低级中断又接到高级中断请求时:停止低级中断服务程序,转而执行高级中断服务程序,级中断服
37、务程序,转而执行高级中断服务程序,即停低转高即停低转高3)处理高级中断又接到低级中断请求时:不理睬)处理高级中断又接到低级中断请求时:不理睬可实现两级中断嵌套,低级或同级不能嵌套可实现两级中断嵌套,低级或同级不能嵌套4)同一级的多个中断源同时申请中断时,由内部)同一级的多个中断源同时申请中断时,由内部按按查询优先顺序查询优先顺序决定响应哪一中断源的中断请求。决定响应哪一中断源的中断请求。次序由高到低如下:次序由高到低如下:IE0,TF0,IE1,TF1,串行,串行口,口,T2三、中断响应条件及响应过程三、中断响应条件及响应过程1 1、响应过程、响应过程C1机周机周:各中断标志在:各中断标志在S
38、5P2状态采样中断源;状态采样中断源;C2机周机周:CPU在在S6状态按优先顺序采样各中断标志。状态按优先顺序采样各中断标志。C3、C4机周机周:置位相应中断优先级触发器,阻止:置位相应中断优先级触发器,阻止同级或低级中断请求。同级或低级中断请求。各中断源对应矢量地址如下:各中断源对应矢量地址如下:INT0(IE0) 0003HT0 (TF0) 000BHINT1(IE1) 0013HT1(TF1) 001BH串行口(串行口(RI+TI) 0023HT2 002BHC5机周机周:CPU从矢量地址开始执行中断服务程序,从矢量地址开始执行中断服务程序,直到遇到一条直到遇到一条RETI指令为止指令为
39、止从发出中断申请到转入中断服务程序,从发出中断申请到转入中断服务程序,最快需最快需3个机周个机周2、中断阻塞条件、中断阻塞条件当单片机处于以下情况时,将不能响应中断当单片机处于以下情况时,将不能响应中断1)正在执行同级或高级中断服务程序)正在执行同级或高级中断服务程序2)中断查询周期)中断查询周期C2不是正在执行指令的最后不是正在执行指令的最后一个周期一个周期3)正在执行)正在执行RETI指令或写入指令或写入IE、IP寄存器的寄存器的指令指令除第一种阻塞条件,在后两种情况下,从中断除第一种阻塞条件,在后两种情况下,从中断申请到转入中断服务程序需申请到转入中断服务程序需38个机器周期个机器周期3
40、、中断请求撤除、中断请求撤除响应中断后应清除中断请求标志,否则中断申请继响应中断后应清除中断请求标志,否则中断申请继续有效,可能会产生一次申请多次响应的情况续有效,可能会产生一次申请多次响应的情况清除方法:清除方法:TF0,TF1,IE0,IE1:硬件清除硬件清除RI,TI:软件清除软件清除外部中断有两种触发方式外部中断有两种触发方式: 下降沿触发,置位下降沿触发,置位IEX,可清除,可清除 低电平触发,仅清除低电平触发,仅清除IEX无效,应考虑时序配合问题无效,应考虑时序配合问题四、程序举例四、程序举例例例1:利用定时:利用定时/计数器计数器1的的T1端口改为外部脉冲(中端口改为外部脉冲(中
41、断源)输入端口的方法。框图:断源)输入端口的方法。框图:解:将解:将T1设定为外部计数方式,工作方式设定为外部计数方式,工作方式2,计,计数初值为数初值为FFH1)主程序)主程序ORG 0000HAJMP MAINORG 001BHLJMP INTER ORG 0100H MOV SP , #60HMOV TMOD , #60HMOV TL1 , #0FFHMOV TH1 , #0FFHSETB EASETB ET1SETB TR1MAIN:; 转主程序转主程序;T1中断矢量地址入口中断矢量地址入口;转中断服务程序;转中断服务程序;主程序入口地址;主程序入口地址;设置堆栈区;设置堆栈区;设置;
42、设置T1为计数模式,方式为计数模式,方式2;设置计数初值;设置计数初值;开中断;开中断;启动;启动T1计数计数2)中断服务程序(具体处理内容略)中断服务程序(具体处理内容略) ORG 1000HPUSH A ;PUSH DPL ;PUSH DPH ; POP DPH ;POP DPL ;POP A ;RETI ;INTER:保护现场保护现场恢复现场恢复现场中断处理程序中断处理程序中断返回中断返回中断程序编制的要点:中断程序编制的要点:1)在中断源对应中断矢量地址入口放置中断服)在中断源对应中断矢量地址入口放置中断服务程序,如空间不够,可使用跳转指令,转向务程序,如空间不够,可使用跳转指令,转向
43、中断服务程序首地址。中断服务程序首地址。2)设置堆栈区)设置堆栈区3)开中断,开放)开中断,开放EA及对应中断允许位及对应中断允许位4)现场保护)现场保护5)中断返回)中断返回RETI。每个中断服务程序都必须。每个中断服务程序都必须有,且只能有一条,放在服务程序的最后有,且只能有一条,放在服务程序的最后主主程程序序中断中断服务服务程序程序例例2:设系统主频为:设系统主频为6MHZ,要求,要求P10口输出周期为口输出周期为10ms的的方波,使用方波,使用T0,方式,方式0,开中断,开中断 ORG 0000HAJMP START ORG 000BHLJMP INTER ORG 0050HMOV S
44、P,#70HMOV TMOD , #00HMOV TH0 , #0B1HMOV TL0 , #1CHSETB TR0SETB EASETB ET0SJMP OKSTART:OK:;转主程序;转主程序;T0中断矢量地址中断矢量地址;转中断服务程序;转中断服务程序;主程序;主程序;开中断;开中断;循环等待中断;循环等待中断 ORG 0500HMOV TL0 ,#0B1HMOV TH0 ,#1CHCPL P10RETIENDINTER:;重置计数初值;重置计数初值;P10取反取反;中断返回;中断返回;程序结束;程序结束例例3、电路图如下所示,、电路图如下所示,P1口接有口接有8个发光二极管,编写程序
45、,个发光二极管,编写程序,使使8个二极管轮流点亮,每个管亮个二极管轮流点亮,每个管亮100ms,设晶振为,设晶振为6MHz。分析:分析:利用利用T1完成完成100ms定时,当定时,当P1口线输出口线输出0时,发光二极管亮,每隔时,发光二极管亮,每隔100ms左移一次。左移一次。采用定时方式采用定时方式1计算计数初值计算计数初值机器周期为机器周期为 2s计数长度:计数长度:100ms/2s = 50000计数初值:计数初值: 216 50000 = 15536 = 3CB0 H查询方式:查询方式:ORG 0000HMOV A, #0FEHNEXT: MOV P1, AMOV TMOD, #10H
46、MOV TH1, #3CHMOV TL1, # 0B0HSETB TR1AGAI: JBC TF1, SHISJMP AGAISHI:RL ASJMP NEXT;置第一个;置第一个LED亮亮;T1定时方式定时方式1;定时;定时100ms;启动;启动T1工作工作;100ms到,转到,转SHI,并清,并清TF1;未到;未到100ms,再次检查,再次检查TF1;A左移一位左移一位;重复;重复中断方式:中断方式:ORG 0000HAJMP MAINORG 001BHAJMP IV1ORG 0030HMAIN: MOV A, #0FEH MOV P1, AMOV TMOD, #10HMOV TH1, #
47、3CHMOV TL1, # 0B0HSETB TR1SETB EASETB ET1WAIT: SJMP WAIT;单片机复位从;单片机复位从0000H开始执行开始执行;T1中断服务程序入口地址中断服务程序入口地址;转移到;转移到IV1;主程序;主程序;置第一个;置第一个LED亮亮;T1定时方式定时方式1;定时;定时100ms;启动;启动T1工作工作;开中断总控开关;开中断总控开关;允许;允许T1中断中断;等待中断;等待中断中断服务程序:中断服务程序:IV1: RL A MOV P1, AMOV TH1, #3CHMOV TL1, # 0B0HRETI;A左移左移;下一个二极管亮;下一个二极管亮
48、;重装计数初值;重装计数初值;中断返回;中断返回例例4:设设80C51的的fosc为为12MHZ,用用T0以中断方式以中断方式2实现对外部脉实现对外部脉冲进行计数,每计满冲进行计数,每计满120个脉冲后使内部个脉冲后使内部40H单元内容加单元内容加1,TR0启动启动; 使用使用T1中断方式中断方式2在在P10口输出口输出5KHZ方波方波1计数初值计算计数初值计算 T0 (外部脉冲计数,外部脉冲计数,方式方式2) (28X) 120 X 28120 136D 88H T1(定时,方式(定时,方式2) TH1=TL1=9CH2. TMOD工作方式字工作方式字 (TMOD) = 0010 0110
49、B = 26 H ORG 0000HAJMP MAIN ORG 000BHINC 40HRETI ORG 001BHCPL P10RETI ORG 0050HMOV SP,#70HMOV TMOD ,#26HMOV TL1,#9CHMOV TH1,#9CHMOV TL0,#88HMOV TH0,#88HMOV 40H, #0MAIN:OK:SETB EASETB ET0SETB ET1SETB TR0SETB TR1SJMP OKEND4.4 串行通讯口一、一、 串行通讯概述串行通讯概述1、并行通讯与串行通讯、并行通讯与串行通讯并行通讯:数据的所有位同时传输并行通讯:数据的所有位同时传输串行通
50、讯:数据的各位一位一位顺序传输串行通讯:数据的各位一位一位顺序传输2、异步通讯和同步通讯、异步通讯和同步通讯1) 同步通讯方式同步通讯方式基本特征是发送与接收时钟需始终保持严格的同步。基本特征是发送与接收时钟需始终保持严格的同步。同步通讯常约定同步通讯常约定12个同步字符指示传输数据流的开始,个同步字符指示传输数据流的开始,用于保证发送和接收端的初始同步用于保证发送和接收端的初始同步同步通讯格式:同步通讯格式:1 1 0 1 0 1 1 0 0 0 0 1 PSYNC:同步字符:同步字符数据的第一位数据的第一位奇偶校验位奇偶校验位特点特点l 以数据块为单位传送信息以数据块为单位传送信息l 在一