单片机原理及应用清华版chap.ppt

  1. 1、本文档共188页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4. 内功能部件 4.1 定时器/计数器 4.2 可编程计数器阵列 4.3 UART通信接口 4.4 SMBus 4.5 SPI总线 4.1 定时器/计数器 定时和计数功能最终都是通过计数实现的,若计数的事件源是周期固定的脉冲,则可以实现定时功能,否则只能实现计数功能。因此可以将定时和计数功能由一个部件实现。 实现定时和计数的方法一般有软件、专用硬件电路和可编程定时器/计数器三种方法。 采用软件只能定时,且占用CPU时间,降低了CPU的使用效率。 专用硬件电路可实现精确的定时和计数,但参数调节不便。 可编程定时器/计数器,不占用CPU时间,能与CPU并行工作,实现精确的定时和计数,又可以通过编程设置其工作方式和其它参数,因此使用方便。 4.1 定时器/计数器 4.1.1 定时器的一般结构和工作原理 最大定时时间 TMAX=2n×T计数 式中n由工作方式决定,T计数为定时器/计数器的计数脉冲周期时间,由C8051F的主脉冲或主脉冲经12分频提供,是否需要12分频取决于对时钟控制寄存器CKCON的设定(提供12分频选项是为了与标准8051兼容)。 T0~T4均为加1计数器 时钟控制寄存器CKCON 位7:未用。读=0b,写=忽略。 位6-3:T4M-T0M:T4到T0的时钟选择(不包含T3,T3的时钟选择由T3控制寄存器TMR3CN的第0位T3XCLK决定)。 0:定时器按系统时钟的12分频计数 1:定时器按系统时钟频率计数 位2-0:保留。读=000b,写入值必须是000b。 1.定时、计数方式 定时方式:每一个计数周期(T计数)计数器加1,直至计满溢出(从全1到全0)产生中断请求。对于一个N位的加1计数器,若T计数是已知的,则从初值a开始加1计数至溢出所占用的时间为: 4.1.2 定时器/计数器T0和T1 对定时器/计数器T0和T1的访问和控制是通过操作SFR实现的。 T0和T1都是16位的加1计数器,访问时以两个字节的形式出现:TL0+TH0、TL1+TH1 TCON用于允许/禁止定时器0和定时器1并指示它们的工作状态。 T0和T1都有四种工作方式,可以TMOD中的方式选择位M1-M0进行选择。 1、方式寄存器TMOD 2、控制寄存器TCON 3.T0和T1的工作方式和计数器结构 (1)工作方式0 (1)工作方式0 若T0工作于方式0的定时器模式,计数初值为a,则T0从初值a加1计数至溢出所需的时间为: (2)工作方式1 和方式0的差别仅仅在于计数器的位数不同,方式1为16位的定时器/计数器。 T0工作于方式1时,由TH0作为高8位,TL0作为低8位,构成一个16位计数器。 若T0工作于方式1定时,计数初值为a,fOSC=12MHz,则T0从计数初值a加1计数到溢出的定时时间为: T=(216-a)μs 或 T=(216-a)/12μs。 (3)工作方式2 (3)工作方式2 适用于需要重复定时或计数的场合。 定时精度比较高,但定时时间较短。 定时时间可用下式计算: (4)工作方式3 只适用于T0,若T1设置为方式3,则停止计数。 4.T0和T1的初始化 初始化步骤 初始化TMOD 根据需要初始化CKCON 装入初值 中断设置(IE、IP) 启动定时/计数器(TCON) 计数器方式初值的计算 TC=M-C M为计数器的模,与工作方式有关 ,C为需要的计数值 定时器方式初值的计算 T=(M-TC)×T计数 T计数=TCLK或12TCLK TC=M-T/T计数 4.T0和T1的初始化 最大定时时间(fOSC=12MHz、T0M=0 ): 方式0: TMAX = 213×1μs = 8.192ms 方式1: TMAX = 216×1μs = 65.536ms 方式2、3: TMAX = 28×1μs = 0.256ms 5.T0和T1的应用举例 例4.1 若fOSC=12MHz,用系统时钟的十二分频作为计数源,请计算定时2ms所需的初值,并给出初始化程序。 解:∵ fOSC= 12MHz,用系统时钟的十二分频作为计数源时,方式2、3的最大定时时间只有0.256ms,因此要想获得2ms的定时时间,必须用方式0或方式1。 方式0 TC=213-2ms/1us=6192=1830H 即:TH0=0C1H;TL0=10H(高三位为0) 方式1 TC=216-2ms/1us=63536=F830H 即:TH0=0F8H;TL0=30H 5.T0和T1的应用举例 初始化程序 void T0_mode1_2ms_init()

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档