第6章内部资源及应用

上传人:桔**** 文档编号:569498638 上传时间:2024-07-30 格式:PPT 页数:78 大小:1.15MB
返回 下载 相关 举报
第6章内部资源及应用_第1页
第1页 / 共78页
第6章内部资源及应用_第2页
第2页 / 共78页
第6章内部资源及应用_第3页
第3页 / 共78页
第6章内部资源及应用_第4页
第4页 / 共78页
第6章内部资源及应用_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《第6章内部资源及应用》由会员分享,可在线阅读,更多相关《第6章内部资源及应用(78页珍藏版)》请在金锄头文库上搜索。

1、第第6 6章章 80C51 80C51单片机内部资源及应用单片机内部资源及应用 6.1 6.1 中断系统和外部中断中断系统和外部中断 中中断断是一项重要的计算机技术,采用中断技术可以使多是一项重要的计算机技术,采用中断技术可以使多个任务共享一个资源,所以中断技术实质上就是一种个任务共享一个资源,所以中断技术实质上就是一种资源共资源共享技术。享技术。 80C51 80C51是一个多中断源的单片机,有是一个多中断源的单片机,有3 3类共类共5 5个中断源,分个中断源,分别是外部中断别是外部中断2 2个,定时中断个,定时中断2 2个和串行中断个和串行中断1 1个。个。 外部中断是由外部原因引起的,共

2、有外部中断是由外部原因引起的,共有2 2个中断源,即外部个中断源,即外部中断中断0 0和外部中断和外部中断1 1。它们的中断请求信号分别由。它们的中断请求信号分别由80C5180C51外部引外部引脚脚 (P3.2P3.2)和)和 (P3.3P3.3)输入。)输入。 定时中断是为满足定时或计数的需要而设置的。定时中断是为满足定时或计数的需要而设置的。 串行中断是为串行数据传送的需要而设置的。串行中断是为串行数据传送的需要而设置的。杭惶懊蠕枫设配娄赌梧赫迪洼敬刽忿锭著酬茂蛋寒慑述旋椎汐衡峨团扒眉第6章内部资源及应用第6章内部资源及应用16.1.1 6.1.1 中断技术概述中断技术概述1. 1. 中

3、断的概念中断的概念当中央处理器当中央处理器CPUCPU正在执行某程序时,由于某种原因,外正在执行某程序时,由于某种原因,外界向界向CPUCPU发出了发出了暂停目前工作去处理更重要事件的请求,暂停目前工作去处理更重要事件的请求,程序程序被打断,被打断,CPUCPU响应该请求并转入相应的处理程序,处理程序完响应该请求并转入相应的处理程序,处理程序完成以后,再返回到原来程序被打断的位置,继续原来工作,成以后,再返回到原来程序被打断的位置,继续原来工作,这一过程称为这一过程称为中断中断。实现中断功能的部件称为。实现中断功能的部件称为中断系统中断系统。2. 2. 中断技术的作用中断技术的作用计算机内有限

4、的计算机内有限的CPUCPU资源要处理多项任务,实现多种外部资源要处理多项任务,实现多种外部设备之间外部数据传送,必然引起设备之间外部数据传送,必然引起CPUCPU资源短缺的局面。计算资源短缺的局面。计算机引入中断技术后,机引入中断技术后,解决了这种资源竞争的问题解决了这种资源竞争的问题,因此中断,因此中断技术实质上是一种资源共享技术。基于这种资源共享思想,技术实质上是一种资源共享技术。基于这种资源共享思想,中断技术主要用于中断技术主要用于分时操作、实时处理、故障及时处理分时操作、实时处理、故障及时处理等。等。琵忍卧峙淤弄积摇痔扛赠婴泻渭豹跺她绒吹祷百奖漂辣斟烙岸控持上相疥第6章内部资源及应用

5、第6章内部资源及应用23. 3. 中断系统功能中断系统功能中断系统一般要完成以下功能。1 1)现场保护和现场恢复)现场保护和现场恢复某人看书某人看书 执行主程序执行主程序 日常事务日常事务电话铃响电话铃响 中断信号中断信号INT=0INT=0 中断请求中断请求暂停看书暂停看书 暂停执行主程序暂停执行主程序 中断响应中断响应书中记号书中记号 当前当前PCPC入栈入栈 保护断点保护断点电话谈话电话谈话 执行执行I/OI/O程序程序 中断服务中断服务继续看书继续看书 返回主程序返回主程序 中断返回中断返回日日常常事事务务程程序序中中断断服服务务程程序序领澜境隅极菇倾逻易究粟趟牵圃妻昧赫丸酮墟堰辊专酌

6、袋沙饥筹雏塘衫忿第6章内部资源及应用第6章内部资源及应用3主程序被断开的位置称为主程序被断开的位置称为断点断点,为了,为了CPUCPU完成中断服完成中断服务后,能够返回到原主程序的位置,就要保护断点务后,能够返回到原主程序的位置,就要保护断点处的现场状态,即将断点处的处的现场状态,即将断点处的PCPC值、相关寄存器的值、相关寄存器的内容、标志位等状态压入堆栈保存,该操作被称为内容、标志位等状态压入堆栈保存,该操作被称为保护断点和现场保护断点和现场。 中断服务结束后,在返回主程序前,要将被保护的中断服务结束后,在返回主程序前,要将被保护的断点和现场恢复,即弹出堆栈中被保存的内容至各断点和现场恢复

7、,即弹出堆栈中被保存的内容至各相关寄存器,相关寄存器,该操作被称为现场恢复该操作被称为现场恢复。汇编语言程。汇编语言程序员在使用中断时,需要仔细考虑现场的保护和恢序员在使用中断时,需要仔细考虑现场的保护和恢复,高级程序员无需关心该问题,复,高级程序员无需关心该问题,C C编译器会自动完编译器会自动完成现场保护和恢复。成现场保护和恢复。篓腑护吼阐宴尽溶哟免照徒敞瑶河髓角约爷红莲旧藏瞩趋互磁缩仅渤饭怯第6章内部资源及应用第6章内部资源及应用42 2)中断优先权排队)中断优先权排队通常微型计算机系统有多个中断源,当有两个以通常微型计算机系统有多个中断源,当有两个以上的中断源同时向上的中断源同时向CP

8、UCPU提出中断请求时,提出中断请求时,CPUCPU面临首先面临首先为哪个中断源先服务的问题,微型计算机内都为这些为哪个中断源先服务的问题,微型计算机内都为这些中断源规定了中断响应的先后顺序中断源规定了中断响应的先后顺序优先级别,即优先级别,即不同的中断源享有不同的优先响应权利,称为不同的中断源享有不同的优先响应权利,称为中断优中断优先权先权,CPUCPU对多个中断源响应的优先权由高到低的排对多个中断源响应的优先权由高到低的排队,称为队,称为优先权排队优先权排队。CPUCPU总是首先响应优先权级别总是首先响应优先权级别高的中断请求。高的中断请求。若堡走砧污茫宽卵北霖敖惫卖疏客葱米猾柄榔彬棱脓禄

9、某继迂山谊譬北拷第6章内部资源及应用第6章内部资源及应用5日常事务日常事务程序程序中断服务中断服务程序程序1 1中断服务中断服务程序程序2 23 3)中断嵌套)中断嵌套当当CPUCPU正在执行某一中断服务程序时,可能有优先级别正在执行某一中断服务程序时,可能有优先级别更高的中断源发出中断请求,此时,更高的中断源发出中断请求,此时,CPUCPU将暂停当前的优先将暂停当前的优先级别低的中断服务,转而去处理优先级更高的中断申请,处级别低的中断服务,转而去处理优先级更高的中断申请,处理完后,再回到原低级中断处理程序,这一过程称为理完后,再回到原低级中断处理程序,这一过程称为中断嵌中断嵌套套,该中断系统

10、称为,该中断系统称为多级中断系统多级中断系统。没有中断嵌套功能的中。没有中断嵌套功能的中断系统称为断系统称为单级中断系统单级中断系统。户砾尘湘锗喉妇刮代懒管声挞争揣劝彭叠钉泻嫡词大耍手撤曳晦镣抚撅沈第6章内部资源及应用第6章内部资源及应用66.1.2 80C516.1.2 80C51单片机中断系统单片机中断系统80C5180C51中断系统由中断源、中断标志、中断允许控制、中断优中断系统由中断源、中断标志、中断允许控制、中断优先级控制、中断查询硬件以及相应的特殊功能寄存器组成。先级控制、中断查询硬件以及相应的特殊功能寄存器组成。凝澎牧漏韦漂永推僚翰遁若正汉拷抉毛对呸委偷笋蓖酪舶瘦粘刁哭矣吵烫第6

11、章内部资源及应用第6章内部资源及应用71. 1. 中断源中断源80C5l80C5l共有共有3 3类类5 5个中断源,分别是个中断源,分别是2 2个外部中断源、个外部中断源、2 2个定时个定时中断源、中断源、1 1个串行口接收个串行口接收/ /发送中断源。发送中断源。1 1)外部中断)外部中断外部中断是由外部请求信号或掉电等异常事故引起的,共有外部中断是由外部请求信号或掉电等异常事故引起的,共有2 2个中断源:外部中断个中断源:外部中断0 0和和1 1,分别由引脚,分别由引脚 (P3.2P3.2)和)和 (P3.3P3.3)引入。)引入。2 2)定时中断)定时中断80C5l80C5l单片机内有两

12、个定时器单片机内有两个定时器/ /计数器计数器T0T0、T1T1,通过一种计数,通过一种计数结构,实现定时结构,实现定时/ /计数功能,当计数值发生溢出时,表明已计数功能,当计数值发生溢出时,表明已经达到预期定时时间或计数值,定时器经达到预期定时时间或计数值,定时器/ /计数器的中断请求计数器的中断请求标志位标志位TF0TF0或或TF1TF1被置被置1 1,也就向,也就向CPUCPU发出了中断请求的申请。发出了中断请求的申请。3 3)串行口中断)串行口中断当串行口接收或发送完一组数据时,便产生一个中断请求,当串行口接收或发送完一组数据时,便产生一个中断请求,特殊功能寄存器特殊功能寄存器SCON

13、SCON中的中的RIRI或或TITI被置被置1 1。博慌斗姬惮羔某扬槛河峙技盼沏绣跃崭浚墙疑海冲辟捣膳嗡篇余淆裔粟呵第6章内部资源及应用第6章内部资源及应用82. 2. 中断请求标志中断请求标志 要实现中断,要实现中断,首先中断源要提出中断请求首先中断源要提出中断请求,单片机内中断,单片机内中断请求的过程是特殊功能寄存器请求的过程是特殊功能寄存器TCONTCON和和SCONSCON相关状态位相关状态位中断中断请求标志位置请求标志位置1 1的过程,当的过程,当CPUCPU响应中断时,中断请求标志位才响应中断时,中断请求标志位才由硬件或软件清由硬件或软件清0 0。1 1)TCONTCON中的中断标

14、志位中的中断标志位 该寄存器用于保存外部中断请求,以及作为定时器的计数该寄存器用于保存外部中断请求,以及作为定时器的计数溢出标记。既可以对其整个字节寻址,又溢出标记。既可以对其整个字节寻址,又可对其位寻址可对其位寻址。寄存。寄存器地址器地址88H88H,位地址,位地址8FH8FH88H88H,这个寄存器既有,这个寄存器既有定时器定时器/ /计数器计数器的控制功能的控制功能又有又有中断控制功能中断控制功能,其中与中断有关的控制位共,其中与中断有关的控制位共6 6位:位:IE0IE0和和IE1IE1、IT0IT0和和IT1IT1以及以及TF0TF0和和TF1TF1。殊书侗雨醛满昼彝棋付射占旨扼卸灿

15、牡防休掘惑帮筒咱夏茁姿喧蚊序啊啄第6章内部资源及应用第6章内部资源及应用91.1.中断标志位:中断标志位: TF1 TF1、TF0TF0、IE1IE1、IE0IE0、RIRI 、TITI 登记各中断源请求信号:登记各中断源请求信号:=1=1,有中断请求;,有中断请求; = 0 = 0,无中断请求。,无中断请求。 CPU CPU响应中断后,该中断标志自动清零。响应中断后,该中断标志自动清零。TITI,RIRI标志必标志必须软件清零。须软件清零。位地址位地址 8FH8FH8EH8EH8DH8DH 8CH8CH 8BH8BH 8AH8AH 89H89H 88H88H位符号位符号 TF1TF1TR1T

