《中断系统定时器计数器串行口》由会员分享,可在线阅读,更多相关《中断系统定时器计数器串行口(69页珍藏版)》请在金锄头文库上搜索。
1、中断系统定时器计数器串行口中断系统定时器计数器串行口.单片机的中断系统单片机的中断系统5.1.1中断的概念中断的概念 所谓中断,是指当计算机正在执行正常所谓中断,是指当计算机正在执行正常程序时,系统中出现了某些急需处理的异常程序时,系统中出现了某些急需处理的异常情况和特殊请求。计算机停止正在执行的正情况和特殊请求。计算机停止正在执行的正常程序,转而去处理异常情况,处理完异常常程序,转而去处理异常情况,处理完异常情况后,再回到正常程序的过程。情况后,再回到正常程序的过程。.单片机的中断系统5.1.1中断的概念5.1.2中断源中断源 中断源就是能向中断源就是能向CPU提出申请的部件。提出申请的部件
2、。 注:注:MCS-51单片机(单片机(51子系列)有五个子系列)有五个中断源,其中两个外中断,三个内中断,具中断源,其中两个外中断,三个内中断,具有两个中断优先级,可以实现二级中断嵌套。有两个中断优先级,可以实现二级中断嵌套。5.1.2中断源 中断源就是能向CPU提 内部结构如下:内部结构如下: 内部结构如下:5.1.3中断的控制 定时计数器控制寄存器()定时计数器控制寄存器() TCON 为定时计数器的控制器,单元地址为,为定时计数器的控制器,单元地址为,位地址为,其格式如表位地址为,其格式如表-所示。所示。IT0:外中断:外中断0的触发方式选择位,为的触发方式选择位,为“0”低电平触发,
3、为低电平触发,为“1”下降沿触发,由用户设定。下降沿触发,由用户设定。IE0:外中断:外中断0中断申请标志位中断申请标志位,当满足触发条件时,当满足触发条件时,IE0为为“1”,否则为,否则为“0”,由硬件完成。,由硬件完成。IT1:外中断:外中断1的触发方式选择位,为的触发方式选择位,为“0”低电平触发,为低电平触发,为“1”下降沿触发,由用户设定。下降沿触发,由用户设定。IE1:外中断:外中断1中断申请标志位中断申请标志位,当满足触发条件时,当满足触发条件时,IE1为为“1”,否则为,否则为“0”,由硬件完成。,由硬件完成。5.1.3中断的控制 定时计数器控制寄存器(TR0:为:为T0的启
4、动位,为的启动位,为“1”时时T0开始计数,为开始计数,为“0”时时T0停止计数,由用户设定。停止计数,由用户设定。TF0:为:为T0的溢出标志位,当的溢出标志位,当T0计满数后,计满数后,TF0为为“1”,在中断系统中也称之为中断申请标志位,由,在中断系统中也称之为中断申请标志位,由硬件完成。硬件完成。TR1:为:为T1的启动位,为的启动位,为“1”时时T1开始计数,为开始计数,为“0”时时T1停止计数,由用户设定。停止计数,由用户设定。TF1:为:为T1的溢出标志位,当的溢出标志位,当T1计满数后,计满数后,TF1为为“1”,在中断系统中也称之为中断申请标志位,由,在中断系统中也称之为中断
5、申请标志位,由硬件完成。硬件完成。TR0:为T0的启动位,为“1”时T0开始计数,为“0”时T 串行口控制寄存器()串行口控制寄存器() SCON 为串行接口的控制器,为串行接口的控制器, 单元地址为单元地址为, 位地址为位地址为 , 其格式如表其格式如表 -所示。所示。RI:为串行口的接收标志位,当接收完一帧数据后,:为串行口的接收标志位,当接收完一帧数据后,由硬件置由硬件置“1”。TI:为串行口的发送标志位,当发送完一帧数据后,:为串行口的发送标志位,当发送完一帧数据后,由硬件置由硬件置“1”。 注:其余的注:其余的6位,在串行口中给大家讲解。位,在串行口中给大家讲解。 串行口控制寄存器(
6、) SCO注:注:1、工作在中断方式时:、工作在中断方式时: 这这5个申请标志位都是在满足条件的情况个申请标志位都是在满足条件的情况下,由硬件置下,由硬件置“1”。其中。其中IE0、IE1、TF0、TF1,在系统响应中断后,由硬件清,在系统响应中断后,由硬件清“0”;RI、TI是由软件清是由软件清“0”。是因为这两个标志。是因为这两个标志位共用一个入口地址。位共用一个入口地址。 2、工作在查询方式时:、工作在查询方式时: 这这5个申请标志位都是在满足条件的情况个申请标志位都是在满足条件的情况下,由硬件置下,由硬件置“1”,查询后由软件清,查询后由软件清“0”。注:1、工作在中断方式时: 中断允
7、许控制寄存器中断允许控制寄存器 由于单片机没有专门的开中断和关由于单片机没有专门的开中断和关中断指令,个中断源中断的开放和关闭是通过中断中断指令,个中断源中断的开放和关闭是通过中断允许寄存器允许寄存器 进行两级控制的。所谓两级控制,是进行两级控制的。所谓两级控制,是指有一个中断允许总控制位,配合各中断源的中指有一个中断允许总控制位,配合各中断源的中断允许控制位共同实现对中断请求的控制。断允许控制位共同实现对中断请求的控制。 的单的单元地址为,位地址为,其内容元地址为,位地址为,其内容及位地址如表及位地址如表 -所示。所示。 中断允许控制寄存器 由于EA:总的中断允许,为:总的中断允许,为“0”
8、时禁止中断,为时禁止中断,为“1”时时允许中断(所有的中断源)。允许中断(所有的中断源)。EX0:外中断:外中断0(INT0)中断允许,为)中断允许,为“0”时禁止中时禁止中断,为断,为“1”时允许中断。时允许中断。ET0:定时:定时/计数器计数器T0中断允许,为中断允许,为“0”时禁止中断,时禁止中断,为为“1”时允许中断。时允许中断。EX1:外中断:外中断1(INT1)中断允许,为)中断允许,为“0”时禁止中时禁止中断,为断,为“1”时允许中断。时允许中断。ET1:定时:定时/计数器计数器T1中断允许,为中断允许,为“0”时禁止中断,时禁止中断,为为“1”时允许中断。时允许中断。ES:串行
9、口:串行口S中断允许,为中断允许,为“0”时禁止中断,为时禁止中断,为“1”时允许中断。时允许中断。注:都是由用户设定。注:都是由用户设定。EA:总的中断允许,为“0”时禁止中断,为“1”时允许中断( 中断优先级控制寄存器中断优先级控制寄存器 中断优先级寄存器字节地址为,位中断优先级寄存器字节地址为,位地址为,其内容及位地址如表地址为,其内容及位地址如表 -所示。所示。 中断优先级控制寄存器 中断优先级PX0:外中断:外中断INT0优先级设置,为优先级设置,为“0”时低优先级,时低优先级,为为“1”时高优先级,由用户设置。时高优先级,由用户设置。PT0:定时:定时/计数器计数器T0优先级设置,
10、为优先级设置,为“0”时低优先时低优先级,为级,为“1”时高优先级,由用户设置。时高优先级,由用户设置。PX1:外中断:外中断INT1优先级设置,为优先级设置,为“0”时低优先级,时低优先级,为为“1”时高优先级,由用户设置。时高优先级,由用户设置。PT1:定时:定时/计数器计数器T1优先级设置,为优先级设置,为“0”时低优先时低优先级,为级,为“1”时高优先级,由用户设置。时高优先级,由用户设置。PS:串行口:串行口S优先级设置,为优先级设置,为“0”时低优先级,为时低优先级,为“1”时高优先级,由用户设置。时高优先级,由用户设置。注注:都是有用户设定。:都是有用户设定。PX0:外中断INT
11、0优先级设置,为“0”时低优先级,为“1 注:高优先级中断源可以中断正在执行的低优先级注:高优先级中断源可以中断正在执行的低优先级中断服务程序,同级或低优先级中断源不能中断正中断服务程序,同级或低优先级中断源不能中断正在执行的中断服务程序。在执行的中断服务程序。 注:高优先级中断源可以中断正在执行的低优先级中断服务程中断的处理过程中断的处理过程 中断响应中断响应 某一中断源向某一中断源向 发出中断请求,只有发出中断请求,只有满足下面条件后,才能得到满足下面条件后,才能得到 的响应:的响应: 有中断源发出中断请求;有中断源发出中断请求; 中断总允许位,即中断总允许位,即 开中断;开中断; 申请中
12、断的中断源的中断允许位为,即相申请中断的中断源的中断允许位为,即相应的中断允许标志位为。应的中断允许标志位为。中断的处理过程 中断响应 满足以上条件,满足以上条件,CPU一般会响应中断,一般会响应中断,但如果有下列情况之一,则中断响应被暂时但如果有下列情况之一,则中断响应被暂时搁置:搁置:1、CPU正在执行一个同级或高优先级的中断正在执行一个同级或高优先级的中断服务程序;服务程序;2、当前的机器周期不是正在执行的指令的最后、当前的机器周期不是正在执行的指令的最后一个机器周期,只有在当前指令执行完后,一个机器周期,只有在当前指令执行完后,才能响应中断;才能响应中断;3、当前正在执行的指令时返回指
13、令(、当前正在执行的指令时返回指令(RET、RETI)或访问)或访问IE、IP指令。指令。 满足以上条件,CPU一般会响应中断,但如 中断处理中断处理 中断响应的主要内容就是由硬件自动执行一条中断响应的主要内容就是由硬件自动执行一条长调用指令长调用指令LCALL,其格式为,其格式为LCALL addr16。这。这里的里的addr16就是相应的中断服务程序入口地址。这些就是相应的中断服务程序入口地址。这些中断入口地址已由系统设定。例如对于定时器计数中断入口地址已由系统设定。例如对于定时器计数器的中断响应,自动调用的长调用指令为:器的中断响应,自动调用的长调用指令为: LCALL 000BH 中断
14、处理 中断返回中断返回 中断服务程序的最后一条指令必须是中断返回中断服务程序的最后一条指令必须是中断返回指令指令RETI。CPU 执行完这条指令后,把响应中断时执行完这条指令后,把响应中断时所保护的断点地址从堆栈中弹出,然后装入程序计数所保护的断点地址从堆栈中弹出,然后装入程序计数器器PC 中,中,CPU 就从原来被中断处继续执行原来被中就从原来被中断处继续执行原来被中断的程序。断的程序。 中断返回例题:在单片机的例题:在单片机的P0口外接口外接8路路LED发光管,发光管,用于流水灯显示,在外中断用于流水灯显示,在外中断0(P3.2)引脚外接引脚外接一独立式按,来控制流水灯的方向(中断方一独立
15、式按,来控制流水灯的方向(中断方式)。式)。例题:在单片机的P0口外接8路LED发光管,用于流水灯显示, ORG 0000H LJMP ST ORG 0003H LJMP INT0 ORG 0050HST: MOV SP, #2FH MOV A, #0FEH SETB IT0 SETB EA SETB EX0 CLR F0 ST1:JB F0, RRR MOV P0, A LCALL DEL RL A SJMP ST1RRR:MOV P0,A LCALL DEL RR A SJMP ST1DEL :MOV R7,#00HDEL1:MOV R6,#00HDEL2:NOP NOP NOP NOP
16、DJNZ R6, DEL2 DJNZ R7, DEL1 RETINT0: CPL F0 RETI END ORG 0000HDEL :MOV R7,#.定时器计数器定时器计数器5.2.1定时器计数器的结构和工作原理定时器计数器的结构和工作原理 80C51单片机中设置有两个单片机中设置有两个16位的可编程位的可编程的定时器计数器的定时器计数器T0、T1,其结构如图,其结构如图 -所示。通过用户设定,都可以工作在计数所示。通过用户设定,都可以工作在计数或者定时状态。或者定时状态。 .定时器计数器5.2.1定时器计数器的结构和工作5.2.2定时器计数器的控制定时器计数器的控制1、 工作方式寄存器工作
17、方式寄存器 用于控制用于控制 和和 的工作方式,的工作方式, 字节地址为,字节地址为, 其各位的定义格式如表其各位的定义格式如表- 所示,不可位寻址,低所示,不可位寻址,低4位控制位控制T0,高,高4位控制位控制T1。5.2.2定时器计数器的控制1、 工作方式寄存器 (1)工作方式选择位、)工作方式选择位、 定时器计数器的工作方式由、定时器计数器的工作方式由、的状态确定,其对应关系如表的状态确定,其对应关系如表- 所示。所示。 (1)工作方式选择位、 (2)定时器计数器方式选择位)定时器计数器方式选择位 为为“0”时,工作在定时状态时,工作在定时状态 为为“1”时,工作在计数状态时,工作在计数
18、状态 (3)门控位)门控位 为为“0”时,无门控时,无门控 为为“1”时,有门控时,有门控注:注:TMOD都是由用户通过软件设置。都是由用户通过软件设置。 (2)定时器计数器方式选择位、 定时器计数器控制寄存器定时器计数器控制寄存器 控制寄存器控制寄存器 的主要功能是为定的主要功能是为定时器在溢出时设定标志位,并控制定时器的时器在溢出时设定标志位,并控制定时器的运行或停止。运行或停止。 单元地址为,单元地址为,位地址为,其格式如表位地址为,其格式如表- 所示。所示。、 定时器计数器控制寄存器TR0:为:为T0的启动位,为的启动位,为“1”时时T0开始计数,为开始计数,为“0”时时T0停止计数,
19、由用户设定。停止计数,由用户设定。TF0:为:为T0的溢出标志位,当的溢出标志位,当T0计满数后,计满数后,TF0为为“1”,在中断系统中也称之为中断申请标志位,由,在中断系统中也称之为中断申请标志位,由硬件完成。硬件完成。TR1:为:为T1的启动位,为的启动位,为“1”时时T1开始计数,为开始计数,为“0”时时T1停止计数,由用户设定。停止计数,由用户设定。TF1:为:为T1的溢出标志位,当的溢出标志位,当T1计满数后,计满数后,TF1为为“1”,在中断系统中也称之为中断申请标志位,由,在中断系统中也称之为中断申请标志位,由硬件完成。硬件完成。TR0:为T0的启动位,为“1”时T0开始计数,
20、为“0”时T5.2.3定时器计数器的工作方式定时器计数器的工作方式1、方式、方式0(以(以T0为例)为例) 定时器定时器 方式的结构框图如图方式的结构框图如图 -所示,为所示,为13位定时位定时/计数器。计数器。5.2.3定时器计数器的工作方式1、方式0(以T0为例(1)T0工作的状态由工作的状态由C/T控制,为控制,为“0”时定时,为时定时,为“1”时计时计数。数。(2)T0启动由启动由TR0(启动位)、(启动位)、GATR(门控位)、(门控位)、INT0(外引脚(外引脚P3.2)控制。)控制。 GATR=0:TR0=1时,时,T0启动工作启动工作 TR0=0时,时,T0禁止工作禁止工作 G
21、ATR=1:TR0=1且且INT0=1时,时,T0启动工作启动工作 TR0=0或或INT0=0时,时,T0禁止工作禁止工作 (3)计数时,由外引脚输入计数脉冲)计数时,由外引脚输入计数脉冲 N:为计数值(已知):为计数值(已知) a:计数初值(未知量):计数初值(未知量) 最大计数:最大计数:8192个脉冲个脉冲 定时时,由时钟的定时时,由时钟的12分频作为计数脉冲分频作为计数脉冲 t:为定时时间,若:为定时时间,若fosc=12MHz,tmax=8.192ms (1)T0工作的状态由C/T控制,为“0”时定时,为“1”时注:注:1、8051单片机的定时单片机的定时/计数器都是对输入的脉冲计数
22、器都是对输入的脉冲进行进行+1计数。计数。 2、计数时由外引脚输入计数脉冲,再由、计数时由外引脚输入计数脉冲,再由13位的位的计数器进行计数。计数器进行计数。 3、定时时由内部时钟的、定时时由内部时钟的12分频后,再由分频后,再由13位的位的计数器进行计数,最后得到时间。计数器进行计数,最后得到时间。 4、由于是、由于是+1计数,计满后产生溢出位计数,计满后产生溢出位TF0,所,所以用户根据需要计数或定时时间的大小,计算出定以用户根据需要计数或定时时间的大小,计算出定时时/计数器的初值计数器的初值a,再通过软件放入定时,再通过软件放入定时/计数器计数器的高的高8位(位(TH0)和低)和低5位(
23、位(TL0)中。)中。 5、由于方式、由于方式0是是13位定时计数器(低位定时计数器(低8位中的高位中的高3位不用),所以在放数时要避开这位不用),所以在放数时要避开这3位。位。 6、由于方式、由于方式0不能自动装入初值,故在溢出后,不能自动装入初值,故在溢出后,需通过软件再次装入初值给需通过软件再次装入初值给TL0和和TH0。注:1、8051单片机的定时/计数器都是对输入的脉冲进行+1例例5-4用定时器用定时器T1,工作方式,工作方式0实现定时,并在实现定时,并在P1.0引引脚上输出周期为脚上输出周期为10ms的方波,设晶振的方波,设晶振Fosc 12MHz。解:(解:(a)确定工作方式)确
24、定工作方式对对TMOD 赋值赋值,使用使用T1, 所以低所以低 位未用,位未用, 全部设为,全部设为, 高高 位中位中GATE=0,C/T=0,M1M0=00,所以,所以TMOD=00H。 (b)预置定时或计数的初值)预置定时或计数的初值 要在要在P1.0引脚上输出周期为引脚上输出周期为10ms的方波,只要的方波,只要每隔每隔5ms将将P1.0取反一次就可以了。因此选用取反一次就可以了。因此选用T1在方在方式下定时时间为式下定时时间为5ms,则,则T1的初值为:的初值为:t=(8192-a)X12/Fosc, 已知已知t=5ms, Fosc 12MHz则则a=3192=C78H=0000 11
25、00 0111 1000B,因因13位计数位计数器中器中TL1的高位未用,可填写任意值,一般填写的高位未用,可填写任意值,一般填写,TH1占高位,所以,占高位,所以,a的实际填写值应为:的实际填写值应为:a=0110001100011000B6318H,即:,即:TH1=63H,TL1=18H。例5-4用定时器T1,工作方式0实现定时,并在P1.0引脚 中断方式:中断方式: ORG 0000H LJMP MAIN ORG 001BH LJMP PTT1 ORG 0050HMAIN:MOV SP,#50H MOV TMOD , #00H MOV TL1,#18H MOV TH1,#63H SET
26、B EA SETB ET1 SETB TR1 SJMP $ ORG 0200H PTT: MOV TL1,#18H MOV TH1,#63H CPL P1.0 RETI END见5-4 中断方式: ORG 查询方式:查询方式: ORG 0000H LJMP MAIN ORG 0050H MOV TMOD,#00H MOV TL1,#18H MOV TH1,#63H SETB TR1 LOOP: JBC TF1,LOOP0 SJMP LOOP LOOP0:MOV TL1,#18H MOV TH1,#63H CPL P1.0 SJMP LOOP END 见见5-4B注:注:1、中断方式时,溢出标、
27、中断方式时,溢出标志位,由系统硬件清志位,由系统硬件清“0”; 2、查询方式时,溢出标、查询方式时,溢出标志位,由用户请志位,由用户请“0”; 3、JBC 指令,可自动对指令,可自动对判断位请判断位请“0”。 4、方式、方式0不能自动装入初不能自动装入初值。值。 查询方式:注:1、中断方式时,溢出标志位,由系统硬件清“0”2. 工作方式工作方式 方式方式1和方式和方式0的差别仅仅在于计数器的位数不的差别仅仅在于计数器的位数不同,方式同,方式1为为16位的定时器计数器。定时器位的定时器计数器。定时器T0工工作于方式作于方式1的结构框图如图的结构框图如图5-8所示。所示。2. 工作方式注:(注:(
28、1)控制同方式)控制同方式0 (2)计数时,由外引脚输入计数脉冲)计数时,由外引脚输入计数脉冲 N:为计数值(已知):为计数值(已知) a:计数初值(未知量):计数初值(未知量) 最大计数:最大计数:65536个脉冲个脉冲 定时时,由时钟的定时时,由时钟的12分频作为计数脉冲分频作为计数脉冲 t:为定时时间,若:为定时时间,若fosc=12MHz,tmax=65.536ms (3)编程方法同方式)编程方法同方式0,不能自动装入初值,不能自动装入初值a。注:(1)控制同方式0 工作方式工作方式 工作方式工作方式2为自动重装载的为自动重装载的8位定时器计位定时器计数器,在工作方式数器,在工作方式2
29、时,时,16位计数器被拆成两位计数器被拆成两个,个,TL0用作用作8位计数器,位计数器,TH0用作计数初值用作计数初值寄存器。定时器寄存器。定时器T0 工作于方式工作于方式 的结构框图的结构框图如图如图5-9所示。所示。 工作方式注:(注:(1)控制同方式)控制同方式0 (2)TL0为计数单元,为计数单元,TH0为预赋初值单元(不参与计数)为预赋初值单元(不参与计数)。 (3)计数时,由外引脚输入计数脉冲)计数时,由外引脚输入计数脉冲 N:为计数值(已知):为计数值(已知) a:计数初值(未知量):计数初值(未知量) 最大计数:最大计数:256个脉冲个脉冲 定时时,由时钟的定时时,由时钟的12
30、分频作为计数脉冲分频作为计数脉冲 t:为定时时间,若:为定时时间,若fosc=12MHz,tmax=256us (4)编程方式同上,但能自动装入初值)编程方式同上,但能自动装入初值a(通过(通过TH0)。)。注:(1)控制同方式0例:利用例:利用T0工作方式实现定时,在工作方式实现定时,在P1.0口输出一个口输出一个1KHz的方波信号的方波信号Fosc=6MHz。解:(解:(a)确定工作方式)确定工作方式对对TMOD 赋值赋值,使用使用T0, 所以高所以高 位未用,位未用, 全部设为,全部设为, 低低 位中位中GATE=0,C/T=0,M1M0=10,所以,所以TMOD=02H。 (b)预置定
31、时或计数的初值)预置定时或计数的初值 要在要在P1.0引脚上输出周期为引脚上输出周期为1KHz的方波,则的方波,则方波的周期为方波的周期为1000ms,只要每隔,只要每隔500us将将P1.0取取反一次就可以了。因此选用反一次就可以了。因此选用T0在方式在方式2下定时时间下定时时间为为500us,则,则T0的初值为:的初值为:t=(256-a)X12/Fosc, 已已知知t=500us, Fosc 6MHz则则a=6D=06H,因因TL0作为作为计数单元,计数单元,TH0作为预赋初值单元,故高低作为预赋初值单元,故高低8位同时位同时赋初值赋初值a即:即:TH0=06H,TL0=06H。例:利用
32、T0工作方式实现定时,在P1.0口输出一个1KHz ORG 0000H LJMP MAIN ORG 000BH LJMP TT0 ORG 0030HMAIN:MOV TMOD,#02H MOV TH0,#06 MOV TL0,#06 SETB EA SETB ET0 SETB TR0 SJMP $ TT0: CPL P1.0 RETI END注:方式注:方式2能自动装入初值,能自动装入初值,故在溢出后,无需通过软件故在溢出后,无需通过软件再对计数单元装入初值,而再对计数单元装入初值,而是由硬件系统自动装入初值。是由硬件系统自动装入初值。 ORG 0000H注:方式2能自动装入初值 工作方式工作
33、方式 工作方式工作方式3是为了增加一个附加的是为了增加一个附加的8位定时器计数器而位定时器计数器而提供的,使提供的,使80C51具有个定时器计数器。工作方式具有个定时器计数器。工作方式3只只适用于定时器计数器适用于定时器计数器T0,定时器计数器,定时器计数器T1处于方式处于方式时相当于时相当于TR1=0,停止计数。定时器,停止计数。定时器T0工作于方式的结构工作于方式的结构框图如图框图如图5-10所示。所示。 工作方式注:(注:(1)T0工作在方式工作在方式3时,时,T1只能用于比特率发生器(不只能用于比特率发生器(不能作为一般的定时能作为一般的定时/计数器使用)。计数器使用)。 (2)T0工
34、作于方式工作于方式3时,将时,将16位的计数单元分成两个独立位的计数单元分成两个独立的计数单元。低的计数单元。低8位位TL0占用了本身的控制位(占用了本身的控制位(C/T、GATE、TR0、INT0、TF0),可作为定时或计数器使;高),可作为定时或计数器使;高8位位TH0占占用了用了T1的启动位的启动位TR1和溢出位和溢出位TF1,只可作为定时器使用。,只可作为定时器使用。 (3)计数时,由外引脚输入计数脉冲计数时,由外引脚输入计数脉冲 N:为计数值(已知):为计数值(已知) a:计数初值(未知量):计数初值(未知量) 最大计数:最大计数:256个脉冲个脉冲 定时时,由时钟的定时时,由时钟的
35、12分频作为计数脉冲分频作为计数脉冲 t:为定时时间,若:为定时时间,若fosc=12MHz,tmax=256us (4)编程方式同方式)编程方式同方式1,不能自动装入初值。,不能自动装入初值。注:(1)T0工作在方式3时,T1只能用于比特率发生器(不能5.3串行通信技术串行通信技术5.3.1串行通信的基本概念串行通信的基本概念 数据通信的基本方式数据通信的基本方式图图5-14 为并行通信和串行通信的原理。为并行通信和串行通信的原理。5.3串行通信技术5.3.1串行通信的基本概念 异步通信和同步通信异步通信和同步通信 在异步通信中,数据通常是以字符(或字节)在异步通信中,数据通常是以字符(或字
36、节) 为单位组为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,通过传成字符帧传送的。字符帧由发送端一帧一帧地发送,通过传输线为接收设备一帧一帧地接收。发送端和接收端可以有各输线为接收设备一帧一帧地接收。发送端和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步在异步通信中,数据是一帧一帧(包括一个字符代互不同步在异步通信中,数据是一帧一帧(包括一个字符代码或以字节数据)发送的,每一帧的数据格式如图码或以字节数据)发送的,每一帧的数据格式如图- 所示。所示。 异步通信和同步通信()同步通信()同步通信 同步通信
37、是指在一个数据块的开头使用同步字符。数据同步通信是指在一个数据块的开头使用同步字符。数据传送时使用同一频率的时钟脉冲来实现发送端与接收端的严传送时使用同一频率的时钟脉冲来实现发送端与接收端的严格时间同步。这种时钟脉冲称为同步脉冲,数据同步传送的格时间同步。这种时钟脉冲称为同步脉冲,数据同步传送的格式如图格式如图 -所示。所示。()同步通信 波特率波特率 波特率的定义是每秒钟传送二进制数码波特率的定义是每秒钟传送二进制数码的位数(亦称数),单位是。的位数(亦称数),单位是。波特率是串行通信的重要指标,用于表征数波特率是串行通信的重要指标,用于表征数据传送的速率。波特率越高,数据传输速度据传送的速
38、率。波特率越高,数据传输速度越快。字符的实际传送速率与波特率不同。越快。字符的实际传送速率与波特率不同。字符的实际传送速率是指每秒钟内所传字符字符的实际传送速率是指每秒钟内所传字符帧的帧数,与字符帧格式有关。帧的帧数,与字符帧格式有关。 波特率 串行通信的制式串行通信的制式 在串行通信中,数据是在两个站之间进行传送的,按照在串行通信中,数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工()、数据传送方向,串行通信可分为单工()、半双工()和全双工(半双工()和全双工()种制式。图)种制式。图- 为种制式的示意图。为种制式的示意图。 串行通信的制式5.3.2 串行通信总线标准及其
39、接口串行通信总线标准及其接口 串行通信接口串行通信接口异步串行通信接口有以下种异步串行通信接口有以下种5.3.2 串行通信总线标准及其接口- 接口接口()()- 信息格式标准信息格式标准 RS-232C 采用串行格式,该标准规定:采用串行格式,该标准规定:信息的开始为起始位,信息的结束为停止位;信息的开始为起始位,信息的结束为停止位;信息本身可以是信息本身可以是5、6、7、8位再加一位奇偶位再加一位奇偶校验位。如果两个信息之间无信息,则写校验位。如果两个信息之间无信息,则写“”,表示空。其格式标准如图,表示空。其格式标准如图5-18所示。所示。- 接口()()- 电平转换器电平转换器()()-
40、 总线规定总线规定 - 标准总线为根,采用标准的标准总线为根,采用标准的 型芯插头座型芯插头座RS-449、RS-422A、RS-423A标准接口标准接口()()-标准接口标准接口 -是年公布的标准接口,在很是年公布的标准接口,在很多方面可以代替多方面可以代替- 使用。使用。()()-、- 标准接口标准接口- 文本给出了文本给出了-中对于通信电缆、中对于通信电缆、驱动器和接收器的要求驱动器和接收器的要求()- 电平转换器-标准接口标准接口-标准接口5.3.3串行口的结构与控制串行口的结构与控制1. 80C51串行口的结构串行口的结构 80C51单片机通过引脚单片机通过引脚RXD (P3.0串行
41、串行数据接收端)、数据接收端)、TXD (P3.1,串行数据发送,串行数据发送端)与外界进行通信。串行接口简化结构如端)与外界进行通信。串行接口简化结构如图图 -所示。所示。5.3.3串行口的结构与控制串行接口的控制寄存器串行接口的控制寄存器()串行控制寄存器()串行控制寄存器 是一个特殊功能寄存器,用以是一个特殊功能寄存器,用以设定串行接口的工作方式、接收发送控制设定串行接口的工作方式、接收发送控制及设置状态标志。字节地址为,可进及设置状态标志。字节地址为,可进行位寻址,其格式如表行位寻址,其格式如表 -所示。所示。串行接口的控制寄存器()串行控制寄存器SM0、SM1:串行口工作方式选择:串
42、行口工作方式选择 0 0 方式方式0、8位移位寄存器方式位移位寄存器方式 0 1 方式方式1、10位异步通信方式位异步通信方式 1 0 方式方式2、11位异步通信方式位异步通信方式 1 1 方式方式3、11位异步通信方式位异步通信方式SM2:多机通信位:多机通信位 方式方式0时必须为时必须为“0”,一般用于方式,一般用于方式2、3的接收端。的接收端。中断系统定时器计数器串行口REN:允许接收标志位,用在接收端,为:允许接收标志位,用在接收端,为“0”时禁止接收,为时禁止接收,为“1”时允许接收。时允许接收。TB8:发送的第九位数,用在方式:发送的第九位数,用在方式2、3中的发中的发送端。送端。
43、RB8:接收的第九位数,用在方式:接收的第九位数,用在方式2、3中的接中的接收端。收端。TI:为串行口的发送标志位,当发送完一帧数:为串行口的发送标志位,当发送完一帧数据后,由硬件置据后,由硬件置“1”。 RI:为串行口的接收标志位,当接收完一帧数:为串行口的接收标志位,当接收完一帧数据后,由硬件置据后,由硬件置“1”。注:注:TI、RI都是由硬件置都是由硬件置“1”,都是由软件清,都是由软件清“0” ( 不管是中断方式,还是查询方式)。不管是中断方式,还是查询方式)。REN:允许接收标志位,用在接收端,为“0”时禁止接收,为“5.3.4串行口的工作方式及波特率计算串行口的工作方式及波特率计算
44、 串行口工作方式串行口工作方式()工作方式()工作方式 工作方式时,串行口为同步移位寄存器工作方式时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或的输入输出方式。主要用于扩展并行输入或输出口。数据由输出口。数据由RXD (P3.0)引脚输入或输)引脚输入或输出,同步移位脉冲由出,同步移位脉冲由TXD (P3.1)引脚输出。)引脚输出。发送和接收均为位数据,低位在先,高位发送和接收均为位数据,低位在先,高位在后。在后。5.3.4串行口的工作方式及波特率计算 串行口工作方a、发送:、发送: 电路:电路:RXD为输出端为输出端 TXD为时钟脉冲输出端为时钟脉冲输出端条件:条件:TI=
45、0启动:将数据写入启动:将数据写入SBUF(MOV SBUF,A)。过程:先发过程:先发D0、D1、.最后最后D7。停止:发送完停止:发送完D7位后,停止,同时位后,停止,同时TI=1。b、接收:、接收:电路:电路: RXD为输入端为输入端 TXD为时钟脉冲输出端为时钟脉冲输出端条件:条件:RI=0启动:启动:REN=1过程:先收过程:先收D0、D1、.最后最后D7。停止:接收到停止:接收到D7位后,停止,位后,停止, 数据装入数据装入SBUF,同时同时RI=1。注:方式注:方式0时,时,SM2必须为必须为“0”。a、发送:()工作方式()工作方式 工作方式为波特率可调的位通用异步工作方式为波
46、特率可调的位通用异步通信接口。发送或接收一帧信息为位,通信接口。发送或接收一帧信息为位,分别为位起始位(),位数据位和分别为位起始位(),位数据位和位停止位()。电路如下:位停止位()。电路如下:()工作方式a、发送:、发送:条件:条件:TI=0启动:将启动:将8位数写入位数写入SBUF(MOV SBUF,A)。过程:先发起始位过程:先发起始位“0”,再发,再发8位数据位位数据位D0、D1D7,最后停止位,最后停止位“1”。停止:停止:D7位移出后,停止,位移出后,停止,TI=1申请中断。申请中断。b、接收:、接收:条件:条件:RI=0且且REN=1启动:检测引脚启动:检测引脚RXD出现下降沿
47、,启动。出现下降沿,启动。过程:先检测起始位过程:先检测起始位“0”,无有效的起始位,回到上一级,继续等待。,无有效的起始位,回到上一级,继续等待。 有有效的起始位,再接收有有效的起始位,再接收8位数据位(位数据位(D0.D7),最后停止位。),最后停止位。停止:停止:SM2=0时,直接将时,直接将8位数据装入位数据装入SBUF,同时同时RI=1,申请中断。申请中断。 SM2=1时,先判停止位,时,先判停止位, 有有效的停止位有有效的停止位“1”,将,将8位数据位装入位数据位装入SBUF,同时,同时RI=1,申请中申请中断。断。 无有效的停止位无有效的停止位“1”,接收到的,接收到的8位数据位
48、,直接丢弃掉。位数据位,直接丢弃掉。中断系统定时器计数器串行口()工作方式、方式()工作方式、方式 在工作方式、方式下,串行口为位在工作方式、方式下,串行口为位异步通信接口,发送、接收一帧信息为异步通信接口,发送、接收一帧信息为位:即位起始位()、位数据位、位:即位起始位()、位数据位、位可编程位和位停止位()。位可编程位和位停止位()。()工作方式、方式a、发送:、发送:条件:条件:TI=0启动:先将第启动:先将第9位数写入位数写入TB8,再将再将8位数写入位数写入SBUF (MOV SBUF,A)。过程:先发起始位过程:先发起始位“0”,再发,再发8位数据位位数据位D0、D1D7,接着发第
49、,接着发第9位数位数(TB8),最后停止位),最后停止位“1”。停止:停止:TB8位移出后,停止,位移出后,停止,TI=1申请中断。申请中断。b、接收:、接收:条件:条件:RI=0且且REN=1启动:检测引脚启动:检测引脚RXD出现下降沿,启动。出现下降沿,启动。过程:先检测起始位过程:先检测起始位“0”,无有效的起始位,回到上一级,继续等待。,无有效的起始位,回到上一级,继续等待。 有有效的起始位,再接收有有效的起始位,再接收9位数据位(位数据位(D0.D8)。)。停止:停止:SM2=0时,将第时,将第9位数装入位数装入RB8, 将将8位数装入位数装入SBUF,同时同时RI=1,申请中断。申请中断。 SM2=1时,第时,第9位数为位数为“1”,将第,将第9位数装入位数装入RB8, 8位数装入位数装入SBUF,同时,同时RI=1,申请中断。申请中断。 第第9位数位数“0”,接收到的,接收到的9位数据,全部丢弃。位数据,全部丢弃。a、发送: 串行口的波特率计算串行口的波特率计算 串行口的波特率计算中断系统定时器计数器串行口中断系统定时器计数器串行口中断系统定时器计数器串行口中断系统定时器计数器串行口中断系统定时器计数器串行口中断系统定时器计数器串行口中断系统定时器计数器串行口中断系统定时器计数器串行口中断系统定时器计数器串行口感谢聆听