欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    中断定时与串口.ppt

    • 资源ID:2710222       资源大小:2.67MB        全文页数:96页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    中断定时与串口.ppt

    ,第四章: 中断,定时与串口,本讲重点: 中断概念,响应条件,处理原则,中断服务; 定时器/计数器工作方式1,2的用法; 串行通讯的波特率, 4种工作方式.,单片机的中断系统,数据的输入/输出传送方式,查询传送方式(LOOK UP): 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待,中断传送方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送,无条件传送方式: 一方对另一方来说总是准备好的,直接存储器存取方式(DMA): 双方直接通过总线传送数据, 不经CPU中转,数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接到申请后若同意传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。,中断功能强弱是计算机性能优劣的重要标志 提高CPU效率 解决速度矛盾 实现并行工作 应付突发事件,中断传送方式特点,中断源 中断申请 开放中断 保护现场 中断服务 恢复现场 中断返回,中断涉及的几个环节,(前面提到的甲方) (甲方发出信号提出申请) (乙方同意传送) (安排好当前的工作) (响应乙方的要求) (完事后,回去) (继续做打断前的工作),单片机的中断源及TCON,CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。,51子系列允许5个(52子系列6个)中断源: 2个外部中断请求:INT0,INT1 2个片内定时器/计数器T0和T1中断请求: TF0,TF1,(TF252子系列有T2) 1个串行口中断请求:TI/RI,CPU识别中断申请的依据:,单片机的中断源及TCON,CPU 在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。,CPU识别中断申请的依据:,Tc,Ts,Tm,Tm,Tc=1/fosc Ts=2Tc Tm=12Tc=6Ts,S5,S6,S4,S3,S2,S5,S6,S4,S3,S2,S1,定时器控制寄存器TCON (88H),TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON,TF0/TF1:定时器溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,进中断后自动清零。,TR0/TR1:定时器运行启停控制位: =0:定时器停止运行; =1:定时器启动运行。,TCON:Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断),定时器控制寄存器TCON (88H),TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON,IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。,IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效.,TCON:Timer控制寄存器,低4位管理外部中断,在CPU已经开放了外部中断允许的前提下: 在INT0/INT1引脚输入一个负脉冲或低电平, TCON寄存器中的IE0/IE1标志位自动变“1”, CPU检测到IE0/IE1变“1”后,将自动跳转到 0003H(/0013H)执行中断服务程序, 并将IE0/IE1标志位自动清“0”,以备下次申请。,外部中断(INT0,INT1)申请过程,单片机的中断矢量与优先级,中断矢量: MCS-51单片机的 5 个中断源分别对应有各自的中断服务程序入口地址中断矢量,最高优先级 最低优先级, PT2 PS PT1 PX1 PT0 PX0,IP,PX0/PX1:INT0/1优先级控制位: =0 时属低优先级; =1 时属高优先级。 PT0/PT1/PT2:T0/1/2中断优先级控制位: =0 时属低优先级; =1 时属高优先级。 PS:串行口中断优先级控制位: =0 时属低优先级; =1 时属高优先级。,中断优先级控制寄存器IP (0B8H),对同时发生多个中断申请时: 不同优先级的中断同时申请(很难遇到) 先高后低 相同优先级的中断同时申请(很难遇到) 按序执行 正处理低优先级中断又接到高级别中断 高打断低 正处理高优先级中断又接到低级别中断 高不理低,中断优先级处理原则,没有同级的中断或更高级别的中断正在处理;,在中断源提出了中断申请且CPU此前已经允许中断的前提下,还须满足以下三个条件:,正在执行的指令必须执行完最后 1个机器周期;,若正在执行RETI,或正在访问IE或IP寄存器,须执行完上述指令和下一条指令以后方能响应中断。,EA ET2 ES ET1 EX1 ET0 EX0,IE,中断允许寄存器IE (0A8H),EX0/EX1/ET1/ET0/ES 位: 分别是INT0/1,Timer0/1,串行口的中断允 许控制位: =0 时禁止中断; =1 时允许中断。 ET2:T2中断允许控制位(仅52子系列有) =0 时禁止中断; =1 时允许中断。 EA:总的中断允许控制位(总开关): =0 时禁止全部中断;=1 时允许中断。,中断系统硬件结构,注:各中断允许控制位=0,开关断开; =1,开关接通,IE0,EX0,TF0,IE1,TF1,TI,ES,ET1,EX1,ET0,外部中断 请求0,外部中断 请求1,内部 定时器0,内部 定时器1,内部 串行口,T,R,RI,IE寄存器,EA位,IP寄存器,各单路开关,总开关,中断源标志位查询机构,高中断级中断请求,低中断级中断请求,中断入口,中断源标志位,INT0,INT1,中断入口,中断源标志位,中断应用前后要做的几项工作,中断前 开中断允许:必须 选择优先级:根据需要选择,可有/可无 设置控制位:INTx触发方式(ITx) TxTCON,TMOD,TRx,初值 RI/TISCON,REN,RB8,TB8,中断后 进入中断服务后:保护现场,关中断, 退出中断服务前:恢复现场,开中断,设Tx的初 值,清TI/RI, 中断服务程序的最后一条指令必是 RETI,编写中断服务程序时应注意的几点:,1)各中断源的入口矢量地址之间,只相隔8个单元,一般中断服务程序是容纳不下的,因而最常用的方法是将中断服务程序放置在程序存储器的其它空间,而在中断入口矢量地址单元处存放一条无条件转移指令,转至该服务程序。 2)若要在执行当前中断程序时禁止更高优先级中断,应采用软件来关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回前再开放这些中断。,3)现场通常用到PSW、工作寄存器和专用寄存器等。如果在中断服务程序中要用这些寄存器,则在中断服务前应将它们的内容保护起来称保护现场,同时在RETI指令前应恢复现场。 4)在保护现场和恢复现场时,为了不使现场信息受到破坏或造成混乱,一般情况下,应关CPU中断,使CPU暂不响应新的中断请求。因此在编写中断服务程序时,保护现场之前要关中断,在保护现场之后若允许高优先级中断源中断它,则应开中断。同样在恢复现场之前也应关中断,恢复之后再开中断。,编写中断服务程序时应注意的几点:,五、中断系统的应用举例,从软件角度看,使用中断时需要做两个方面的任务: (1)按人们的意志对中断源进行管理和控制。 中断源管理和控制(初始化程序)程序一般都包含在主程序中,根据需要通过几条指令来完成。 在编写中断管理与控制程序时应考虑以下项目: 1)CPU开中断与关中断; 2)某个中断源中断请求的允许或屏蔽; 3)各中断源优先级别的设定; 4)外部中断请求的触发方式。 (2)编制中断服务程序。 中断服务程序是一种具有特定功能的独立程序段,根据中断源的具体要求进行服务的。,中断应用程序举例:,例:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。,此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。,中断应用程序举例:,例:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。,此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。,ORG 0000H LJMP MAIN ORG 0013H ;中断矢量 LJMP INT MAIN:SETB EA ;开总中断允许“开关” SETB EX1 ;开分中断允许“开关” CLR PX1 ;0 优先级(也可不要此句) SETB IT1 ;边沿触发 MOV B,#01H ;给 B 寄存器赋初值 MOV P1,B HERE:SJMP HERE ;原地等待中断申请,INT: MOV A,B ;自B寄存器中取数 RL A ;左环移一次 MOV B,A ;存回B,备下次取用 MOV P1,A ;输出到P1口 RETI ;中断返回,中断服 务程序,利用做一个计数器。当有脉冲时,A的内容加1。并且当A的内容大于或等于100时将P1.0置位.,ORG 0000h Ljmp MIN0 ORG 0003h Ljmp INTB0 ORG 000bh reti ORG 0013h reti ORG 001bh reti ORG 0023h reti ORG 0030h Min0: mov sp,#30h Setb IT0,Setb EX0 CLR PX0 SETB EA Mov a,#00 Min1: NOP ljmp Min1 Org 0100h INTB0: Push psw Add A,#01 Cjne a,#100,INTB1 Ljmp INTB2 INTB1: jc INTB3 INTB2: setb P1.0 INTB3: POP PSW RETI,单片机的定时/计数器,2个16位定时器/计数器 (52系列有3个16位Timer) 定时器:对片内机器周期进行计数 计数器:对Tx引脚输入的负脉冲进行计数,与Timer工作有关的特殊功能寄存器: TCON 和 TMOD,Timer的2个特殊功能寄存器(TCON,TMOD),TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,定时器控制寄存器TCON (88H) P.137,TFx: Timer0/1计数溢出标志位。 =1 计数溢出; =0 计数未满 TFx标志位可用于申请中断或供CPU查询。 在进入中断服务程序时会自动清零;但在 查询方式时必须软件清零。,TRx: Timer0/1运行控制位。 =1 启动计数; =0 停止计数,TR0/TR1:Timer0/1运行控制位: TR0/TR1 =0 时,Timer0/1停止计数 TR0/TR1 =1 时,Timer0/1启动计数,定时器T0/T1 中断申请过程, 在已经开放T0/T1中断允许且已被启动的前提下: T0/T1加满溢出时 TF0/TF1标志位自动置“1” 检测到TCON中TF0/TF1变“1”后,将转到 000BH/001BH 执行中断服务程序, TF0/TF1标志位会自动清“0”,以备下次中断申请。,定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数,TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON (88H),GATE C / T M1 M0 GATE C / T M1 M0,定时器方式寄存器TMOD (89H) P.137,T1,T0,M1,M0:工作方式定义位 ( 定义4 种方式 ):,C/T :计数器/定时器选择位 = 1 外部事件计数器。对Tx引脚的负脉冲计数; = 0 片内时钟定时器。对机器周期脉冲计数定时,0 0:13位 Timer用它无益,不要记它! 0 1:16位 Timer经常用到 1 0:可自动重装的 8位 Timer经常用到 1 1:T0 分为2个8位 Timer;T1 此时不工作 因为没有带来甚麽好处,几乎无用,GATE C / T M1 M0 GATE C / T M1 M0,T1,T0,GATE门控位: Timer可由软件与硬件两者控制 GATE = 0 普通用法 Timer的启/停由软件对TRx位写“1”/“0”控制,定时器方式寄存器TMOD(续),(89H), GATE = 1 门控用法 Timer的启/停由软件对TRx位写“1”/“0” 和在INTx引脚上出现的信号的高/低共同控制,定时器结构与工作方式,工作方式1:16位的定时/计数器,振荡器,12,TLx THx (8位) (8位),TFx,申请中断,Tx端,TRx位,GATE位,INTx端,1,&,C/T=0,C/T=1,控制 =1开关接通,或门,与门, THx/TLx赋初值:THx赋高8位,TLx赋低8位,工作方式1 的编程要点:, TMOD选方式: 写“M1,M0”=01 b 选方式1, 若不用门控位,直接用软件写TRx控制启/停 若使用门控位,先置位TRx,然后由INTx端 的高/低电平来控制其启/停, 若要允许中断,还须先置位ETx、EA等中断 允许控制位,并编写中断服务程序 若不用中断,可查询“计数溢出标志TFx” 的方式工作,但溢出标志TFx须软件清0,定时器(方式1)应用程序举例:,分析:已知fosc = 6MHz 则: (振荡周期)1Tc=1/6MHz (机器周期)1Tm=12Tc=12/6MHz=2S 粗略地说:Tmin 2S 16位定时器最大数值为:216=65536=0FFFFH+1 故选择方式 1 工作可以得到: Tmax = 655362 = 131072S131.072mS,例:若晶振频率为6MHz,计算单片机的最小与最大定时时间:,分析:已知fosc = 6MHz 则: (机器周期)1Tm=12Tc=12/6MHz=2S 100mS÷2 S = 50000 16位定时器最大数值为: 216 = 65536 (=0FFFFH+1) 故选择方式1工作可以满足要求。 计算初值:6553650000=15536=3CB0H,例:要求对T0产生100mS定时进行初始化。 (晶振=6MHz),定时器(方式1)应用程序举例:,GATE C / T M1 M0 GATE C / T M1 M0,定时器方式 寄存器TMOD,由分析得知:T0选择方式1,初值=3CB0H,X X X X 0 0 0 1,初始化:MOV TMOD,#01H ;选 T0 方式 1 MOV TH0, #3CH ;赋初值高8位 MOV TL0, #0B0H ;赋初值低8位 SETB TR0 ;启动 T0定时 若需要定时器0产生中断还应当写如下语句: SETB ET0 ;开T0中断允许 SETB EA ;开总中断允许 以及相应的中断服务程序。,工作方式2:8 位自动重装的定时/计数器,振荡器,12,TLx (8位),TFx,申请中断,Tx端,TRx位,GATE位,INTx端,1,&,C/T=0,C/T=1,控制 =1开关接通,或门,与门,THx (8位),溢出位,门开, THx/TLx赋相同初值 在TLx计数达到0FFH 再加“1”时,TL0 将溢出,进位位直接进入“TFx”去申请 中断,同时打开三态门,使THx中的值 自动重装(Copy)进TLx,工作方式 2 的编程:, TMOD寄存器选方式: 写“M1,M0” = 10 b 选中方式2, 其他用法与各种方式1完全相同,分析:fosc = 6MHz 1机器周期 = 2 S 1KHz方波周期 = 1 mS 半个方波周期 =500S 500uS÷2 uS = 250 若选择方式2 工作,8位定时器最大数值为: 28 =256 =0FFH + 1 可以满足要求。 计算初值:256250=6,例:从P1.0 脚输出频率=1KHz方波。 设:晶振=6MHz。利用T1定时中断。,Th:半周期,T:周期,定时器(方式2)应用程序举例:,ORG 0000H AJMP MAIN ORG 001BH ;T1的中断矢量 CPL P1.0 ;中断服务:P1.0取非 RETI ;中断返回 MAIN: MOV TMOD,#20H MOV TH1, #6 MOV TL1, #6 SETB ET1 SETB EA SETB TR1 HERE: AJMP HERE ;原地等待中断 END,初始化,;选T1方式2 ;赋重装值 ;赋初值 ;开T1中断 ;开总中断 ;启动T1,T0: 组织成TL0和TH0两个8位定时/计数器,Timer工作方式 3 几乎无用,T1: 不再是定时/计数器了 T1 的TR1和TF1出借给TH0当控制位使用, 剩下的TH1/TL1寄存器只能当作普通寄存 器用。,振荡器,12,TL0 (8位),TF0,申请中断,T0端,TR0位,GATE位,INT0端,1,&,C/T=0,C/T=1,控制 =1开关接通,或门,与门,TH0 (8位),TF1,申请中断,TR1位,控制 =1,Timer工作方式 3 结构:,T0成为双 8位Timer T1不再有Timer功能 TF1,TR1出借给TH0,定时器小结: (2个16位加法计数器),运行/停止由TRx位控制,(当GATE=1时: 由TRx位和INTx引脚上的信号共同控制),工作方式由TMOD决定; 计数/定时由C/T位决定 工作方式0(13位) 永远不用 工作方式3(T0拆为双8位) 几乎无用 工作方式1(16位) 经常用到 工作方式2(8位自动重装) 经常用到,从初值按机器周期或外部脉冲递加,溢出位 TFx申请中断;中断允许由ETx位和EA位控制,,定时计数器的初始化,(一)初始化的步骤: 1)确定定时器/计数器的工作方式、操作模式、启动控制方式,并利用传送指令将其写入TMOD寄存器。 2)设置定时器/计数器的初值。直接将初值写入TH0、TL0或TH1、TL1中。 3)根据要求考虑是否采用中断方式,直接对IE位赋值。开放中断时,对应位置1;采用程序查询方式时,IE中对应位应清0进行中断屏蔽。 4)启动定时器/计数器工作。使用SETB TRi指令。若第一步设置为软启动,即GATE设置为0时,以上指令执行后,定时器/计数器即可开始工作。若GATE设置为l时,还必须由外部中断引脚共同控制,只有当引脚电平为高时,以上指令执行后定时器/计数器方可启动工作。定时器/计数器一旦启动就按规定的方式定时或计数。,2计数初值的计算,当T0或T1工作于定时器或计数器方式时,不同的工作方式、不同的操作模式其计数初值均不相同。若设最大计数值(溢出值)为M(模),各操作模式下的M值为: 模式0: M=213=8192 模式1: M=216=65536 模式2: M=28=256 模式3: M=28=256定时器T0分成2个独立的8位计数器,所以TH0、TL0的M均为256。 MCS-51的两个定时器均为加1计数器,当加到溢出值时产生溢出,将TF位置l,可发出溢出中断,因此,计数器初值X的计算式为: X=M-计数值(通式) T0或T1工作于定时器与计数器方式时,x的确定方法有别。,1)计数器方式,当T0或T1工作于计数器方式时,计数脉冲由外部引入,它是对外部脉冲进行计数。因此计数值应根据实际要求来确定。计数初值可采用通式计算,即: X=M-计数值 【举例】:在方式1时,每接收100个外部事件,要求产生一个中断,确定计数初值。 X=M-计数值=65536-100=65436=FF9CH,THi=FFH TLi=9CH,定时器初值计算公式:,当T0或T1工作于定时器方式时,由于是对机器周期进行计数,故计数值应为定时时间对应的机器周期个数。为此,应首先将定时时间转换为所需要记录的机器周期个数(计数值)。其转换公式为: 机器周期个数(计数值)= Tc / Tp 式中 Tc定时时间;Tp机器周期, Tp=12/ fosc ;fosc为机器时钟(震荡器)的振荡频率。 故计数初值的计算公式为: X=M-计数值=M- Tc / Tp =M-(TC×fosc)12。,【举例】:请计算定时50ms所需要的定时初值。 fosc=12MHz 1,确定模式:选择模式1 ; 2,计算定时初值。 X=65536-50ms/1=65536-50000=15536=3CB0H 即 THi=3CH;TLi=B0H,定时器方式1应用举例(例4-2),例1:用T1产生一个50Hz的对称方波,由P1.l输出,采用用程序查询方式,fosc=12MHz。 【解】:首先确定工作方式、工作模式和定时初值。 1,选定时方式(C/T=0); 2,模式1(M2 M1=01) , 3,方波周期T=l/50=O.02s=20ms,用T1定时10ms,计数初值为:X1=216-10×10-3×12×10612=65536-10000=55536=D8F0H; 既TH1=D8H,TL1=F0H。,TMOD 0001 0000,源程序如下:,ORG 0000h LJMP T1BUS ORG 0030h T1BUS: MOV TMOD,#10H ;T1模式1,定时 SETB TRl ;启动T1 LOOP:MOV TH1,#0D8H ;T1计数初值 MOV TL1,#0F0H LOOP1: JNB TF1,LOOP1 ;T1没有溢出等待 CLR TF1 ;产生溢出清标志位 CPL P1.1 ;P1.l取反输出 SJMP LOOP ;循环,利用中断方式编程,ORG 0000h LJMP T1MIN ORG 001Bh LJMP LOOP ORG 0030h T1MIN: MOV TMOD,#10H ;T1模式1,定时 MOV TH1,#0D8H ;T1计数初值 MOV TL1,#0F0H SETB EA ;CPU、T1开中断 SETB ET1 SETB TRl ;启动T1 T1MIN2: NOP LJMP T1MIN2 ORG 0100h LOOP:MOV TH1,#0D8H ;T1计数初值 MOV TL1,#0F0H CPL P1.1 ;P1.l取反输出 RETI,定时器门控位GATE的应用(例4-3),在通常,在TMOD中GATE=0时,只要TR=1便启动定时器开始计数。 如果GATE=1时, TR=1电路是否计数取决于/INT0: /INT0=1 时开始计数;/INT0=0,电路不计数。 利用这一特点,可以实现测量外部脉冲的宽度。,利用T0门控位测引脚上出现的正脉冲宽度,将所测得的高8位值存入片内7lH,低8位值存入片内70H单元中。已知fosc=12MHz。,解题步骤: 将外部脉冲接到P3.2(/INT0)上,使用T0且C/T=0; 计数器TH0、TL0原始初值为00H,且设为模式1(16位),GATE设为1 ; 在/INT0=0时启动T0计数器(TR0=1); 当/INT0=1时,定时器T0开始计数; 当/INT0=0时计数停止,此时TH0、TL0中的计数值就是与脉冲宽度相对应得数据。,测试程序如下(仍用查询方式),ORG 0000H ljmp T0MIN ORG 0030h T0MIN: MOV TMOD,#09H ;T0定时,模式1,GATE=l MOV TL0, #00H ;T0从0000H开始计数 MOV TH0,#00H MOV R0, #70H LOOP: JB P3.2,LOOP ;等待P3.2变低 CLR EA CLR ET1 SETB TR0 ;P3.2变低,准备启动T0 LOOP1: JNB P3.2,LOOP1 ;等待P3.2变高,启动计数 LOOP2: JB P3.2,LOOP2 ;等待P3.2再次变低 CLR TR0 ;停止计数 MOV R0,TL0 ;存入计数值 INC R0 MOV R0,TH0 : :,这种方案的最大被测脉冲宽度为65535s (fosc=12MHz),由于靠软件启动和停止计数器,测量的数值有一定的误差,其最大误差与采用的指令有关。上述程序被测的脉冲宽度t的计算式为: t=12×Nfosc=N s 式中 N为定时器中的计数值,等于7lH 70H单元中的数值。,试编写由Pl.0输出一个周期为2分钟的方波信号的程序。已知fosc=12MHz。,解:此例要求P1.0输出的方波信号的周期较长,用一个定时器无法实现。解决的办法可采用定时器加软件计数的方法 方法:将T1设置为定时器方式,定时时间为10ms(即10ms中断一次由CPU自动调用一次中断服务程序),工作于模式1;再利用T1的中断服务程序作为软件计数器;共同实现一分钟的定时。 整个程序由两部分组成,即由主程序和T1的中断服务程序。其中主程序包括初始化程序和Pl.0输出操作程序,中断服务程序包括毫秒(ms)、秒(s)、分(min)的定时等。 编写T1的中断服务程序时,应首先将T1初始化,并安排好中断服务程序中所用到的内部RAM中地址单元。 T1计数初值:X=216-12×10×100012=55536=D8FOH。 中断服务程序所用到的地址单元安排如下: 40H单元作ms的单元,计数值为1s10ms=100次; 4lH单元作s的计数单元,计数值为1min1s=60次; 29H单元的D7位(位地址为4FH)作1分计时到的标志位,即标志用4FH,具体程序如下,主程序: ORG 0000H AJMP 0030H ORG 001BH AJMP 1100H ORG 0030H MOV TMOD,#10H ;T1定时,模式1 MOV TH1,#0D8H ;T1计数初值 MOV TL1,#0F0H SETB EA ;CPU、T1开中断 SETB ET1 SETB TR1 ;启动T1 MOV 40H,#100 ;毫秒计数初值 MOV 41H,#60 ;秒计数初值 CLR 4FH TT:JNB 4FH,TT ;等待1分钟到 CLR 4FH ;清分标志值 CPL Pl.0 ;输出变反 AJMP TT ;反复循环,T1中断服务程序:(由001BH转来),ORG 1100H PUSH PSW MOV TH1,#0D8H ;TI重赋初值 MOV TL1,#0F0H DJNZ 40H,TT1 ;1秒到否? MOV 40H,#100 ;1秒到,重赋秒的计数值 DJNZ 41H,TT1 ;1分到否? MOV 4lH,#60 ;1分到了,重赋1分钟的计数值 SETB 4FH ;置1分到标志位,告诉主程序。 TTl:POP PSW RETI ;中断返回,串行口与串行通信,串行通讯应用示意图,TXD RXD,RXD TXD,TXD RXD,RXD TXD,RS-232 或485,RS-232 或485,TXD RXD,RS-232,PC机 COM1,COM2,单片机甲、乙之间近距离通讯,单片机甲乙两地之间远距离通讯,单片机与PC机之间的数据通讯,串行通信的基本特征是数据逐位顺序进行传送 串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。 常见的有: 通用异步收发器(UART)本课程介绍的串口 通用串行总线(USB) I2C总线 CAN总线 SPI总线 RS-485,RS-232C,RS422A标准等等,串行通信,全双工串行接口(UART),数据通信的几个术语: 并行:数据各位同时进行传送 串行:数据逐位顺序进行传送,全双工:(串行通信)收/发可同时进行 半双工:(串行通信)收/发不可同时进行,异步串行通信:以字符为单位进行传送 同步串行通信:以数据块为单位进行传送 波特率(bps.):单位时间传送的位数,51单片机的串行接口,SBUF(发),SBUF(收),发送控制器 TI,接收控制器 RI,移位寄存器,波特率发生器T1,1,A累加器,(门),RxD,TxD,去申请中断,引脚,引脚,CPU内部,串行口的结构,两个同名的接收/发送缓冲寄存器SBUF 指令 MOV SBUF,A 启动一次数据发送,可向SBUF 再发送下一个数 指令 MOV A,SBUF 完成一次数据接收,SBUF可再 接收下一个数,接收/发送数据,无论是否采用中断方式 工作,每接收/发送一个数据都必须用指 令对 RI/TI 清0,以备下一次收/发。,串行口相关的SFR(SCON,PCON),SM0 SM1 SM2 REN TB8 RB8 TI R1,SCON, SM0,SM1:串行口4种工作方式的选择位。 0 0 方式0:8位移位寄存器I/O,波特率固定为 fosc/12 0 1 方式1:8位UART(1+8+1位), 波特率可变,按公式计算 1 0 方式2:9位UART(1+8+1+1位), 波特率固定=fosc x1/32或1/64 1 1 方式3:9位UART(1+8+1+1位), 波特率可变,按公式计算, SM2:串行口多机通信控制位 (作为方式2、方式3的附加控制位),串行口控制寄存器SCON(98H), RI,TI:串行口收/发数据申请中断标志位 1 申请中断; 0 不申请中断, TB8:方式2、3中,是要发送的第9位数据。 多机通信中,TB8=0 表示发送的是数据; TB8=1 表示发送的是地址。(奇偶校验), RB8:在方式2、3中,是收到的第9位数据。 在多机通信中,用作区别地址帧/数据帧的 标志。(奇偶校验),SM0 SM1 SM2 REN TB8 RB8 TI RI, REN:串行口接收允许控制位 = 1 表示允许接收; = 0 禁止接收。,SCON,SMOD GF1 GF0 PD 1DL,电源控制寄存器 PCON(97H) P.123 特殊功能寄存器PCON不能按位寻址, SMOD:在串行口工作方式 1、2、3 中, 是波特率加倍位 =1 时,波特率加倍 =0 时,波特率不加倍。 (在PCON中只有这一个位与串口有关), GF1,GF0:用户可自行定义使用的通用标志位,PCON, PD:掉电方式控制位 =0:常规工作方式。 =1:进入掉电方式: 振荡器停振 片内RAM和SRF的值保持不变 P0P3口维持原状。 程序停止 只有复位能使之退出掉电方式。,SMOD GF1 GF0 PD IDL,PCON, IDL:待机方式(空闲方式)控制位 =0:常规工作方式。 =1:进入待机方式: 振荡器继续振荡 中断、定时器、串口功能继续有效 片内RAM和SRF保持不变 CPU状态保持、P0P3口维持原状 程序停顿。 中断和复位能退出待机,继续后面的程序。,SMOD GF1 GF0 PD 1DL,PCON, PD:掉电控制位 =0:常规方式。 =1:掉电方式: 振荡器停振 片内RAM和SRF不变 P0P3口维持原状 程序停止 只有复位能退出掉电, IDL:待机控制位 =0:常规方式。 =1:待机方式: 振荡器继续振荡 中断,定时器,串口有效 片内RAM和SRF不变 CPU状态,P0P3维持原状 程序停顿。 中断和复位能退出待机,继续后面的程序。,SMOD GF1 GF0 PD 1DL,PCON,串行口工作方式 0,工作方式0:8位移位寄存器I/O方式,发送:SBUF中的串行数据由RxD逐位移出; TxD输出移位时钟,频率=fosc1/12; 每送出8位数据 TI就自动置1; 需要用软件清零 TI。,接收:串行数据由RxD逐位移入SBUF中; TxD输出移位时钟,频率=fosc1/12; 每接收 8位数据RI就自动置1; 需要用软件清零 RI。,经常配合“串入并出”“并入串出”移位 寄存器一起使用扩展接口(第五章)。,方式0工作时,多用查询方式编程: 发送:MOV SBUF,A 接收:JNB RI,$ JNB TI,$ CLR RI CLR TI MOV A, SBUF,工作方式0:8位移位寄存器I/O方式(续),复位时,SCON 已经被清零,缺省值: 方式0。,接收前,务必先置位 REN=1 允许接收数据。,串行口方式0的扩展应用经常用到,串行口常用工作方式0扩展出并行I/O口, 工作方式1、2、3则常用于串行通信,AB,CLK,h g f e d c b a,CLR,AB,CLK,CLR,AB,CLK,CLR,+5V,74LS164,74LS164,74LS164,74LS164是串入并出芯片;74LS165是并入串出芯片,h g f e d c b a,h g f e d c b a,+5V,共阳LED 数码管,VCC,TxD,RxD,51单片机,共阳极,h g f e d c b a,a,b,c,d,g,e,f,h,共阳LED数码管 公共端(字位) 接高电平, 笔划(字段) 置为低电平 就被点

    注意事项

    本文(中断定时与串口.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开