16、R1TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0定时控制寄存器定时控制寄存器TCONTCON位地址和为符号位地址和为符号铬魏徐耿诧机蛔壶娇采兹皖俱冠涟屋梧沫羊鲤垫垮轩看网搅祁陵跌垣欺启第6章内部资源及应用第6章内部资源及应用104 4中断优先级控制位:中断优先级控制位:PSPS、PT1PT1、PX1PX1、PT0PT0、PX0PX0 2 2级优先级:级优先级:=1=1为高优先级,为高优先级,= 0= 0为低优先级。为低优先级。 同一优先级别按内部查询顺序排列优先级:同一优先级别按内部查询顺序排列优先级: 高高 INT0INT0、T0T0、INT1INT1、

17、T1T1、SI/O SI/O 低。低。3.3.中断允许控制位:中断允许控制位:EAEA、ESES、ET1ET1、EX1EX1、ET0ET0、EX0EX0 =1 =1开中断;开中断;= 0= 0关中断。关中断。例:允许例:允许CPUCPU响应响应INT0INT0的中断请求的中断请求汇编语言汇编语言C C语言语言SETB EX0 SETB EX0 EX0 = 1;EX0 = 1;SETB EASETB EAEA = 1;EA = 1;2.2.外部中断触发方式选择位:外部中断触发方式选择位:IT0IT0、IT1IT1 =1 =1:下降沿触发中断请求;:下降沿触发中断请求;= 0= 0:低电平触发中断

18、请求。:低电平触发中断请求。齿汾铂惩缘环玻捌激友星锄瑰遵站灰缎杀伍蒂洋晾懦同匝弦庭策哦玖挡咆第6章内部资源及应用第6章内部资源及应用112 2)SCONSCON中的串行中断标志位中的串行中断标志位SCONSCON寄存器地址寄存器地址98H98H,位地址,位地址9FH-98H9FH-98H,其中的低,其中的低2 2位位RIRI和和TITI锁存串行口的接收中断和发送中断的申请标志位。锁存串行口的接收中断和发送中断的申请标志位。SM0SM0,SM1SM1:选择串行口:选择串行口4 4种工作方式。种工作方式。SM2SM2 :多机控制位,用于多机通讯。:多机控制位,用于多机通讯。RENREN :允许接收

19、控制位,:允许接收控制位,REN=1REN=1允许接收;允许接收;REN=0REN=0禁止接收。禁止接收。TB8TB8 : :发送的第发送的第9 9位数据位,可用作校验位和地址位数据位,可用作校验位和地址/ /数据标识位数据标识位RB8RB8 :接收的第:接收的第9 9位数据位或停止位位数据位或停止位TITI :发送中断标志,发送一帧结束,:发送中断标志,发送一帧结束,TI=1TI=1,必须软件清零,必须软件清零RIRI :接收中断标志,接收一帧结束,:接收中断标志,接收一帧结束,RI=1RI=1,必须软件清零,必须软件清零位地址位地址9FH9FH9EH9EH9DH9DH9CH9CH 9BH9

20、BH 9AH9AH99H99H 98H98H位符号位符号SM0SM0SM1SM1SM2SM2RENREN TB8TB8RB8RB8TITIRIRI砧苍撅稍曰所骤捆膀浊盆犀笼捎狸螺今筷当唯臃忍粳屉薪胶俯脖佐磁俯淡第6章内部资源及应用第6章内部资源及应用12寄存器名称寄存器名称D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定时器定时器控制控制寄存器寄存器TCON(88HTCON(88H) )TF1TF1TF0TF0IE1IE1 IT1IT1 IE0IE0 IT0IT0位地址位地址8FH8FH8EH8EH 8DH8DH 8CH8CH 8BH8BH 8AH8AH 89H89H 88H

21、88H串行口串行口控制控制寄存器寄存器SCON(98HSCON(98H) )SM0SM0SM1SM1 SM2SM2 RENREN TB8TB8 RB8RB8 TITIRIRI位地址位地址9FH9FH9EH9EH 9DH9DH 9CH9CH 9BH9BH 9AH9AH 99H99H 98H98H中断允中断允许许寄存器寄存器IE(A8H)IE(A8H)EAEAESESET1ET1EX1EX1 ET0ET0 EX0EX0位地址位地址AFHAFHACHACH ABHABH AAHAAH A9HA9H A8HA8H中断优中断优先级先级寄存器寄存器IP(B8H)IP(B8H)PSPSPT1PT1 PX1P

22、X1 PT0PT0 PX0PX0位地址位地址BCHBCHBBHBBH BAHBAH B9HB9H B8HB8H肖仟拒疹歹沤稻谓伙太脸粮械喜裁译澄衫咆啦狙督喷边讽茨荆粟橇划焰午第6章内部资源及应用第6章内部资源及应用133. 3. 中断控制中断控制中断控制主要通过中断控制主要通过中断允许中断允许寄存器寄存器IEIE和中断和中断优先级优先级寄存器寄存器IPIP实现。实现。1 1)中断允许控制)中断允许控制中断源申请后,中断能否被响应,取决于中断源申请后,中断能否被响应,取决于CPUCPU对中断源的开放或屏蔽状对中断源的开放或屏蔽状态,由内部的中断允许寄存器态,由内部的中断允许寄存器IEIE进行控制

23、,进行控制,IEIE的地址是的地址是A8HA8H,位地址为,位地址为AFHAFHA8HA8H。2 2)中断优先级控制)中断优先级控制80C5180C51有有两个中断优先级两个中断优先级,每个中断源均可通过软件设置为高优先级或,每个中断源均可通过软件设置为高优先级或低优先级中断,实现低优先级中断,实现2 2级中断嵌套。高优先级中断请求可以中断一个正在执级中断嵌套。高优先级中断请求可以中断一个正在执行的低优先级中断服务,除非正在执行的低优先级中断服务程序设置了禁止行的低优先级中断服务,除非正在执行的低优先级中断服务程序设置了禁止CPUCPU中断某些高优先级的中断。正在执行的中断服务程序不能被另一个

24、同级中断某些高优先级的中断。正在执行的中断服务程序不能被另一个同级或低优先级的中断所中断,正在执行高优先级的中断服务程序,不能被任何或低优先级的中断所中断,正在执行高优先级的中断服务程序,不能被任何中断源中断,一直执行到返回指令中断源中断,一直执行到返回指令RETIRETI,返回主程序,而后再执行一条指令,返回主程序,而后再执行一条指令后,才能响应新的中断申请。后,才能响应新的中断申请。中断允中断允许许寄存器寄存器IE(A8H)IE(A8H)EAEAESESET1ET1EX1EX1 ET0ET0 EX0EX0位地址位地址AFHAFHACHACH ABHABH AAHAAH A9HA9H A8H

25、A8H宾伶蒲树玖砧酞脐驹橙贯皮慷巧严一咱蓄尾埠苔败纽哼孝奶哉读酒嚼辗丑第6章内部资源及应用第6章内部资源及应用14 特殊功能寄存器特殊功能寄存器IPIP为中断优先级控制寄存器,其地址为为中断优先级控制寄存器,其地址为B8HB8H,位地址为,位地址为BFHBFHB8HB8H,各位内容如表所示。,各位内容如表所示。中断优先级控制寄存器中断优先级控制寄存器PX0PX0:外部中断:外部中断0 0中断优先级控制位。中断优先级控制位。PX0 = lPX0 = l,外部中断,外部中断0 0定义为高优先定义为高优先级中断;级中断;PX0 = 0PX0 = 0,为低优先级中断。,为低优先级中断。PT0PT0:定

26、时器:定时器0 0中断优先级控制位。中断优先级控制位。PT0 = 1PT0 = 1,定时器,定时器T0T0中断定义为高优先中断定义为高优先级中断;级中断;PT0 = 0PT0 = 0,为低优先级中断。,为低优先级中断。PX1PX1:外部中断:外部中断1 1中断优先级控制位。中断优先级控制位。PX1 = lPX1 = l,外部中断,外部中断1 1定义为高优先级定义为高优先级中断;中断;PX1 = 0PX1 = 0,为低优先级中断。,为低优先级中断。PT1PT1:定时器:定时器1 1中断优先级控制位。中断优先级控制位。PT1 = 1PT1 = 1,定时器,定时器T1T1中断定义为高优先中断定义为高

27、优先级中断;级中断;PT1 = 0PT1 = 0,为低优先级中断。,为低优先级中断。PSPS:串行口中断优先级控制位。:串行口中断优先级控制位。PS=1PS=1时,串行口中断定义为高优先级中断;时,串行口中断定义为高优先级中断;PS=0PS=0时,为低优先级中断。时,为低优先级中断。当系统复位后,当系统复位后,IPIP的所有位被清的所有位被清0 0,所有的中断源均被定,所有的中断源均被定义为低优级中断。义为低优级中断。IPIP的各位都可用程序置位和复位,也可用的各位都可用程序置位和复位,也可用位操作指令或字节操作指令更新位操作指令或字节操作指令更新IPIP的内容,以改变各中断源的内容,以改变各

28、中断源的中断优先级。的中断优先级。当同一优先级的几个中断源同时向当同一优先级的几个中断源同时向CPUCPU提出中断请求时,提出中断请求时,CPUCPU通过内部硬件查询逻辑电路,按查询顺序判定优先响应哪通过内部硬件查询逻辑电路,按查询顺序判定优先响应哪一个中断请求,其查询顺序如下:外部中断一个中断请求,其查询顺序如下:外部中断0 0、定时中断、定时中断0 0、外部中断外部中断1 1、定时中断、定时中断1 1、串行中断。、串行中断。棉舀诲安庙滩索美昨阮啄玖绿侣唁酵赚掉繁京捉砖邀噬浴荆雀萤谎蕊哼借第6章内部资源及应用第6章内部资源及应用154. 4. 中断处理过程中断处理过程一个完整的中断处理过程包

29、括中断请求、中断响应、中断服一个完整的中断处理过程包括中断请求、中断响应、中断服务、中断返回几个部分。务、中断返回几个部分。1 1)中断响应)中断响应 中断响应指系统满足中断条件,中断响应指系统满足中断条件,CPUCPU对中断请求做出反应,对中断请求做出反应,程序执行程序执行转向中断服务程序入口地址的过程转向中断服务程序入口地址的过程。 CPU CPU要响应中断请求,除了前面介绍的要有中断请求、中要响应中断请求,除了前面介绍的要有中断请求、中断被允许基本条件外,如果出现下列情况之一,则中断响应断被允许基本条件外,如果出现下列情况之一,则中断响应将被阻止:将被阻止:情况一:情况一:CPUCPU正

30、在处理同级的或更高优先级的中断。正在处理同级的或更高优先级的中断。情况二:当前的机器周期不是所执行指令的最后一个机器周情况二:当前的机器周期不是所执行指令的最后一个机器周 期,期,CPUCPU不会响应任何中断请求。不会响应任何中断请求。情况三:正在执行的指令是情况三:正在执行的指令是RETIRETI或是访问或是访问IEIE或或IPIP的指令。的指令。CPUCPU 完成这类指令后,至少还要再执行一条指令才会响完成这类指令后,至少还要再执行一条指令才会响 应新的中断请求,以便保证程序能够正确地返回。应新的中断请求,以便保证程序能够正确地返回。 如果存在上述任何一个情况,如果存在上述任何一个情况,C

31、PUCPU都会丢弃中断查询结果,都会丢弃中断查询结果,否则将在随后的机器周期开始响应中断。否则将在随后的机器周期开始响应中断。梅冈馅奠乓堰篮男悉吗窘义攻轻圃芽状荣同始艺锚蓝耍蔼钡赶啦课诲疤哈第6章内部资源及应用第6章内部资源及应用16 CPU CPU在每个机器周期的在每个机器周期的S5P2S5P2(S5S5的第的第2 2个时钟周期)对个时钟周期)对 或或 进进行采样,并设置中断标志位的状态,而其他中断源的中断请求发生在单片行采样,并设置中断标志位的状态,而其他中断源的中断请求发生在单片机内部,直接设置相应的中断标志位的状态。机内部,直接设置相应的中断标志位的状态。CPUCPU在每个机器周期的在

32、每个机器周期的S6S6按按顺序查询每个中断请求标志位,如果有中断请求满足所有中断允许条件,顺序查询每个中断请求标志位,如果有中断请求满足所有中断允许条件,则则CPUCPU将在下个机器周期的将在下个机器周期的S1S1按中断优先级响应激活最高级中断请求。按中断优先级响应激活最高级中断请求。 CPU CPU响应中断时,先置位相应的高响应中断时,先置位相应的高/ /低优先级状态触发器,指出低优先级状态触发器,指出CPUCPU开开始处理的中断优先级别,然后由硬件生成一条长调用指令始处理的中断优先级别,然后由硬件生成一条长调用指令LCALLLCALL,其格式,其格式为:为:LCALL addr16LCAL

