




免费预览已结束,剩余33页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机的51子系列有两个16位的定时 计数器 定时器0和定时器1 均可用作定时器或事件计数器 为单片机系统提供计数和定时功能 以实现控制系统中所要求的定时或延时控制 外部事件计数 52子系列单片机 8032 8052 除了有上述2个定时 计数器外 还有一个定时计数器2 后者的功能比前两者强 5 1定时 计数器的结构及工作原理 定时 计数器的核心部件是一个加1计数器 其脉冲有两个来源 外部脉冲源 系统的时钟振荡器 计数器对两个脉冲源之一进行输入计数 每输入一个脉冲 计数值加1 当计数到计数值为全1时 再输入一个脉冲就使计数值回零 同时从最高位溢出一个脉冲使特殊功能寄存器TCON 定时器控制寄存器 的某一位TFx置1 作为计数器的溢出中断标志 定时 计数器的结构框图 若工作于定时状态 则表示定时时间到 若工作于计数状态 则表示计数回零 所以 加1计数器的基本功能是对输入脉冲进行计数 用作定时器时 在每个机器周期计数器加1 所以可以把它看作累加机器周期 1个机器周期包括12个振荡周期 则计数频率为振荡频率的十二分之一 工作于何种方式 取决于脉冲源 当脉冲源为时钟振荡器 等间隔脉冲序列 时 由于计数脉冲为一时间基准 脉冲数乘以脉冲间隔就是定时时间 表现为定时功能 当脉冲源为间隔不等的外部脉冲发生器时 就是外部事件的计数器 表现为计数功能 用作计数器时 计数脉冲来自外部输入引脚T0或T1 当输入信号发生一个由1到0的跳变时 计数器加1 在每个机器周期的S5P2期间采样外部输入信号 当一个周期的采样值为高电平 下一个周期的采样值为低电平时 计数器加1 新的计数值在紧接着检测到一个跳变后的下一个周期的S3P1期间在寄存器中出现 即在第一个机器周期的S5P2检测到高电平 在第二个机器周期的S5P2检测到低电平 在第三个机器周期的S3P1改变计数值 由于识别一个从1到0的跳变要用两个机器周期 所以最快的计数频率是振荡器频率的二十四分之一 对外部输入信号的占空比没有限制 为确保某一给定的电平在变化之前至少被采样一次 该信号至少保持一个完整的机器周期 图中的两个模拟开关 前者决定定时 计数器工作状态 计数还是定时 后者受控制信号的控制 决定脉冲源是否加到计数器输入端 即决定了加1计数器的开启与运行 对输入信号的基本要求 在实际线路中 这两个模拟开关由TMOD与TCON的相应位控制 用户可通过对TMOD和TCON的各位进行写入或更改操作 从而选择不同的工作状态或启动工作 并可设置相应的控制条件 即定时 计数器是可编程的 16位的加1计数器由两个8位的特殊功能寄存器THx和TLx组成 x 0或1 由特殊功能寄存器TMOD控制 可被程控为不同的组合状态 从而形成定时 计数器的四种工作方式 TMOD TCON与T0 T1结构框图 5 2定时 计数器方式和控制寄存器 由结构框图可以看到 特殊功能寄存器TMOD和TCON用来确定定时 计数器的工作方式 并控制其功能 每当执行一条改变TMOD和TCON内容的指令时 所改变的值在下一条指令的第一个机器周期的S1P1期间进入特殊功能寄存器 并立即产生效果 TMOD控制定时 计数器的工作方式 TCON控制定时器T0 T1的启动和停止计数 并包含了定时器的状态 5 2 1定时器工作方式控制寄存器TMOD的格式 M1M0 这两位指定定时 计数器的工作方式 可形成四种编码 对应四种工作方式 5 2 2定时器控制寄存器TCON的格式 TF1 定时器1溢出标志位 当定时 计数器1溢出时 由内部硬件置位 申请中断 当单片机转向中断服务程序后 由内部硬件自动清除 TR1 定时器1的运行控制位 由软件置位 清除来控制定时 计数器1的开启 关闭 TF0 定时器0溢出标志位 当定时 计数器0溢出时 由内部硬件置位 申请中断 当单片机进入中断服务程序后 由内部硬件自动清除 TR0 定时器0的运行控制位 由软件置位 清除来控制定时 计数器0的开启 关闭 由于定时 计数器T0 T1是可编程的 所有在任何一个定时 计数器开始工作之前 必须对其写入相应的控制字 5 3定时 计数器的工作方式 寄存器TMOD中的M1 M0两位的四种不同取值 导致了THx TLx的四种不同组合 从而形成定时 计数器的四种不同工作方式 其中前三种工作方式对两者都是一样的 方式3对两者是不同的 可以说 只有定时 计数器0有方式3 5 3 1方式0 当M1M0 00时 定时 计数器被选择为工作方式0 在此工作方式下 定时 计数器构成一个13位寄存器 由THx的8位与TLx的低5位组成 TLx的高3位未用 当单片机进入中断服务程序后 再由内部硬件自动清除该标志TFx 在一般情况下 GATE 0 定时 计数器运行控制仅由TRx位的状态确定 TRx 1启动 TRx 0停止 只有在启动计数要由外部输入INTx控制时 才使GATE 1 由框图可知 GATE 1 TRx 1时 只有INTx引脚输入高电平 Tx才被允许计数 利用GATE的这一功能 可以很方便的测量脉冲宽度 当TLx的低5位计数溢出时 则向THx进位 THx溢出时 则把其对应的定时 计数器的溢出标志位TFx置位 并以此作为定时 计数器溢出中断标志 5 3 2方式1 方式1与方式0的差别仅在于计数器的位数不同 方式1为16位的计数器 由THx作为高8位和TLx作为低8位构成 其余和方式0类似 5 3 3方式2 定时 计数器构成一个自动再装入功能的8位计数器 此时由TLx计数 而THx在此方式中作为一个数据缓冲器 当TLx计数溢出时 在置位溢出标志TFx的同时 还自动地将THx中的常数送到TLx 使TLx从刚刚装入的初值开始重新计数 再装入后 THx中的内容保持不变 5 3 4方式3 方式3可使MCS 51单片机增加一个附加的8位定时 计数器 此种方式只适应于定时 计数器0 定时 计数器1处于方式3时 相当于TR1 0 停止计数 定时 计数器0在方式3下 TL0和TH0被作为两个独立的计数器 一般来说 只有当系统需要增加一个额外的8位定时器时 才把定时 计数器0设置为方式3 当定时 计数器0工作于方式3时 由于TH0借用了定时 计数器1的运行控制位和溢出 中断 标志 此时定时 计数器1虽然可以设置为方式0 方式1和方式2 但是只能用在不需要中断控制的场合 例如 工作于自动重装载方式 方式2 作为串行通讯的波特率发生器使用 5 4定时 计数器的编程举例 定时 计数器的应用编程应注意 正确写入控制字 即初始化 时间常数的正确计算 定时计数器操作控制次序 确定工作方式 写入TMOD定时 计数器工作方式寄存器 计算定时 计数初值 装入THx及TLx 置位TRx以启动计数 置位ETx以允许定时 计数器x中断 若需要 不需要可略 置位EA以使CPU开放中断 即接收中断信号 由于定时 计数器以加1方式计数 假设计数值为x 则应装入定时 计数器的初值为 n为不同方式下计数器的位数 当工作于定时状态时 由于定时 计数器是计数机器周期的 而机器周期频率恒定 每个机器周期包括12个振荡周期 若晶振频率为6MHz 则 一个机器周期 计数个数为 其中 Tp为机器周期 则应装入的计数初值为 例5 1 要求定时为1mS 晶振频率为12MHz 解 因为 Tc x Tp 1mS 所以 对方式0 应装入的初值为 此时 THx 0E0H 11100XXX TLx 18H 对方式1 应装入的初值为 此时 THx 0FCH TLx 18H 例5 2 设定时 计数器T0为定时状态 工作于方式1 定时时间为2mS 每当2mS到申请中断 在中断服务程序中将A的内容左环移一次 送P1口显示 已知晶振频率为12MHz 解答 定时时间为2mS 即 Tc x Tp 2mS 所以 计数个数为 采用方式1 应装入的时间常数为 则 TH0 0F8H TL0 30H 编程如下 ORG0000HLJMPMAIN 转主程序 ORG000BH T0中断服务程序 MOVTL0 30HMOVTH0 0F8H 重新送2mS时间常数初值 RLA A 左环移一次MOVP1 A 送P1口显示RET MAIN MOVTMOD 01H 送控制方式字 MOVTL0 30H T0初始化MOVTH0 0F8H MOVA 01H 累加器A置初值 SETBTR0 启动T0计数 SETBET0 允许T0中断 SETBEA CPU开中断 SJMP 等待中断发生 无事可做 例5 3 设定时 计数器T0工作于方式3 TL0 TH0作为两个独立的8位定时 计数器 分别产生250 S和500 S的定时中断 使P1 1和P1 2产生500 S和1000 S的方波 设晶振频率为6MHz 解答 TL0计数个数 250 s 2 s 125 初值 28 125 131 83H TH0计数个数 500 s 2 s 250 初值 28 250 6 06H 编程如下 ORG0000HLJMPMAIN 转主程序 ORG000BH 定时器0中断服务子程序入口LJMPTINT0 ORG001BH 定时器1中断服务子程序入口LJMPTINT1 MAIN MOVTMOD 03H T0工作方式3 MOVTL0 83H TL0送时间常数MOVTH0 06H TH0送时间常数 SETBTR0 启动定时SETBTR1 等价于MOVTCON 50H SETBET0 允许中断SETBET1 等价于MOVIE 8AH SETBEA CPU开中断 SJMP 等待 TINT0 MOVTL0 83H 定时器0中断服务子程序CPLP1 1RETI TINT1 MOVTH0 06H 定时器1中断服务子程序CPLP1 2RETI 例5 4 设定时 计数器0工作于方式2 TL0为8位计数器 产生500 s定时中断 在中断服务程序中将 A 减1 然后送P1口显示 设晶振为6MHz 编程如下 ORG0000HAJMPMAIN 转主程序ORG000BHDECA T0中断服务子程序MOVP1 ARETIMAIN MOVTMOD 02H 初始化MOVTL0 06H 送500 S时间常数MOVTH0 06HSETBTR0 启动T0计数SETBET0 允许T0中断SETBEA CPU开中断SJMP 5 5运行中读定时 计数器值 在MCS 51中 随时可以读写计数寄存器的内容 但是读取时需要特别加以注意 由于不能在同一时刻读取THx和TLx的内容 如不注意 读取的计数器有可能出错 比如先读 TLx 后读 THx 由于定时器在不断运行 读 THx 前 若恰好产生TLx溢出向THx进位 则读得的 TLx 完全不对 同样先读 THx 再读 TLx 也可能出错 同样问题 解决错读问题的一种方法是 先读 THx 后读 TLx 再读 THx 若2次读得的 THx 没有发生变化 则可确定读得的内容是正确的 否则再重复上述读THx TLx过程 这样读得的 THx TLx 就是正确的 下面程序把读得的TH0 TL0放在R1 R0中 RDTIME MOVA TH0 读 TH0 MOVR0 TL0 读 TL0 CJNEA TH0 RDTIME 比较2次读得的 TH0 不同重读MOVR1 ARET 5 6定时 计数器2 只有52子系列单片机拥有定时 计数器2 定时 计数器2是一个具有16位自动重装载或捕获能力的定时 计数器 特殊功能寄存器T2CON是它的控制寄存器 定时 计数器2具有两种工作方式 定时 计数器方式和波特率发生器方式 5 6 1定时 计数器方式 用作定时器时 寄存器TH2和TL2对机器周期计数 用作计数器时 外部计数脉冲由T2 P1 0 输入 工作情况和时序关系与定时 计数器0和1的完全一样 对外部计数脉冲的要求也与定时 计数器0和1的完全一样 捕获或自动重装载发生在下述情况下 定时器2的寄存器TH2和TL2溢出时 当EXEN2 1且T2EX P1 1 端的信号有负跳变时 当EXEN2 1且T2EX P1 1 端的信号有负跳变时 根据CP RL2是1或0 发生捕获操作或自动重装载操作 同时标志EXF2置位 申请中断 如果定时 计数器2的中断是被允许的 不管发生TF2 1还是EXF2 1 CPU都会响应中断 中断的入口地址为002BH 响应中断后 应当用软件清除中断标志 以避免无休止地发生中断 TF2 EXF2都是直接可寻址位 可采用CLRTF2和CLREXF2指令实现撤消中断申请的功能 5 6 2波特率发生器方式 波特率发生器用于控制串行口的数据传输速率 在T2CON中的RCLK和TCLK两位用于选择定时 计数器1或2作为串行通讯的波特率发生器 RCLK和TCLK两位的值用来控制2个电子开关的位置 当这两位为0时 选用定时 计数器1作为波特率发生器 当这两位为1时 选用定时 计数器2作为波特率发生器 其中RCLK选择串行通讯接收波特率发生器 TCLK选择发送波特率发生器 当选用定时 计数器2作波特率发生器时 其溢出脉冲用作串行口的时钟 时钟频率可由内部时钟决定 也可由外部时钟决定 当定时 计数器2用作波特率发生器时 如果EXEN2置位 则T2EX端的信号发生负跳变时 EXF2将置位 但不会发生重装载或捕获操作 此时T2EX可以作为一个附加的外部中断源 在波特率工作方式下 TH2 TL2和RCAP2H RCAP2L的内容不能读或被修改 5 6 3定时 计数器2控制寄存器T2CON TF2 T2CON 7 定时器2溢出标志 当定时器2溢
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年卫生资格初级护师冲刺试题及答案
- 2024年江西社区《网格员》预测题及答案
- 2025年人力资源管理师二级理论实操真题含答案
- 2024年浙江省社区《网格员》模拟试题及答案
- 竞选班长的演讲稿五1-多篇
- 大单元语文教学中如何实施“启发式文本解读”
- 2024年医院感染预防与控制基础知识考试题及答案
- 幼儿专业毕业论文开题
- 老年人意外伤害赔偿协议书范文
- 西藏公务员考试《行测》真题模拟试题及答案解析
- GB/T 242-2007金属管扩口试验方法
- 政治理论水平任职资格考试题库
- Unit 2 Lets celebrate Developing ideas-Writing a letter to express 课件【知识精讲+拓展训练】高中英语外研版(2019)必修第二册
- 路基压实度汇总表
- 【食品生产加工技术】香肠的加工技术
- 图标设计与制作PPT完整全套教学课件
- 贫困户访谈记录
- 道路喷雾降尘方案
- 唐恬人世间的孤勇者与追光者
- 数学基础模块上册课件
- 智慧羊场建设方案 智慧养殖监管系统解决方案
评论
0/150
提交评论