单片微机5章-2.ppt

  1. 1、本文档共102页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片微机5章-2

微型计算机技术与应用 70课堂学时+18实验学时 TH2和TL2分别是定时/计数器T2的高8位和低8位,TH2和TL2构成了16位计数器; 而RCAP2H和RCAP2L构成了一个16位寄存器,在自动重装初值方式下,RCAP2H和RCAP2L分别存放TH2和TL2的重装初值; 在捕捉方式下,当P1.1引脚出现负跳变时,T2计数器高8位TH2和低8位TL2分别被捕捉到RCAP2H和RCAP2L寄存器中。 一、T2的特殊功能寄存器 1. 定时/计数器T2的控制 在标准MCS-52系列中,定时/计数器T2的工作方式及用途由T2CON寄存器的内容决定,该寄存器各位含义如下图所示。 图 T2CON寄存器各位含义 1)CP/RL2*:捕捉/自动重装方式选择位。 0:T2工作于16位自动重装初值方式; 1:T2工作于16位捕捉方式。 2)C/T2*:定时/计数方式选择位。 0: T2处于定时方式; 1: T2处于计数方式。 3)TR2:定时/计数器T2计数脉冲通/断控制位。 0: T2停止计数; 1: T2计数。 4) EXEN2:定时器T2 外部触发允许/禁止位。 0:外部触发禁止; 1:外部触发允许。 5) TCLK:串行口(方式1、方式3)发送波特率选择位。 0:使用定时/计数器T1溢出信号的16或32分频作串行口方式1、方式3的发送波特率; 1:将使用定时/计数器T2溢出信号的16分频作串行口方式1、方式3的发送波特率。 6) RCLK(即b5)——串行口(方式1、方式3)接收波特率选择位。 0:使用定时/计数器T1溢出信号的16或32分频作串行口方式1、方式3接收波特率; 1:将使用定时/计数器T2溢出信号的16分频作串行口方式1、方式3接收波特率。 7) EXF2:T2外部触发标志位。 当EXEN2位为1,T2EX(即P1.1)引脚出现负跳变时,EXF2标志位置1。 8) TF2:T2溢出中断标志位。   表5-5 定时/计数器T2的工作方式 RCLK+TCLK CP/RL2 TR2 工 作 方 式 0 0 1 16位常数自动再装入方式 0 1 1 16位捕捉方式 1 X 1 串行口波特率发生器方式 X X 0 停止计数 二、 定时/计数器T2的工作方式 1.常数自动再装入方式 当TCLK、RCLK、CP/RL2*均为0时,定时/计数器T2是一个下降沿触发自动重装初值的16位定时/计数器。 若计数初值为a,则定时时间等于: 图5-21 T2 16位常数自动再装入方式结构 定时方式:计数脉冲是系统时钟信号频率f的n分频,即每隔n/f秒,TL0加1。当TL0溢出时,TH0自动加1;当TH0也溢出时,定时器T0中断标志TF0位置1。 定时时间的计算:如果定时器初值为a,则方式1的定时时间t为: 例5.9 已知晶振频率为12MHz,T0工作于方式1,产生50ms定时中断,TF0为高级中断源。试编写主函数、初始化函数和中断函数,使P1.0产生周期为1s的方波。 TL0初值为0B0H,TH0初值为3CH。 分析: 定时器T0 50ms中断一次,每10次中断500ms,P1.0取反,输出周期为1s的方波 编程如下: #include reg52.h #define uchar unsigned char #define uint unsigned int sbit P1_0=P1^0; uchar T0CNT0; //中断计数变量 void init_t0_1() //T0初始化函数 { TH0=0x3c; //装入初值 TL0=0xb0; TMOD=1; //设置T0工作模式,定时、方式1 IP=2; //设置优先级寄存高级中断 TR0=1; //启动T0 IE=0x82; //设置中断容许寄存 T0CNT0=0xa; //T0CNT0 10次 } void main() //主函数 { init_t0_1(); //调T0初始化函数 for(;;); //空转 } void timer0(void) interrupt 1 { //T0中断函数 TL0|=0xb0; //T0操作,送初值 TH0=0x3c

文档评论(0)

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

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

1亿VIP精品文档

相关文档