33、L addr16,其中,其中addr16addr16是在程序存储区中与各中断请求对应的中是在程序存储区中与各中断请求对应的中断入口地址,也称为中断向量地址。断入口地址,也称为中断向量地址。 CPU CPU执行该执行该LCALLLCALL指令,由硬件自动清除有关中断请求标志位(指令,由硬件自动清除有关中断请求标志位(TITI和和RIRI除外),将程序计数器除外),将程序计数器PCPC的内容压入堆栈以保护断点(但不保护的内容压入堆栈以保护断点(但不保护PSWPSW),),再将被响应的中断入口地址装入再将被响应的中断入口地址装入PCPC,开始进入中断服务。程序存储区中为,开始进入中断服务。程序存储区

34、中为各中断服务程序只分配了各中断服务程序只分配了8 8个单元,一般情况下难以安排下一个完整的中个单元,一般情况下难以安排下一个完整的中断服务程序。因此通常总是在各中断区入口地址处放置一条无条件转移指断服务程序。因此通常总是在各中断区入口地址处放置一条无条件转移指令令LJMP addr16LJMP addr16,使程序执行转向在其他地址存放的中断服务程序。,使程序执行转向在其他地址存放的中断服务程序。 诵顺术芜堪诅需饥局颂嫩次腥腹绪浩较厉盼惊矫绚内扣坊舅祥忙砍慷讼烟第6章内部资源及应用第6章内部资源及应用172 2)中断响应时间)中断响应时间 一个中断,从查询中断请求标志位到转向中断区一个中断,

35、从查询中断请求标志位到转向中断区入口地址要经历一段时间,入口地址要经历一段时间,即为中断响应时间即为中断响应时间。不。不同中断情况,中断响应时间也是不一样的。同中断情况,中断响应时间也是不一样的。 最短的响应时间为最短的响应时间为3 3个机器周期。如果中断响应个机器周期。如果中断响应受阻,不同情况需要不同的响应时间,最长响应时受阻,不同情况需要不同的响应时间,最长响应时间为间为8 8个机器周期。一般情况下,在一个单中断系统个机器周期。一般情况下,在一个单中断系统里,外部中断响应时间总是在里,外部中断响应时间总是在3 38 8个机器周期之间。个机器周期之间。如果出现有同级或高级中断正在响应或服务

36、中需等如果出现有同级或高级中断正在响应或服务中需等待的时候,那么响应时间就无法计算了。待的时候,那么响应时间就无法计算了。3 3)中断服务流程)中断服务流程中断服务程序从入口地址开始执行,到返回中断服务程序从入口地址开始执行,到返回指令指令RETIRETI为止,中间经历了关中断、保护现场和为止,中间经历了关中断、保护现场和断点、开中断、中断服务、关中断、恢复现场、断点、开中断、中断服务、关中断、恢复现场、开中断、返回断点几个阶段。开中断、返回断点几个阶段。中断服务流程图中断服务流程图迂戮侥敏缸淡楔撞辟吃祈日奥帕钞鲤拿跌掸红刑勾闪航赋法澜莹嘱箭循夕第6章内部资源及应用第6章内部资源及应用18由于

37、由于80C5180C51单片机内不具有自动关中断的功能,因此单片机内不具有自动关中断的功能,因此进入服务子程序后,必须通过指令关闭中断,为下一步保进入服务子程序后,必须通过指令关闭中断,为下一步保护现场和断点做准备。护现场和断点做准备。保护现场保护现场就是在程序进入中断服务程序入口之前,将就是在程序进入中断服务程序入口之前,将相关寄存器内容、标志位状态等压入堆栈,避免在运行中相关寄存器内容、标志位状态等压入堆栈,避免在运行中断服务程序时,破坏这些数据或状态,保证中断返回后,断服务程序时,破坏这些数据或状态,保证中断返回后,主程序能够正常运行。然后,再打开中断,允许响应别的主程序能够正常运行。然

38、后,再打开中断,允许响应别的中断请求。接着可以执行中断服务,中断服务是用户最终中断请求。接着可以执行中断服务,中断服务是用户最终要实现的具体功能。在返回主程序之前,关闭中断,恢复要实现的具体功能。在返回主程序之前,关闭中断,恢复现场,再用指令开中断,以便现场,再用指令开中断,以便CPUCPU响应新的中断请求。中响应新的中断请求。中断服务程序的最后一条指令是断服务程序的最后一条指令是RETIRETI,用来返回断点。,用来返回断点。保护现场和恢复现场可通过堆栈操作指令保护现场和恢复现场可通过堆栈操作指令PUSH PUSH directdirect和和POP direct POP direct 实现

39、,要保护的现场内容,取决于实现,要保护的现场内容,取决于用户的对具体情况的需求。用户的对具体情况的需求。C51C51编译器会自动完成编译器会自动完成ACCACC、B B、DPHDPH、DPLDPL、PSWPSW、R0R0R7R7的保护和恢复。的保护和恢复。C51C51程序员无需保护现场和恢复现场。程序员无需保护现场和恢复现场。痘仁榨饼交酮迫赞炊钓至恋娄侄位粥瞬猜晚勘党铜齐脑稗淤罪挫移烛稠攻第6章内部资源及应用第6章内部资源及应用195. 5. 中断请求的撤除中断请求的撤除 中断响应后,中断响应后,TCONTCON和和SCONSCON中的中断请求标志应及时清除。否则中断请中的中断请求标志应及时清

40、除。否则中断请求将仍然存在,并引起错误的中断响应。不同的中断请求,其撤除方法求将仍然存在,并引起错误的中断响应。不同的中断请求,其撤除方法也不一样。也不一样。 对于对于定时中断定时中断,中断响应后,中断响应后,硬件自动硬件自动对中断标志位对中断标志位TF0TF0或或TFlTFl清清0 0,中断请求中断请求自动撤除自动撤除,无需采取其他措施。,无需采取其他措施。 对于对于脉冲触发脉冲触发的的外部中断外部中断请求,在中断响应后,也同样通过请求,在中断响应后,也同样通过硬件自动硬件自动对中断请求标志位对中断请求标志位IE0IE0或或IE1IE1清清0 0,即中断请求的撤除也是自动的。,即中断请求的撤

41、除也是自动的。 对于对于电平触发电平触发的的外部中断外部中断请求,情况则不同。中断响应后,硬件不能请求,情况则不同。中断响应后,硬件不能自动对中断请求标志位自动对中断请求标志位IE0IE0或或IE1IE1清清0 0。中断撤除,要靠撤除。中断撤除,要靠撤除 或或引脚上的低电平才能有效。引脚上的低电平才能有效。对于对于串行中断串行中断,其中断标志位,其中断标志位TITI和和RIRI,不进行自动清,不进行自动清0 0。因为在中。因为在中断响应后,还要测试这两个标志位的状态,以判定是接收操作还是发断响应后,还要测试这两个标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行中断请求的送操作

42、,然后才能清除。所以串行中断请求的撤除是通过软件方法撤除是通过软件方法,在中断服务程序中实现的。在中断服务程序中实现的。姬琅菊约饮午墙梳徘躬烂遂撤睦研忱走邢粳肥拓亭绰冈突监乾生扣棘弊谅第6章内部资源及应用第6章内部资源及应用206.1.3 C516.1.3 C51中断服务函数中断服务函数中断系统十分重要,中断系统十分重要,C51C51编译器允许在编译器允许在C C语言源程序中语言源程序中声明中断和编写中断服务程序,从而减轻了采用汇编程序声明中断和编写中断服务程序,从而减轻了采用汇编程序编写中断服务程序的繁琐程度。通过使用编写中断服务程序的繁琐程度。通过使用interruptinterrupt关

43、键字关键字实现。定义中断服务程序的一般格式如下:实现。定义中断服务程序的一般格式如下:void void 函数名函数名( ) interrupt n using m( ) interrupt n using musing musing m指明该中断服务程序所对应的工作寄存器组,指明该中断服务程序所对应的工作寄存器组,m m取值范围为:取值范围为:0 03 3。指定工作寄存器组的缺点是,所有被。指定工作寄存器组的缺点是,所有被中断调用的过程都必须使用同一个寄存器组,否则参数传中断调用的过程都必须使用同一个寄存器组,否则参数传递会发生错误。通常不设定递会发生错误。通常不设定using musing

44、 m,除非保证中断程序中,除非保证中断程序中未调用其他子程序。未调用其他子程序。P187P188P187P188例子例子由萧帽既闺宽溶虽柄日菲婉豺虫笑慨蹬夺蔷舱瞩码皖借兆畅拄吠索眼仓劝第6章内部资源及应用第6章内部资源及应用216.2 6.2 定时器定时器/ /计数器计数器 80C51 80C51的单片机内有的单片机内有2 2个个1616位可编程的定时器位可编程的定时器/ /计数器,它们具有计数器,它们具有4 4种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。控制寄存器的编程

45、,就可方便地选择适当的工作方式。6.2.1 6.2.1 定时器定时器/ /计数器计数器0 0、1 1的结构及工作原理的结构及工作原理1. 1. 定时器定时器/ /计数器计数器0 0、1 1的结构的结构定时器定时器/ /计数器计数器T0T0、T1T1的内部结构框图如图的内部结构框图如图1 1所示:所示:图图1 1 定时器定时器/ /计数器内部结构逻辑图计数器内部结构逻辑图慷识慢典鹰腔怔捶帕戏纸陡羔稗檬闷蓟姥丢畸撩辐减佩胸冲厦珐踩半滋顾第6章内部资源及应用第6章内部资源及应用222. 加1计数器定时器/计数器T0、T1都有一个16位的加1计数器,它们分别由8位特殊功能寄存器TH0、TL0和TH1、

46、TL1组成。加1计数器的初值可以通过程序进行设定,设定不同的初值,就可以获得不同的计数值或定时时间。3. 定时控制寄存器(TCON)定时控制寄存器TCON是个8位寄存器,它不仅参与定时控制,还参与中断请求控制。既可以对其整个字节寻址,又可以对其位寻址,各位的地址及其对应的功能参见P192。 定时器溢出使定时器溢出使TFx=1TFx=1,引起中断请求,引起中断请求,CPUCPU响应响应TxTx中断后,中断后, 自动清自动清0 TFx0 TFx。1 1)启动控制位)启动控制位TR0TR0、TR1TR1=0=0,停止定时器工作停止定时器工作=1=1,启动定时器工作,启动定时器工作2 2)溢出中断标志

47、位)溢出中断标志位TF0TF0、TF1TF1可用软件检测可用软件检测TFxTFx,必须软件清,必须软件清0 0。撇总刨成诧馅锤志痘姻捐腮尘骆诚柞垫精则反霓戍曝组骡赦煽措皮品盗街第6章内部资源及应用第6章内部资源及应用234. 4. 工作方式控制寄存器(工作方式控制寄存器(TMODTMOD)工作方式控制寄存器工作方式控制寄存器TMODTMOD,用来设定定时器,用来设定定时器/ /计数器计数器T0T0、T1T1的工作方式。的工作方式。TMODTMOD寄存器只能进行字节寻址。寄存器只能进行字节寻址。2 2个可独立控制的个可独立控制的1616位定时器位定时器/ /计数器:计数器:T0T0、T1T11

48、1)功能选择位)功能选择位C/TC/T: C/T C/T =0 =0,定时功能,计数内部机器周期脉冲;,定时功能,计数内部机器周期脉冲; C/T C/T =1 =1,计数功能,计数引脚,计数功能,计数引脚T0(T1)T0(T1)输入的负脉冲。输入的负脉冲。2 2)方式选择位)方式选择位M1M1、M0M0:4 4种工作方式:种工作方式:13/16/813/16/8位位T1T1T0T0茵侣绎兰齿棱翅拘捷黄一柬勺朋基舶缉充篡折涣叁郧腆失韵铲套霓碳谎桩第6章内部资源及应用第6章内部资源及应用24 图图2 2 定时器定时器/ /计数器逻辑结构计数器逻辑结构计数功能:计数功能:对外部事件产生的脉冲进行计数

49、。对于对外部事件产生的脉冲进行计数。对于80C5180C51单单片机,当图片机,当图2 2中中C/C/=1=1,T0T0(P3.4P3.4)或)或T1T1(P3.5P3.5)两个信号引)两个信号引脚输入信号脉冲发生负跳变时,加脚输入信号脉冲发生负跳变时,加1 1计数器自动加计数器自动加1 1。定时功能:定时功能:对单片机内部机器周期产生的脉冲进行计数,即对单片机内部机器周期产生的脉冲进行计数,即当图当图2 2中中C/C/=0=0,每个机器周期计数器自动加,每个机器周期计数器自动加1 1。如果单片机的。如果单片机的晶体频率为晶体频率为12MHz12MHz,则计数频率为,则计数频率为1MHz1MH

