- 1、本文档共111页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
04 51中断定时器计数器串口[第4章]
方式1是16位定时器/计数器 计数器的长度为16位,因此送入初值比较方便 定时时间 t=(216-X)*12/fosc=(216-X)*机器周期 X=216-t*fosc/12 计数初值X=216-计数值 图4-20 定时器/计数器T0在方式1下的电路逻辑结构 2.工作方式1 外部中断 控制/映射 TCON 选通控制 TMOD 方式2是能自动重装计数初值的8位计数器 低8位作为计数器用 高8位用于保存计数初值 定时方式计数初值X=28-t*fosc/12 计数方式计数初值X=28-计数值 图4-21 定时器/计数器T0在方式2下的电路逻辑结构 3.工作方式2 T0/T1适用 外部中断 控制/映射 TCON 选通控制 TMOD 只有T0可以工作在方式3; TL0仍然可用作定时器或计数器,用原来T0的GATE0、TR0、TF0、T0、INT0; TH0只作内部定时器使用,占用T1的TR1和TF1,占用T1的中断源 把T1设置为方式3,则停止工作 T1可以作为串行口的波特率发生器,确定串行通信的速率 此时T1可工作在方式0-2 由于在方式2时,T1可以自动重装初值,可不用TF1,也可以在TR1初次有效启动后,脱离TR1,自动运行;常将其作为波特率发生器 需要结束的时侯只需要设置T1的工作方式为3,即可使之停止工作 图4-22 定时器/计数器T0在方式3下的电路逻辑结构 4.工作方式3 只作为定时器 T1的中断源 外部中断 控制/映射 TCON 选通控制 TMOD 定时器时 输入脉冲的周期为始终振荡频率的1/12 采用12MHz频率的晶体时,计数频率为1MHz 输入脉冲的周期为1us(12/fosc=12/12*10-6=1us) 选择高频率的晶振时,可提高定时精度,但8051最高允许40MHz 计数器时 计数脉冲来自外部输入引脚T0或T1 负跳变时,计数器增1 每个机器周期的S5P2期间对外部输入采样 确认一次负跳变,要花费2个机器周期 外部输入的脉冲信号频率不得超过振荡频率的1/24 外部输入信号的单个电平状态至少应保持一个机器周期,以便计数器能够采样 4.4.3 定时器/计数器对输入信号的要求 运行中读定时器/计数器 虽然可以随时读写TLi和THi ,但是读TLi和THi时,要注意 假设定时器/计数器运行时读取会遇到THi或TLi溢出的情况,从而导致最初读取的值不正确 因此,应该 先读取THi,再读取TLi,然后再重新读THi 2次读取的THi一致时,所读取的数据才认为正确,否则必须重新读取 REDO: MOV AH,TH0 MOV AL,TL0 CJNE AH,AL,REDO MOV R1,A RET 飞读 “飞读”的意思就是“在单片机运行过程中,不断查询,不断判断” 1.定时器/计数器的初始化 (1)设置工作方式,即设置TMOD中的GATE、 、M1和M0 (2)计算加1计数器的计数初值Cinit,并将计数初值Cinit送入THx、TLx中 (3)启动计数器工作,即将TRx置1(启动) (4)若采用中断方式,则使T0、T1的中断屏蔽位ET0和ET1置1,CPU开中断 4.4.4 定时器/计数器T0和T1的编程与应用 触发方式 中断表现 中断总控 非门 外部中断 控制/映射 TCON 选通控制 TMOD 图4-24 定时器/计数器初始化流程图 (1)计数方式 计数初值:X=2n-计数次数 2.计算计数初值Cinit (2)定时方式 定时时间: t为定时所用的时间、X为初始值、N为计数器位数、fosc 系统时钟频率 (2N-X)* 12/fosc=t ;计数次数 * 机器周期时间 = 总时间 X=2N-fosc/12*t t=(213-X)*12/fosc=(213-X)*机器周期 X=213-t*fosc/12 t=(216-X)*12/fosc=(216-X)*机器周期 X=216-t*fosc/12 t=(28-X)*12/fosc=(28-X)*机器周期 X=28-t*fosc/12 t=(28-X)*12/fosc=(28-X)*机器周期 X=28-t*fosc/12 3.定时器/计数器中断的应用实例 例4.3 T0工作于计数方式,计数值n=1,允许中断,分别使用工作方式1、工作方式0、工作方式2编程进行初始化 分析:计数方式的C/T=1,默认GATE=0 方式1 M1M0=01,T1屏蔽,因此TMOD=0000 0101=05H,是16位计数器 计数器初值为216-1=FFFFH MOV TMOD,#05H MOV TH0,#0FFH MOV TL0,#0FFH MOV IE, ;ET0=1 EA=1 SETB TR0
文档评论(0)