50、z,或者说计数器每加,或者说计数器每加1 1,可实现可实现1us1us的定时。的定时。品傀绒库剔承死臃舆傅弊趁啃柑暂介剿泪扁虎舜先训圆瓮累奸逮怠泉瞒惜第6章内部资源及应用第6章内部资源及应用256.2.2 6.2.2 定时器定时器/ /计数器计数器0 0、1 1的四种工作方式的四种工作方式 定时器定时器/ /计数器计数器T0T0、T1T1可以有四种不同的工作方式:方式可以有四种不同的工作方式:方式0 0、方式、方式1 1、方式方式2 2、方式、方式3 3。1. 1. 方式方式0 0 当当TMODTMOD中中M1M0M1M0 = 00= 00时,定时器时,定时器/ /计数器选定方式计数器选定方式

51、0 0进行工作。进行工作。图图6.7 6.7 定时器定时器/ /计数器计数器0 0的工作方式的工作方式0 0电路逻辑结构电路逻辑结构伎兜源副砍蓬厢虐洽躺搞轮饺泞潮歧冷骋侧涸焊躬辜柑锰氖嘎掩易酉食车第6章内部资源及应用第6章内部资源及应用26C/ C/ =1=1时,图中电子开关时,图中电子开关S S1 1,打在下端,定时器,打在下端,定时器/ /计数计数器处于器处于计数器状态计数器状态,加法计数器对,加法计数器对T0T0引脚上的外部输入脉引脚上的外部输入脉冲计数。计数值:冲计数。计数值:N N = 8192 - = 8192 - x x计数初值计数初值x x是是TH0TH0、TL0TL0设定的初

52、值。设定的初值。x x = 8191 = 8191时为最小计时为最小计数值数值l l,x x = 0= 0时为最大计数值时为最大计数值81928192,即,即计数范围计数范围为为1 181928192(2 21313)。)。C/C/= 0= 0时,图时,图6.76.7中电子开关中电子开关S1S1,打在上端,振荡脉,打在上端,振荡脉冲的冲的1212分频输出,分频输出,1313位定时器位定时器/ /计数器处于定时器状态,计数器处于定时器状态,加法计数器对加法计数器对机器周期(机器周期(T Tcycy)脉冲计数)脉冲计数。定时时间:。定时时间:T Td = (8192-d = (8192-x x)

53、) T Tcycy 或或 T Td d = (8192-= (8192-x x)T Tcp12cp12呻卡恰戴童饵旅渐辅炮尸脓椅释祥缨担率蝇油矩抬夫迪桂回饰叛豪俯桔蝶第6章内部资源及应用第6章内部资源及应用27如果晶振频率如果晶振频率f foscosc=12MHz=12MHz,机器周期为,机器周期为1us1us,则定时范围为,则定时范围为1us1us8192us8192us。随着计数的增大,随着计数的增大,TL0TL0的低的低5 5位溢出后自动向位溢出后自动向TH0TH0进位,进位,TH0TH0溢出后,将溢出标志位溢出后,将溢出标志位TF0TF0置位,并向置位,并向CPUCPU发出中断请求发出

54、中断请求。图图6.76.7中控制开关中控制开关S S2 2控制定时器控制定时器/ /计数器的启动或停止,计数器的启动或停止,开关开关S S2 2的控制信号为的控制信号为:I I = = 当当GATE = 0GATE = 0时时, =1=1,信号不起作用,开关,信号不起作用,开关S2S2的状态由决定,即的状态由决定,即TR0 = 1TR0 = 1时,启动定时器时,启动定时器/ /计数器;计数器;TR0 TR0 = 0= 0时,关闭定时器时,关闭定时器/ /计数器。计数器。当当GATE = 1GATE = 1时时,上式中,上式中I I = = TR0 TR0,开关,开关S2S2的状态由的状态由 T

55、R0 TR0决定,所以仅当决定,所以仅当TR0 = 1TR0 = 1且位于高电平时,开关且位于高电平时,开关S2S2闭合,才能启动定时器闭合,才能启动定时器/ /计数器计数器0 0工作。如果上出现低电平,则停止工作,利用门控位这一工作。如果上出现低电平,则停止工作,利用门控位这一特征,可以测量外信号的脉冲宽度。特征,可以测量外信号的脉冲宽度。哗咽郁订乏酣捞印桨国没类铭氛躁靛骆溪扁嚷顺控柑酬麓桶勘谩石柱素肚第6章内部资源及应用第6章内部资源及应用282. 2. 方式方式1 1当当TMODTMOD中中M1M0M1M0 = 01= 01时,定时器时,定时器/ /计数器选定方式计数器选定方式1 1进行

56、工作。进行工作。图图4 4是是T0T0工作工作在方式在方式1 1下的逻辑结构图(定时器下的逻辑结构图(定时器/ /计数器计数器1 1与其完全一致)。与其完全一致)。其逻辑结构与方其逻辑结构与方式式0 0不同的是两个不同的是两个8 8位寄存器位寄存器TH0TH0和和TL0TL0全部构成了一个全部构成了一个1616位的定时器位的定时器/ /计数器,计数器,其他与工作方式其他与工作方式0 0完全相同完全相同。图图4 4 定时定时/ /计数器计数器0 0的工作方式的工作方式1 1电路逻辑结构电路逻辑结构在该工作方式下,当作为计数器使用时,其计数范围是在该工作方式下,当作为计数器使用时,其计数范围是1

57、16553665536(2 21616)作为定时器使用时,定时器的定时时间为:作为定时器使用时,定时器的定时时间为:T Td = (2d = (21616-Count)-Count)T Tcycy 或或T Td d = (2= (21616-Count)12-Count)12T Tcpcp如果晶振频率如果晶振频率f fosc=12MHzosc=12MHz,则定时范围为,则定时范围为1 16553665536。砸柔碎洲企杭宇痢仪淬秉交宏馏娃湿饼蒜讶瘁供妊圆答帖臣盟菌防栗建增第6章内部资源及应用第6章内部资源及应用293. 3. 方式方式2 2以上工作方式以上工作方式0 0、方式、方式1 1计数器

58、具有共同的特点,即计计数器具有共同的特点,即计数器发生溢出现象后,数器发生溢出现象后,自动处于自动处于0 0状态状态,因此如果要实现循,因此如果要实现循环计数或定时,就需要程序不断反复给计数器赋初值,这就环计数或定时,就需要程序不断反复给计数器赋初值,这就影响了计数或定时精度,并给程序设计增添了麻烦。针对该影响了计数或定时精度,并给程序设计增添了麻烦。针对该问题,便设计了计数器问题,便设计了计数器具有初值自动重新加载功能的工作方具有初值自动重新加载功能的工作方式式2 2,其逻辑结构如图,其逻辑结构如图4 4所示。该方式下,所示。该方式下,1616位计数器被分为位计数器被分为两个两个8 8位寄存

59、器:位寄存器:TL0TL0和和TH0TH0,其中,其中TL0TL0作为计数器作为计数器,TH0TH0作为作为计数器计数器TL0TL0的的初值预置寄存器初值预置寄存器,并始终保持为初值常数。当,并始终保持为初值常数。当TL0TL0计数溢出时,系统在计数溢出时,系统在TF0TF0位置位,并向位置位,并向CPUCPU申请中断的同申请中断的同时,时,将将TH0TH0的内容重新装入的内容重新装入TL0TL0,继续计数。这样省掉了工作,继续计数。这样省掉了工作方式方式0 0、方式、方式1 1一定要通过软件给计数器重新赋初值的麻烦,一定要通过软件给计数器重新赋初值的麻烦,并提高了计数精度。并提高了计数精度。

60、赴乎电渡既蛮卷咖首惰坡茸儒难壮桨夺绘盏塌线拽灼敲致硅辕掘凄蝗罐俩第6章内部资源及应用第6章内部资源及应用30图图4 T04 T0在工作方式在工作方式2 2下的逻辑结构下的逻辑结构TH0TH0的内容重新装入的内容重新装入TL0TL0后,其自身保持不变。这样计数后,其自身保持不变。这样计数器具有重复加载、循环工作的特点,器具有重复加载、循环工作的特点,可用于产生固定脉宽的可用于产生固定脉宽的脉冲信号,还可以用来作为串行口波特率发生器使用脉冲信号,还可以用来作为串行口波特率发生器使用。辰梧能凳拥瞩居遣诞戚自孩缴饭蘸摊铬纵术芽戈逾诽茫畅华畴葱茶僵麦内第6章内部资源及应用第6章内部资源及应用314. 4

61、. 方式方式3 3当当TMODTMOD中中M1M0 = 11M1M0 = 11时,定时器时,定时器/ /计数器处于定时工作方计数器处于定时工作方式式3 3下工作。在前三种定时工作方式中,两个定时器下工作。在前三种定时工作方式中,两个定时器/ /计数计数器器T0T0、T1T1,具有相同平等的功能,但,具有相同平等的功能,但在该工作方式下,在该工作方式下,T0T0和和T1T1具有完全不同的功能具有完全不同的功能。图图5 5是是T0T0在定时工作方式在定时工作方式3 3下的逻辑结构,其中下的逻辑结构,其中TL0TL0和和TH0TH0作为两个独立的作为两个独立的8 8位计数器,分别构成了一个定时器位计

62、数器,分别构成了一个定时器/ /计数计数器和一个定时器,器和一个定时器,TL0TL0使用使用T0T0的状态控制位的状态控制位C/C/、GATEGATE、TR0TR0和,而和,而TH0TH0被固定为一个被固定为一个8 8位定时器(不能用作外部位定时器(不能用作外部计数方式),计数方式),并占用了定时器并占用了定时器T1T1的状态控制位的状态控制位TRlTRl和和TF1TF1,占用占用T1T1的中断源。的中断源。捻颂碰欧欢脸苏序寨娥鬃踩衔婶歧永还纺悉帽匹序决邢胀都剔弱胃师惠嗽第6章内部资源及应用第6章内部资源及应用32 图图5 5 工作方式工作方式3 3下定时器下定时器/ /计数器计数器T0T0被

63、分成两个被分成两个8 8位计数器的逻辑结构。位计数器的逻辑结构。在前面的三种工作方式中,两个定时器在前面的三种工作方式中,两个定时器/ /计数器计数器T0T0、T1T1的设的设置和使用是完全相同的。但是在工作方式置和使用是完全相同的。但是在工作方式3 3下,下,T0T0、T1T1的设置的设置和使用却不尽相同。和使用却不尽相同。京陨臼初漱机喜搀虱炸亲绍杉纫旧遇竟幕茁葱抗射距匙戈慨腾珠录熄颜欧第6章内部资源及应用第6章内部资源及应用331 1)在工作方式)在工作方式3 3下的下的T0T0在工作方式在工作方式3 3下,定时器下,定时器/ /计数器计数器T0T0被拆成两个独立的被拆成两个独立的8 8位

64、位计数器计数器TL0TL0和和TH0TH0。其中。其中TL0TL0既可以计数使用,又可以定时使用,既可以计数使用,又可以定时使用,定时器定时器/ /计数器计数器T0T0的控制位和引脚信号全归它使用的控制位和引脚信号全归它使用。其功能和。其功能和操作与方式操作与方式0 0或方式或方式1 1完全相同。而且逻辑电路结构也极其类似,完全相同。而且逻辑电路结构也极其类似,如图如图5 5所示。所示。与与TL0TL0的情况相反,对于的情况相反,对于T0T0的另一半的另一半TH0TH0,则只能作为简单,则只能作为简单的定时器使用。而且由于的定时器使用。而且由于T0T0的控制位已被的控制位已被TL0TL0独占,

65、因此只好独占,因此只好借用定时器借用定时器/ /计数器计数器T1T1的控制位的控制位TR1TR1和和TF1TF1,以计数溢出去置位,以计数溢出去置位TF1TF1,而定时的启动和停止则受,而定时的启动和停止则受TR1TR1的状态控制。的状态控制。由于由于TL0TL0既能作定时器使用,也能作计数器使用,而既能作定时器使用,也能作计数器使用,而TH0TH0只只能作定时器使用却不能作计数器使用,因此在工作方式能作定时器使用却不能作计数器使用,因此在工作方式3 3下,下,定时器定时器/ /计数器计数器0 0可以构成可以构成2 2个定时器个定时器或或1 1个定时器个定时器1 1个计数器个计数器。撑怯书蛹笆

66、死睁狐罚阶辩哥肩秀扦暑唐塞痴陨萤倒咱言绊屿果妨佛棍植听第6章内部资源及应用第6章内部资源及应用342 2)工作方式)工作方式3 3下的下的T1T1如果定时器如果定时器/ /计数器计数器T0T0已工作在工作方式已工作在工作方式3 3下,则定时器下,则定时器/ /计数器计数器T1T1只能只能工作在方式工作在方式0 0、方式、方式1 1或方式或方式2 2下,它的运行控制位下,它的运行控制位TR1TR1及计数溢出标志位及计数溢出标志位TF1TF1已被定时器已被定时器/ /计数器计数器0 0借用,如下图借用,如下图定时器定时器/ /计数器方式计数器方式3 3的的T1T1结构结构所示。所示。在这种情况下定

67、时器在这种情况下定时器/ /计数器计数器1 1通常是作为串行口的通常是作为串行口的波特率发生器波特率发生器使用,使用,以确定串行通信的速率。以确定串行通信的速率。因为已没有计数溢出标志位因为已没有计数溢出标志位TF1TF1可供使用,因此可供使用,因此只能把计数溢出直接送给串行口只能把计数溢出直接送给串行口。当作为波特率发生器使用时,只需设置。当作为波特率发生器使用时,只需设置好工作方式,便可自动运行。好工作方式,便可自动运行。如要停止工作如要停止工作,只需送入一个把它设置为方只需送入一个把它设置为方式式3 3的方式控制字就可以了的方式控制字就可以了。因为定时器。因为定时器/ /计数器计数器1

68、1不能在方式不能在方式3 3下使用,如下使用,如果硬把它设置为方式果硬把它设置为方式3 3,则停止工作。,则停止工作。TL1务仍唤榆歹他腮厌院岁刁氰负戏浸裸慨忙昂恒愿丝欢谭坝搬镊阳厚舰呸极第6章内部资源及应用第6章内部资源及应用356.2.3 6.2.3 定时器定时器/ /计数器对输入信号的要求计数器对输入信号的要求 定时器定时器/ /计数器的作用是用来计数器的作用是用来精确地确定某一段时间间隔精确地确定某一段时间间隔(作为定时(作为定时器用)或器用)或累计外部输入的脉冲个数累计外部输入的脉冲个数(作为计数器用)。当用作为定时器(作为计数器用)。当用作为定时器时,在其输入端输入周期固定的脉冲,

69、根据定时器时,在其输入端输入周期固定的脉冲,根据定时器/ /计数器中累计(或事计数器中累计(或事先设定)的周期固定的脉冲个数,即先设定)的周期固定的脉冲个数,即可计算出所定时间的长度可计算出所定时间的长度。 当当80C5l80C5l内部的定时器内部的定时器/ /计数器被选定为计数器被选定为定时器工作模式时定时器工作模式时,计数输,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲位,计数器增入信号是内部时钟脉冲,每个机器周期产生一个脉冲位,计数器增l l,因,因此定时器此定时器/ /计数器的输入脉冲的周期与机器周期一样,为时钟振荡频率的计数器的输入脉冲的周期与机器周期一样,为时钟振荡频率的l

70、/12l/12。当采用。当采用12MHz12MHz频率的晶体时,计数速率为频率的晶体时,计数速率为1MHz1MHz,输入脉冲的周期间,输入脉冲的周期间隔为隔为1us1us。由于定时的精度决定于输入脉冲的周期,因此当需要高分辨率由于定时的精度决定于输入脉冲的周期,因此当需要高分辨率的定时时,应尽量选用频率较高的晶振的定时时,应尽量选用频率较高的晶振。聋峭凌溯包音泛慢朴鸽祖柑假袭崭饭肿泳筛瞎衣艘铲烃柯漫裂摧潍娥钟惕第6章内部资源及应用第6章内部资源及应用36 当定时器当定时器/ /计数器用作计数器用作计数器时计数器时,计数脉冲来自外部输入引脚,计数脉冲来自外部输入引脚T0T0或或T1T1。当输入信

71、号产生由当输入信号产生由1 1至至0 0的跳变(即负跳变)时,计数器的值增的跳变(即负跳变)时,计数器的值增l l。每个机。每个机器周期的器周期的S5P2S5P2期间,对外部输入进行期间,对外部输入进行采样采样。如在。如在第一个周期中采得的值第一个周期中采得的值为为1 1,而在下一个周期中采得的值为而在下一个周期中采得的值为0 0,则在紧跟着的,则在紧跟着的再下一个周期再下一个周期S3P1S3P1的期间,计数器加的期间,计数器加1 1。由于确认一次下跳变需要花由于确认一次下跳变需要花2 2个机器周期,即个机器周期,即2424个个振荡周期,因此外部输入的计数脉冲的最高频率为振荡器频率的振荡周期,

72、因此外部输入的计数脉冲的最高频率为振荡器频率的1/241/24,对于外部输入信号的占空比并没有什么限制,但对于外部输入信号的占空比并没有什么限制,但为了确保某一给定的电为了确保某一给定的电平在变化之前能被采样一次平在变化之前能被采样一次,则这一电平至少要保持一个机器周期则这一电平至少要保持一个机器周期。故。故对输入信号的基本要求如图对输入信号的基本要求如图7 7所示,图中所示,图中T Tcycy为机器周期。为机器周期。 图图7 7 对输入信号的基本要求对输入信号的基本要求腺遮警浇望蛰瘁烂造巫铣惺赂朴锄痪树吞专榷隘何峭脓屉寨犀渍闲冬庆龟第6章内部资源及应用第6章内部资源及应用376.2.4 6.

73、2.4 定时器定时器/ /计数器计数器0 0、1 1的编程和应用实例的编程和应用实例 1. 1. 定时器定时器/ /计数器的初始化编程计数器的初始化编程 因为因为80C5180C51单片机的定时器单片机的定时器/ /计数器能定时、计数,具有计数器能定时、计数,具有4 4种工作方式。因此,在使用定时器种工作方式。因此,在使用定时器/ /计数器前必须对其进计数器前必须对其进行初始化,即设置其工作方式。初始化一般应进行如下工行初始化,即设置其工作方式。初始化一般应进行如下工作:作:(1 1)设置工作方式,即设置)设置工作方式,即设置TMODTMOD中的各位:中的各位:GATEGATE、 C/ C/

74、、M1M0M1M0。(2 2)计算加)计算加1 1计数器的计数初值计数器的计数初值CountCount,并将计数初值,并将计数初值 Count Count送入送入THTH、TLTL中。中。(3 3)启动计数器工作,即将)启动计数器工作,即将TRTR置置1 1。(4 4)若采用中断方式则)若采用中断方式则T0T0、T1T1及及CPUCPU开中断。开中断。慕术宙志将逮尉羽垣奶耙女甥钓类捅雁狸柑验塔树踪汝痒锦骤炳闲湖去赞第6章内部资源及应用第6章内部资源及应用38图8定时器/计数器初始化流程图均掸垣伤荤巍亿二搅蚕斤俯嗜般凤遁尝钮迷渝霍鹊祝蛋胶矢着加挺牢戴顾第6章内部资源及应用第6章内部资源及应用39

75、2. 2. 计算计数初值计算计数初值CountCount1 1)计数方式)计数方式假设假设T0T0工作于计数方式工作于计数方式1 1,计数值,计数值x x = 1= 1,是指每当,是指每当T0T0引脚引脚输入一个计数脉冲就使加输入一个计数脉冲就使加1 1计数器产生溢出,通常可以使用这计数器产生溢出,通常可以使用这种方法扩展外中断。显然,为了使加种方法扩展外中断。显然,为了使加1 1计数器每加一次计数器每加一次1 1就溢就溢出,加出,加1 1计数器的初值计数器的初值Count = 0FFFFH = 2Count = 0FFFFH = 21616-1-1,其中,其中1616为工为工作方式作方式1

76、1时加时加1 1计数器的位数,计数器的位数,1 1为计数值为计数值x x。现用。现用n n表示加表示加1 1计计数器的位数,数器的位数,用用x x表示计数值表示计数值,则计数初值则计数初值Count = 2Count = 2n n - - x x式中,式中,n n = 13= 13、1616、8 8、8 8分别对应工作方式分别对应工作方式0 0、1 1、2 2、3 3。 【例】【例】 定时器定时器/ /计数器计数器T0T0工作于计数方工作于计数方式,计数值式,计数值x x = 1= 1,允许中断,分别使用:(,允许中断,分别使用:(1 1)工作方式)工作方式1 1;(2 2)工作方式)工作方式

77、0 0;(;(3 3)工作方式)工作方式2 2。用。用C C程序进行初始化编程。程序进行初始化编程。乾燥搏撵铝柑羹耻伙绝扶殊獭际灯让砂审淳撤务羡格兼骤负凭亨恋郸夕失第6章内部资源及应用第6章内部资源及应用40解:解:由于由于T0T0工作于计数方式,从而工作于计数方式,从而C/ =1C/ =1,GATE=0GATE=0。 (1 1)T0T0工作于方式工作于方式1 1,所以,所以M1M0 = 01M1M0 = 01。T1T1不用,不用,TMODTMOD的的高高4 4位取位取00000000,则,则TMOD= 00000101 = 05HTMOD= 00000101 = 05H,计数器位数,计数器位

78、数n n = = 1616。计数器初值计数器初值Count = 2Count = 21616-1 = 1111111111111111 = 0FFFFH-1 = 1111111111111111 = 0FFFFH。初始化程序如下:。初始化程序如下: TMOD=0x05; /* TMOD=0x05; /*设置设置T0T0工作计工作计数方式数方式1*/1*/ TH0=0xff;/* TH0=0xff;/*加加1 1计数器高计数器高8 8位位TH0TH0赋初赋初值值FFH*/FFH*/ TL0=0xff; /* TL0=0xff; /*加加1 1计数器低计数器低8 8位位TL0TL0赋初值赋初值FF

79、H*/FFH*/ TR0=1; /* TR0=1; /*打开打开T0T0启动开启动开关关*/*/ ET0=1; /*T0 ET0=1; /*T0开中断开中断*/*/ EA=1; /*CPU EA=1; /*CPU开中断开中断*/*/惋靴敬柠同犊单民俗履妨暇愈瘤筏零镐用焙捐狗潘儿破秃镜呛遗毙肚馅镶第6章内部资源及应用第6章内部资源及应用41(2 2)T0T0工作于方式工作于方式0 0,所以,所以M1M0 = 00M1M0 = 00。TMOD = 04HTMOD = 04H。计数。计数器位数器位数n n = 13= 13。计数器初值计数器初值Count = 2Count = 21313-1 = 1

80、111111111111-1 = 1111111111111,高,高8 8位位FFHFFH存放在存放在TH0TH0中,低中,低5 5位位1FH1FH存放在存放在TL0TL0中。初始化程序如下:中。初始化程序如下: TMOD=0x04; TMOD=0x04; TH0=0xff; TH0=0xff; TL0=0x1f; TL0=0x1f; 其余指令与(其余指令与(1 1)相同。)相同。(3 3)T0T0工作于方式工作于方式2 2,所以,所以M1M0 = 10M1M0 = 10。TMOD = 06HTMOD = 06H, n n = 8 = 8。计数器初值计数器初值Count = 2Count =

81、28 8-1=11111111 = 0FFH-1=11111111 = 0FFH,由于方式,由于方式2 2是是8 8位重装方式,所以计数初值位重装方式,所以计数初值FFHFFH存放在计数器存放在计数器TL0TL0中,中,8 8位位重装值重装值FFHFFH存放在存放在TH0TH0中。初始化程序如下:中。初始化程序如下: TMOD=0x06; TMOD=0x06; TH0=0xff; TH0=0xff; TL0=0xff; TL0=0xff; 其余指令与(其余指令与(1 1)相同。)相同。颂登冬腥镐碟辛儿溃扶实带严佳代州骂吴挟官六绑调氢降拌硫碧匠妻薪脊第6章内部资源及应用第6章内部资源及应用422

82、 2)定时方式)定时方式 若系统主频若系统主频f foscosc = 6MHz= 6MHz,则机器周期为,则机器周期为2us2us,即计数器,即计数器加一次加一次1 1所用时间为所用时间为2us2us,若计数器加,若计数器加100100次产生溢出次产生溢出 ( (计数计数值值N N = 100)= 100),则定时时间为,则定时时间为200us200us。由此得知:定时器的定。由此得知:定时器的定时时间时时间 (200us) (200us) 为计数值为计数值 (100) (100) 与加一次与加一次1 1所用时间所用时间 (2us) (2us) 的乘积。因为计数值的乘积。因为计数值N N =

83、2= 2n n- - CountCount,加一次,加一次1 1所用所用时间为机器周期,所以定时时间:时间为机器周期,所以定时时间:T Td d = (2= (2n n- -Count)TCount)Tcycy因此,计数初值因此,计数初值Count = 2Count = 2n n- -T Td d/ /T Tcycy式中,式中,n n = 13= 13、1616、8 8、8 8分别对应方式分别对应方式0 0、1 1、2 2、3 3。 拖谬峭倒献洛阜削攒遏盏纲辖桔瀑袭如递临大崇嘴澜公擂捅瞪家霍泛敌瞬第6章内部资源及应用第6章内部资源及应用43解:解:由于由于T0T0工作于定时方式,从而工作于定时

84、方式,从而 ,GATE = 0GATE = 0。T0T0工作于方式工作于方式1 1,所以,所以M1M0 = 01M1M0 = 01。T1T1不用,不用,TMOD = TMOD = 00000001 = 01H00000001 = 01H。系统主频系统主频f foscosc= 8MHz= 8MHz时,时钟周期时,时钟周期T Tcp cp = 1/8us= 1/8us,T Tcycy=12=12T Tcpcp=12/8=1.5us=12/8=1.5us。计数初值计数初值Count = 2Count = 21616-2000/1.5=10000H-535H=FACBH-2000/1.5=10000H

85、-535H=FACBH,初始,初始化程序如下:化程序如下: TMOD=0x01;/* TMOD=0x01;/*设置设置T0T0为定时方式为定时方式1*/1*/ TH0=0xfa; TH0=0xfa; TL0=0xcb; TL0=0xcb; TR0=1; TR0=1; ET0=1; ET0=1; EA=1; EA=1;【例】【例】 T0 T0工作于定时方式工作于定时方式1 1,定时时间,定时时间T Td d = 2ms= 2ms,系统主,系统主频频f foscosc = 8MHz = 8MHz,允许中断,对,允许中断,对T0T0进行初始化编程。进行初始化编程。峡刺疮镁募铣孤废卜各臆安临居里拓察波

86、逢锥度娠涩圾酸隔婚集槛毙销俞第6章内部资源及应用第6章内部资源及应用44 【例】【例】 T1 T1工作于定时方式工作于定时方式2 2,定时时间为,定时时间为500s500s,系统主频,系统主频f f = 6MHz= 6MHz,关中断。对,关中断。对T1T1进行初始化编程。进行初始化编程。解:解: 由于由于T1T1工作于定时方式,从而工作于定时方式,从而 ,GATE = 0GATE = 0。T1T1工作方式工作方式2 2,所以,所以M1M0 = 10M1M0 = 10。T0T0不用,不用,TMOD = TMOD = 00100000 = 20H00100000 = 20H。系统主频系统主频f f

87、oscosc= 6MHz= 6MHz时,时钟周期时,时钟周期T Tcp cp = 1/6ms= 1/6ms,T Tcy cy =12=12T Tcp cp = 12/6 = 2us= 12/6 = 2us。 Count = 2 Count = 28 8-500/2 = 256-250 = 06H-500/2 = 256-250 = 06H TMOD=0x20; /* TMOD=0x20; /*设置设置T1T1为定时方式为定时方式2*/2*/ TL1=0x06; /* TL1=0x06; /*计数器计数器TL1TL1赋初值赋初值06H*/06H*/ TH1=0x06; /* TH1=0x06;

88、/*重装寄存器重装寄存器TH1TH1赋初值赋初值06H*/06H*/ ET1=0; /*T1 ET1=0; /*T1关中断关中断*/*/ TR1=1; /* TR1=1; /*启动启动T1*/T1*/糯凳猾换裹问庄啪忌焰锐技明位臀链披皇嘴勺盔山棒懂句访疮册羽置舰喷第6章内部资源及应用第6章内部资源及应用453. 3. 定时器定时器/ /计数器中断的应用实例计数器中断的应用实例 【例】【例】 设单片机的设单片机的f fosc osc = 12 MHz= 12 MHz,要求在要求在P1.0P1.0脚上输出周期为脚上输出周期为2ms2ms的方波。的方波。解:解: 周期为周期为2ms2ms的方波要求定

89、时间隔的方波要求定时间隔1 ms1 ms,每次时间到,每次时间到P1.0P1.0取反。取反。 定时器计数率为定时器计数率为 f foscosc/12, /12, T Tcycy = 12/ = 12/f foscosc = 1 s = 1 s。 每个机器周期定时器计数加每个机器周期定时器计数加1, 1 ms = 1000 s1, 1 ms = 1000 s,需计,需计数次数为数次数为1000/(12/1000/(12/f foscosc) = 1000/1 = 1000) = 1000/1 = 1000。 由于计数器向上计数,为得到由于计数器向上计数,为得到l000l000个计数之后的定时个计

90、数之后的定时器溢出,必须给定时器赋初值器溢出,必须给定时器赋初值65536-100065536-1000,C C语言中相当语言中相当于于-1000-1000。耪寓荧教瞎解浮回污寓花趁于怒踊姑眶纤桩汗垮邱忻迈泼儒囱滤掠春瞥菩第6章内部资源及应用第6章内部资源及应用461)用定时器)用定时器1的方式的方式1编程,采用查询方式编程,采用查询方式#includesbitrect_wave=P10;/*方波由P1.0口输出*/voidtime1over(void);/*计数器计数时间到子程序*/voidmain(void)TMOD=0x10;/*设置定时器/计数器1为工作方式1*/TH1=-1000/2

91、56;/*设置计数初值高字节*/TL1=-1000%256;/*设置计数初值低字节*/IE=0x00;/*禁止中断*/TR1=1;/*启动定时*/for(;)if(TF1)time1over();/*查询计数溢出*/voidtime1over(void)TH1=-1000/256;/*设置计数初值高字节*/TL1=-1000%256;/*设置计数初值低字节*/TF1=0;/*计数溢出标志位清0*/rect_wave=!rect_wave;/*输出取反*/包伎革荣巨烧梅埔递蒲市候量兹薄顺定扬帛叔巍舅吁值重调圈蜒淌吁驯屏第6章内部资源及应用第6章内部资源及应用472)用定时器)用定时器1的方式的方

92、式1编程,采用中断方式编程,采用中断方式#includesbitrect_wave=P10;/*方波由P1.0口输出*/voidmain(void)TMOD=0x10;/*设置定时器/计数器1为工作方式1*/TH1=-1000/256;/*设置计数初值高字节*/TL1=-1000%256;/*设置计数初值低字节*/TR1=1;/*启动定时*/ET1=1;EA=1;for(;);/while(1);/*等待中断*/*定时器1中断服务程序*/voidtimer1()interrupt3TH1=-1000/256;/*设置计数初值高字节*/TL1=-1000%256;/*设置计数初值低字节*/rec

93、t_wave=!rect_wave;/*输出取反*/稚咳厘慢逐无淀忠鹃率议仟咕第洪幼粒锰挠懈疮臻槐眶旅脓汰貌鸭珐邱统第6章内部资源及应用第6章内部资源及应用484. 4. 采用定时器采用定时器/ /计数器扩展外部中断计数器扩展外部中断 尽管尽管80C5180C51为用户只提供了两个外部中断源,但用户可为用户只提供了两个外部中断源,但用户可以根据实际需求,进行多于两个外部中断请求的扩展,其以根据实际需求,进行多于两个外部中断请求的扩展,其中有很多扩展方法,如中有很多扩展方法,如6.1.46.1.4节(节(优先编码器优先编码器)的例子。在)的例子。在此重点介绍利用定时器中断作为外部中断的扩展。此重

94、点介绍利用定时器中断作为外部中断的扩展。 80C51 80C51有两个定时器有两个定时器/ /计数器计数器T0T0、T1T1,若选择它们以,若选择它们以计计数器方式数器方式工作,当引脚工作,当引脚T0T0或或T1T1上发生上发生负跳变时负跳变时,T0T0或或T1T1计计数器则数器则加加1 1。利用这个特性,借用引脚。利用这个特性,借用引脚T0T0或或T1T1作为外部中断作为外部中断请求输入线,若设定计数初值为满量程,计数器加请求输入线,若设定计数初值为满量程,计数器加1 1,就会,就会产生溢出中断请求,产生溢出中断请求,TF0TF0或或TF1TF1变成了外部中断请求标志位,变成了外部中断请求标

95、志位,T0T0或或T1T1的中断入口地址被扩展成了外部中断源的入口地址。的中断入口地址被扩展成了外部中断源的入口地址。值得注意的是当使用定时器作为外部中断时,定时器以前值得注意的是当使用定时器作为外部中断时,定时器以前的功能将失效,除非用软件对它进行复用。的功能将失效,除非用软件对它进行复用。授妆争卷酚栖绽引涛谢碍乓债讼障傻酝宣寐搓连指屏适砂阔柞斡蔡轨贵逾第6章内部资源及应用第6章内部资源及应用49将定时器将定时器T0T0引脚作为外部中断源使用的引脚作为外部中断源使用的具体做法具体做法为,设定为,设定相应定时器工作方式为相应定时器工作方式为方式方式2 2,计数器,计数器TH0TH0、TL0TL

96、0初值为初值为0FFH0FFH,允许计数器允许计数器T0T0中断中断,则,则T0T0的初始始化程序如下:的初始始化程序如下: MOV TMOD, MOV TMOD,06H ;06H ;将计数器将计数器T0T0设定为方式设定为方式2 2外外 部计数工作部计数工作 MOV TL0,#0FFH ; MOV TL0,#0FFH ;设置设置计数器初值计数器初值 MOV TH0,#0FFH ; MOV TH0,#0FFH ;设置设置重装计数器初值重装计数器初值 SETB ET0 SETB ET0 ; ;允许允许T0T0中断中断 SETB EA SETB EA ; ;开中断开中断 SETB TR0 ; SE

97、TB TR0 ;启动启动T0T0岳掏孽牧茎阴都重酶议惭过袒英纯旁购蕉杀早狮网瞅娟霓肌蔼膳冲畏拔攻第6章内部资源及应用第6章内部资源及应用50以下为利用C51实现两个定时器中断,全部作为外部中断的程序代码。#includevoidmain(void)TMOD=0x66;/*两个定时器/计数器都设置成8位模式,外部计数模式*/TH1=0xFF;/*设定重装值,TL1不用设置*/TH0=0xFF;/*设定重装值,TL0不用设置*/TCON=0x50;/*开始计数TR0、TR1置1*/IE=0x9F;/*中断使能10011111允许所有中断*/*定时器0中断服务程序*/voidtimer0_int(v

98、oid)interrupt1TF0=0;/*计数溢出标志位清0*/*定时器1中断服务程序*/voidtimer1_int(void)interrupt3TF1=0;/*计数溢出标志位清0*/植斧夹鳖值间徐笑辗吊诡揖啪却句珊犁歇止躯解诚需兢矛睹田汁减渠宇赂第6章内部资源及应用第6章内部资源及应用516.3 6.3 串行通信串行通信6.3.16.3.1 串行通信基础知识串行通信基础知识1. 1. 数据通信的传输方式数据通信的传输方式常用于数据通信的传输方式有单工、半双工、全双工方式。常用于数据通信的传输方式有单工、半双工、全双工方式。单工方式单工方式:数据仅按一个固定方向传送。因而这种传输方式:数

99、据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。据采集。半双工方式半双工方式:数据可实现双向传送,但不能同时进行,实际:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收的应用采用某种协议实现收/ /发开关转换。发开关转换。全双工方式全双工方式:允许双方同时进行数据双向传送,但一般全双:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。工传输方式的线路和设备较复杂。单工单工 半双工半双工 全双工全双工匹户奏赤时朴堂瞄种投苹曝厢夕俗惭桂臻禄查蓖淘呵历漓本撤

100、嘶勉患栅拽第6章内部资源及应用第6章内部资源及应用522. 2. 并行通信和串行通信方式并行通信和串行通信方式所谓所谓通信通信是指计算机与计算机或外设之间的数据传送,所是指计算机与计算机或外设之间的数据传送,所传输的信息是由数字传输的信息是由数字1 1和和0 0构成的具有一定规则并反映确定信构成的具有一定规则并反映确定信息的一个数据或一批数据。这种数据传输有息的一个数据或一批数据。这种数据传输有两种基本方式两种基本方式,即即并行通信并行通信和和串行通信串行通信。并行通信并行通信比较简单,根据比较简单,根据CPUCPU字长和总线特点以及外设数据字长和总线特点以及外设数据口的宽度可分为不同位数(宽

101、度)的并行通信,如口的宽度可分为不同位数(宽度)的并行通信,如8 8位并行通位并行通信、信、1616位并行通信等。并行通信的特点是数据的每位被同时位并行通信等。并行通信的特点是数据的每位被同时传输出去或接收进来。与并行通信不同,传输出去或接收进来。与并行通信不同,串行通信串行通信其数据传其数据传输是逐位传输的,因此在相同条件下,比并行通信传输速度输是逐位传输的,因此在相同条件下,比并行通信传输速度慢。慢。罕靶的廖太瑞佑柠构蛋情衰悸妖乖颜岿改羞衔暑浇鄙李阶涯斡滴名逢铺贡第6章内部资源及应用第6章内部资源及应用53 并行通信并行通信通常是将数据字节的各位用多条数据通常是将数据字节的各位用多条数据线

102、同时进行传送线同时进行传送 。 并行通信并行通信控制简单、传输速度快;但传输线较多,控制简单、传输速度快;但传输线较多,长距离传送时成本高。长距离传送时成本高。藩奋喻念蹈佛咆危录钮驾哟珍虑妹彩绊沙蛆其彤莆杰版撅镀绷延更摊漏介第6章内部资源及应用第6章内部资源及应用54串行通信串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信的特点串行通信的特点:传输线少,长距离传送时:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,成本低,且可以利用电话网等现成的设备,但数据的传送速度比并行通信慢。但数据的传送速度比并行通信慢。风彦种卵填槐城蛹蹄鞭愤窟砖鬃骨惯须蛔谢享窟实厕码

103、城凌边且景婉起壕第6章内部资源及应用第6章内部资源及应用553. 3. 异步串行通信和同步串行通信异步串行通信和同步串行通信异步串行通信异步串行通信所传输的数据格式由所传输的数据格式由1 1个起始位、个起始位、7 7个或个或8 8个个数据位、数据位、1 12 2个停止位和个停止位和1 1个校验位组成(也称为串行帧)个校验位组成(也称为串行帧)。 起始位约定为起始位约定为0 0,空闲位约定为,空闲位约定为1 1。在异步通信方式中,。在异步通信方式中,接收器和发送器接收器和发送器有各自的时钟有各自的时钟,它们的工作是非同步的。,它们的工作是非同步的。偿俭铃监柠俯恰寄活属盆例遁鸿拌瑶密恋匆倪寐协辟涛

104、旷矮揩帕衫挽掠绥第6章内部资源及应用第6章内部资源及应用56异步通信的实质是指通信双方采用独立的时钟,每个异步通信的实质是指通信双方采用独立的时钟,每个数据均以起始位开始,停止位结束,起始位触发甲乙双方数据均以起始位开始,停止位结束,起始位触发甲乙双方同步时钟。同步时钟。每个异步串行帧中的每个异步串行帧中的1 1位彼此严格同步位彼此严格同步,位周期位周期相同相同。所谓异步所谓异步是指发送、接收双方的数据是指发送、接收双方的数据帧与帧帧与帧之间不之间不要求同步,也不必同步。要求同步,也不必同步。禽净醇檬远阂装壤沙娘治犬搁篙坯乖柯汕槐遂轧杨喀疟徘鼓缴姜钡沉拆浴第6章内部资源及应用第6章内部资源及应

105、用57异步通信的数据格式异步通信的数据格式:异步通信的特点异步通信的特点:不要求收发双方时钟的:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但严格一致,实现容易,设备开销较小,但每个字符要附加每个字符要附加23位用于起止位,各帧位用于起止位,各帧之间还有间隔,因此传输效率不高。之间还有间隔,因此传输效率不高。揍弟糯碧匿札呻童攻抄笋耕坝咖忱通筹燕挣衫鹃亿怕练馒矗烷辑谋叁悬颈第6章内部资源及应用第6章内部资源及应用58同步串行通信同步串行通信,发送器和接收器由,发送器和接收器由同一个时钟源控同一个时钟源控制制。同步传输方式去掉了起始位和停止位,只在传输数。同步传输方式去掉了起始位和停止位

106、,只在传输数据块时先送出一个据块时先送出一个同步头(字符)标志同步头(字符)标志即可。即可。同步传输同步传输方式比异步传输方式方式比异步传输方式速度快速度快,这是它的,这是它的优势优势。但是同步传输必须用一个时钟来协调收发器的工作,所以但是同步传输必须用一个时钟来协调收发器的工作,所以它的它的设备也较复杂设备也较复杂。护馒浆抵幂描僚棒铡赊怂酗袖玉摸沾潜剥治么粱荧泵博旨言胸蔑管蹿辜澄第6章内部资源及应用第6章内部资源及应用594. 4. 波特率及时钟频率波特率及时钟频率波特率是串行通信中一个重要概念。波特率是串行通信中一个重要概念。波特率波特率BRBR是单位时间传是单位时间传输的数据位数,即单位

107、输的数据位数,即单位:bps:bps(bit per secondbit per second)1bps = 1bps = 1bit/s1bit/s。波特率的倒数即为每位传输所需的时间。由上面介绍。波特率的倒数即为每位传输所需的时间。由上面介绍的异步串行通信原理可知,的异步串行通信原理可知,互相通信甲乙双方必须具有相同的互相通信甲乙双方必须具有相同的波特率波特率,否则无法成功地完成数据通信。发送,否则无法成功地完成数据通信。发送/ /接收时钟频率接收时钟频率与波特率有关,即与波特率有关,即f fT/RT/R = = n nBRBRT/RT/R式中,式中,f fT/RT/R为为发发/ /收时钟频

108、率收时钟频率,单位:,单位:HzHz;BRBRT/RT/R为发为发/ /收波特收波特率,单位:率,单位:bpsbps;n n为波特率因子。为波特率因子。同步通信同步通信n n = 1= 1。异步通信。异步通信n n可取可取1 1、1616或或6464。也就是说,同。也就是说,同步通信中数据传输的波特率即为同步时钟频率;而异步通信中,步通信中数据传输的波特率即为同步时钟频率;而异步通信中,时钟频率可为波特率的整数倍。时钟频率可为波特率的整数倍。创鳃篇荤箭砍只赵贞开湾让唱情秀跟衰帮卒栈裙吓屠柯勘亦蹲捌歉宜男召第6章内部资源及应用第6章内部资源及应用605. 5. 串行通信的校验串行通信的校验异步通

109、信时可能会出现帧格式错、超时错等传输错误。在具异步通信时可能会出现帧格式错、超时错等传输错误。在具有串行口的单片机的开发中,应考虑在通信过程中对数据差错有串行口的单片机的开发中,应考虑在通信过程中对数据差错进行校验,因为进行校验,因为差错校验是保证准确无误通信的关键差错校验是保证准确无误通信的关键。常用差错校验方法有常用差错校验方法有奇偶校验奇偶校验(80C5180C51系列单片机编程采用此系列单片机编程采用此法)、和校验及循环冗余码校验。法)、和校验及循环冗余码校验。1 1)奇偶校验)奇偶校验在发送数据时,数据位尾随的一位数据为奇偶校验位(在发送数据时,数据位尾随的一位数据为奇偶校验位(1

110、1或或0 0)。当设置为)。当设置为奇校验时奇校验时,数据中,数据中1 1的个数与校验位的个数与校验位1 1的个数之和的个数之和应为奇数;当设置为应为奇数;当设置为偶校验时偶校验时,数据中,数据中1 1的个数与校验位中的个数与校验位中1 1的的个数之和应为偶数。接收时,接收方应具有与发送方一致的差个数之和应为偶数。接收时,接收方应具有与发送方一致的差错检验设置,当接收一个字符时,对错检验设置,当接收一个字符时,对1 1的个数进行校验,若二者的个数进行校验,若二者不一致,则说明数据传送出现了差错。不一致,则说明数据传送出现了差错。奇偶校验是按字符校验,数据传输速度将受到影响。这种特奇偶校验是按字

111、符校验,数据传输速度将受到影响。这种特点使得它一般只用于异步串行通信中。点使得它一般只用于异步串行通信中。仙孽韩票药梦斩设谭扣延溪槽规酝潍汲燃盐郴柔效逞旅泉突纯畏汕演翌慌第6章内部资源及应用第6章内部资源及应用612 2)和校验)和校验所谓和校验是指发送方将所发送的所谓和校验是指发送方将所发送的数据块求和数据块求和(字节数求和)(字节数求和),并产生一个字节的校验字符(校验和)附加到数据块末尾。,并产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据时也是先对数据块求和,将所得结果与发送方接收方接收数据时也是先对数据块求和,将所得结果与发送方的校验和进行比较,相符则无差错,否则即出

112、现了差错。这种的校验和进行比较,相符则无差错,否则即出现了差错。这种和校验的特点是无法检验出字节位序的错误。和校验的特点是无法检验出字节位序的错误。3 3)循环冗余码校验)循环冗余码校验这种校验是对一个数据块校验一次。例如对磁盘信息的访问、这种校验是对一个数据块校验一次。例如对磁盘信息的访问、ROMROM或或RAMRAM存储区的完整性等的检验。这种方法广泛应用于串行存储区的完整性等的检验。这种方法广泛应用于串行通信方式。通信方式。济跺攘斩氮隘体坝厄挫拖座撩是墒离郎湾芥喂堆耽假坯谰谩掏曙坎环搜倾第6章内部资源及应用第6章内部资源及应用626.3.2 80C516.3.2 80C51串行接口串行接

113、口对于单片机来说,为了进行串行数据通信,同样也需要有对于单片机来说,为了进行串行数据通信,同样也需要有相应的相应的串行接口电路串行接口电路。只不过这个接口电路不是单独的芯片,。只不过这个接口电路不是单独的芯片,而是集成在单片机芯片的内部,成为单片机芯片的一个组成而是集成在单片机芯片的内部,成为单片机芯片的一个组成部分。部分。80C5180C51单片机内部有单片机内部有一个全双工一个全双工的串行通信口的串行通信口,即,即串行接收和发串行接收和发送缓冲器(送缓冲器(SBUFSBUF),这两个在物),这两个在物理上独立的接收发送器,既可以理上独立的接收发送器,既可以接收数据,也可以发送数据接收数据,

114、也可以发送数据。但。但接收缓冲器只能读出接收缓冲器只能读出不能写入,不能写入,而而发送缓冲器则只能写入发送缓冲器则只能写入不能读不能读出,它们的地址为出,它们的地址为99H99H。碳犯劲帐氖盖裴鲜熟圆蹬魁瞬慰爵篆非犁讽网酒蹦晶辉燕秩旷娇猿挪嘿槽第6章内部资源及应用第6章内部资源及应用631. 1. 串行口结构与特殊功能寄存器串行口结构与特殊功能寄存器80C5180C51单片机串行口是由单片机串行口是由发送缓冲寄存器发送缓冲寄存器SBUFSBUF、发送控制器发送控制器、发送控制门发送控制门、接收缓冲寄存器接收缓冲寄存器SBUFSBUF、接收控制寄存器接收控制寄存器、移位移位寄存器寄存器和和中断中

115、断等部分组成的。等部分组成的。SBUFSBUF是串行口的缓冲寄存器。它是一个可寻址的专用寄存是串行口的缓冲寄存器。它是一个可寻址的专用寄存器,其中包括发送寄存器和接收寄存器,以便能以全双工方器,其中包括发送寄存器和接收寄存器,以便能以全双工方式进行通信。式进行通信。发送、接收控制器的速率由波特率发生器发送、接收控制器的速率由波特率发生器T1T1控制。控制。当一当一帧数据发送结束后,将帧数据发送结束后,将TITI置置1 1向向CPUCPU发中断,当接收到一帧发中断,当接收到一帧数据后,将数据后,将RIRI置置1 1向向CPUCPU发中断发中断。TB8TB8为发送数据的第为发送数据的第9 9位,位

116、,RB8RB8为接收数据的第为接收数据的第9 9位。位。说突坠啡瘩纱军署焰翱掌躇析桨裂戚杖吉逊窄川羽阉虑氖历墓渭奠魔眨重第6章内部资源及应用第6章内部资源及应用64此外,在接收寄存器之前还有此外,在接收寄存器之前还有移位寄存器移位寄存器,从而构成了串,从而构成了串行接收的双缓冲结构,以避免在数据接收过程中出现帧重叠行接收的双缓冲结构,以避免在数据接收过程中出现帧重叠错误。与接收数据情况不同,发送数据时,由于错误。与接收数据情况不同,发送数据时,由于CPUCPU是主动是主动的,不会发生帧重叠错误,因此发送电路就不需要双重缓冲的,不会发生帧重叠错误,因此发送电路就不需要双重缓冲结构。结构。与串行通

117、信有关的控制寄存器共有与串行通信有关的控制寄存器共有4 4个:个:SBUFSBUF、SCONSCON、PCONPCON和和IEIE。箕基芍字畜蛤姆纯六漱篡掂剩芝万珐唇祁兑矽领遁濒硝瞬三奎眠屹痕鳃银第6章内部资源及应用第6章内部资源及应用651 1)SBUFSBUF在逻辑上,SBUF只有一个,既表示发送寄存器,又表示接收寄存器。具有同一个单元地址99H。在物理上,SBUF有两个,一个是发送寄存器,另一个是接收寄存器。2 2)控制寄存器)控制寄存器(1 1)串行控制寄存器)串行控制寄存器SCONSCONSCON是80C51的一个可位寻址的专用寄存器,用于串行数据通信的控制。单元地址98H,位地址9

118、FH98H。爽未思恩枫凭挛申恭驹勾汰絮种寒较盏主醋钙扁朽辣放治坑蔷送累筷截胜第6章内部资源及应用第6章内部资源及应用66(2 2)电源控制寄存器)电源控制寄存器PCONPCONPCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器。单元地址为87H。(3 3)中断允许控制寄存器)中断允许控制寄存器IEIEIE的地址是A8H,其内容如表6.15所示。其中与串行口允许中断的控制位为ES,当ES = 1,允许串行口中断;当ES = 0,禁止串行中断。中断允许控制寄存器中断允许控制寄存器IEIE位地址和位符号位地址和位符号 钻禹支估黎硒鬃吝钞缺光骄赔风惠呐泪肉萝黄惕升澳吊旺脏境占米还油茶第6章

119、内部资源及应用第6章内部资源及应用672. 80C512. 80C51串行通信工作方式串行通信工作方式1 1)串行工作方式)串行工作方式0 0 在方式在方式0 0下,串行口作为下,串行口作为同步同步移位寄存器使用。这时用移位寄存器使用。这时用RXDRXD(P3.0P3.0)引脚作为数据移位的)引脚作为数据移位的入口和出口入口和出口,而由,而由TXDTXD(P3.1P3.1)引脚)引脚提供移位脉冲提供移位脉冲。移位数据的发送和接收以。移位数据的发送和接收以8 8位位为一帧,不设起始位和停止位,为一帧,不设起始位和停止位,低位在前高位在后低位在前高位在后,其帧格式,其帧格式如下图所示如下图所示 D

120、0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7 帧格式图帧格式图帧格式图帧格式图 喀靖你蔬饮脑坤梯酥乳戊盂畔南飞彩遍幻销夜唁塑檄材早宠尊鹤惰蹋赴氯第6章内部资源及应用第6章内部资源及应用68使用方式0实现数据的移位输入输出时,实际上是把串行口变成并行口使用。串行口作为并行输出口使用时,要有“串入并出”的移位寄存器配合(例如CD4049或74HC164),其电路连接如图所示。串行口与74HC164配合图(a)为74HC164的引脚图 ,图(b)为串行口与74HC165的连接图。 莹能土宴塘榨垂衅镰鞘浇庐娩弗癸策构弯缮芍粤曹斩迈站颧牵池嚷担奠尿第6章内部资源及应用第6章内部资源及应

121、用69【例】使用74HC164的并行输出引脚接8支发光二极管,利用它的串入并出功能,把发光二极管从左向右轮流点亮,并反复循环。解:解:假定发光二极管为共阴极型,则电路连接如图所示。图串行移位输出电路换像莫牺芒毗诡负壕带过扯樊春悔联巡竭临款炮侵猫诫厄晤酥删分嗣靶梭第6章内部资源及应用第6章内部资源及应用70当串行口把8位状态码串行移位输出后,TI置1。如把TI作为状态查询标志,则使用查询方法完成的参考程序如下:#include#include#defineout_offP10=0#defineout_onP10=1externvoiddelay(void);/*外部延时函数*/voidmain(

122、)uchari;SCON=0x00;/*串行口方式0工作*/ES=0;/*禁止串行中断*/for(;)for(i=0;i8;i+)out_off;/*关闭并行输出*/SBUF=_cror_(0x80,i);/*串行输出*/while(!TI)/*状态查询*/out_on;/*开启并行输出*/TI=0;/*清发送中断标志*/delay();/*状态维持*/鞘鼎糜艳栈扣垦酮辖瓷掩拦扭埋寓绚糟驻约稼鲍忧发脏炎柒抗秉滨氖昌枉第6章内部资源及应用第6章内部资源及应用712 2)串行工作方式)串行工作方式1 1方式1是10位为一帧的异步异步串行通信方式。共包括1个起始位,8个数据位和一个停止位。其帧格式如

123、图所示。起始D0D1D2D3D4D5D6D7停止(1 1)数据发送与接收)数据发送与接收 方式1的数据发送是由一条写发送寄存器(SBUF)指令开始的。随后在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下,由TXD端串行输出。一个字符帧发送完后,使TXD输出线维持在1(SPACE)状态下,并将SCON寄存器的TI置1,通知CPU可以发送下一个字符。帧格式图接收数据时接收数据时,SCON的REN位应处于允许接收状态(REN = 1)。在此前提下,串行口采样RXD端,当采样到从1向0的状态跳变时,就认定是接收到起始位。随后在移位脉冲的控制下,把接收到的数据位移入接收

124、寄存器中。直到停止位到来之后把停止位送入RB8中,并置位中断标志位RI,通知CPU从SBUF取走接收到的一个字符。侣蒜陪沸淄垮烃骋店袄连兽省注萧钮奎诸嫉惮捆挑医亥旋技制每踏坝摊酞第6章内部资源及应用第6章内部资源及应用72(2 2)波特率设定)波特率设定方式方式0 0的波特率是的波特率是固定固定的,一的,一个机器周期进行一次移位个机器周期进行一次移位。但方式但方式1 1的波特率是的波特率是可变可变的,其波特率由定时器的,其波特率由定时器1 1的的计数溢出计数溢出率率决定,公式为:决定,公式为:BR = (2BR = (2SMODSMODT T1 1溢出率溢出率) /32) /32式中,式中,S

125、MODSMOD为为PCONPCON寄存器最高位的值,寄存器最高位的值,SMOD=1SMOD=1表示波特率表示波特率加倍。加倍。当当定时器定时器1 1(也可使用定时器(也可使用定时器2 2)作为)作为波特率发生器波特率发生器使用时,使用时,通常选用定时器通常选用定时器1 1的工作方式的工作方式2 2(注意注意,不要把定时器,不要把定时器/ /计数计数器的工作方式与串行口的工作方式混淆!)。器的工作方式与串行口的工作方式混淆!)。工作方式工作方式2 2其计数结构为其计数结构为8 8位,假定计数初值为位,假定计数初值为CountCount,则,则定时时间定时时间T T = (256-Count)=

126、(256-Count)T Tcy,cy,从而在从而在1s1s内发生溢出的次内发生溢出的次数(即溢出率)为:数(即溢出率)为:1/ (256-Count)1/ (256-Count)T Tcy)cy),其波特率为:,其波特率为: BR = 2BR = 2SMODSMOD/ (32(256-Count)/ (32(256-Count)T Tcy)cy)。致炬备个甚漳黎夏旺胳歉除蜜祷焚栏节昭找罢纹搔漏赠馆祥征赔好谷跌胎第6章内部资源及应用第6章内部资源及应用73由于针对具体的单片机系统而言,其时钟频率是固定的,由于针对具体的单片机系统而言,其时钟频率是固定的,从而机器周期也是可知的,所以在上面的公式

127、中,从而机器周期也是可知的,所以在上面的公式中,有两个变有两个变量:波特率和计数初值量:波特率和计数初值。只要已知其中一个变量的值,就可。只要已知其中一个变量的值,就可以求出另外一个变量的值。以求出另外一个变量的值。在串行口工作方式在串行口工作方式1 1中,之所以选择定时器的工作方式中,之所以选择定时器的工作方式2 2,是由于方式是由于方式2 2具有自动加载功能,从而避免了通过程序反复具有自动加载功能,从而避免了通过程序反复装入计数初值而引起的定时误差,使得波特率更加稳定。装入计数初值而引起的定时误差,使得波特率更加稳定。3 3)串行工作方式)串行工作方式2 2和方式和方式3 3方式方式2 2

128、和方式和方式3 3是是1111位一帧的串行通信方式,即位一帧的串行通信方式,即1 1个起始位,个起始位,9 9个数据位和个数据位和1 1个停止位,格式如图所示。个停止位,格式如图所示。起始起始D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7D8D8停止停止 帧格式图帧格式图绵膘鸦恋蛰北龋钠滩痹休既扯棺回溜素齐搏贷缸薪恿撤佯贴影柜聚藤别章第6章内部资源及应用第6章内部资源及应用74在方式在方式2 2和方式和方式3 3下,字符还是下,字符还是8 8个数据位。而个数据位。而第第9 9数据数据D8D8位,位,既可作为奇偶校验位使用,也可作为控制位使用既可作为奇偶校验位使用,也可作为控制

129、位使用, ,其功能由其功能由用户确定,用户确定,发送之前发送之前应先将应先将SCONSCON中的中的TB8TB8准备好准备好。可使用如。可使用如下指令完成:下指令完成:SETB TB8 ;TB8SETB TB8 ;TB8位置位置1 1CLR TB8 ;TB8CLR TB8 ;TB8位清位清0 0准备好第准备好第9 9数据位之后数据位之后, ,再向再向SBUFSBUF写入字符的写入字符的8 8个数据位,个数据位,并以此来启动串行发送。一个字符帧发送完毕后,将并以此来启动串行发送。一个字符帧发送完毕后,将TITI位置位置1 1,其过程与方式,其过程与方式1 1相同。方式相同。方式2 2的的接收过程

130、接收过程也与方式也与方式1 1类似,类似,所不同的在于第所不同的在于第9 9数据位上,串行口把接收到的数据位上,串行口把接收到的8 8位数据送入位数据送入SBUFSBUF,而把第而把第9 9数据位送入数据位送入RB8RB8。方式方式2 2和方式和方式3 3的的不同之处在不同之处在于波特率的计算方法不同。于波特率的计算方法不同。方方式式3 3同方式同方式1 1, , 即通过设置定时器即通过设置定时器1 1的的初值初值来设定波特率。来设定波特率。方方式式2 2的波特率是固定的,且有两种。一种是晶振频率的的波特率是固定的,且有两种。一种是晶振频率的1/321/32,另一种是晶振频率的,另一种是晶振频

131、率的1/64,1/64,即即f fosc/32osc/32和和f fosc/64osc/64。如用公。如用公式表示为:式表示为:BR = 2BR = 2SMODSMODf fosc/64osc/64赋芒洛劫敞降小佩怠褪游盅俱郎啃悦商翅咬汐锚翼眩泵楚拢葱缅裹疏槛钢第6章内部资源及应用第6章内部资源及应用753. 80C513. 80C51串行口波特率串行口波特率从从80C5180C51串行通信的各种工作方式可知:串行通信的各种工作方式可知:方式方式0 0时波特率是时波特率是固定固定的,为单片机晶振频率的的,为单片机晶振频率的1/121/12,即,即BR = BR = f fosc/12osc/1

132、2。如晶振频率用。如晶振频率用f foscosc表示,按此波特率也就是表示,按此波特率也就是一个机器周期进行一次移位。当一个机器周期进行一次移位。当f fosc = 6MHzosc = 6MHz,则波特率为,则波特率为500kbps500kbps,即,即2us2us移位一次;如移位一次;如f fosc = 12MHzosc = 12MHz,则波特率为,则波特率为1Mbps1Mbps,即,即1us1us移位一次。移位一次。方式方式2 2的波特率也是的波特率也是固定固定的,且有两种。一种是晶振频率的,且有两种。一种是晶振频率的的1/321/32,另一种是晶振频率的,另一种是晶振频率的1/641/6

133、4,即,即f fosc/32osc/32和和f fosc/64osc/64。如用公式表示为:如用公式表示为:BR = 2BR = 2SMODSMODf fosc/64osc/64式中,式中,SMODSMOD为为PCONPCON寄存器最高位的值,寄存器最高位的值,SMOD = 1SMOD = 1表示波特表示波特率加倍。率加倍。尔敲责莹管臻犬丝圣脚蝉涵桌馏竣献蛹黍拎练疵形沏椽涣彻祁墓耸空馈舜第6章内部资源及应用第6章内部资源及应用76方式方式1 1和方式和方式3 3的波特率是可变的,其波特率由定时器的波特率是可变的,其波特率由定时器1 1的的计数溢出(对计数溢出(对80C5280C52来说,也可使

134、用定时器来说,也可使用定时器2 2的计数溢出)决的计数溢出)决定,公式为定,公式为BR = (2BR = (2SMODSMODT1T1溢出率溢出率) /32) /32式中,式中,SMODSMOD为为PCONPCON寄存器最高位的值,寄存器最高位的值,SMOD = 1SMOD = 1表示波特表示波特率加倍。而率加倍。而定时器定时器1 1溢出率溢出率计算公式为:计算公式为:T T = = f fosc/12(256-TH1)osc/12(256-TH1)衙涌庙誉泉会酬呛豪铅沼唉掀二霍勋素沙虚韧漏释祁饿椰鸡儡杭撅浓婶啼第6章内部资源及应用第6章内部资源及应用77辫高噬厢烙枉碑胎翻胺合困悉筒缓杰颓宏泼足鼻诸昏撬筛帚陀糜疆臆素慨第6章内部资源及应用第6章内部资源及应用78

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号