200 likes | 352 Views
任务 13 定时器控制单灯秒闪. 4 学时. 1. 掌握定时计数器编程控制方法. 2. 掌握定时计数器的查询方式编程要点. 3. 掌握定时计数器的中断方式编程要点. 一.任务目标. 二.任务要求. 通过 P1.x 口线控制外接的 LED 发光二极管亮 1 秒、灭 1 秒,循环不止。. 仿真演示. 三. 相关知识. 1 . 16 位加法计数器
E N D
任务13 定时器控制单灯秒闪 4学时
1.掌握定时计数器编程控制方法 2.掌握定时计数器的查询方式编程要点 3.掌握定时计数器的中断方式编程要点 一.任务目标
二.任务要求 通过P1.x口线控制外接的LED发光二极管亮1秒、灭1秒,循环不止。
三. 相关知识 1.16位加法计数器 • 定时器/计数器的核心是16位加法计数器,用特殊功能寄存器TH0、TL0及TH1、TL1表示。TH0、TL0是定时器/计数器0加法计数器的高8位和低8位,TH1、TL1是定时器/计数器1加法计数器的高8位和低8位。 • 作计数器用时,加法计数器对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数。 • 作定时器用时,加法计数器对内部机器周期脉冲T计数。
2.定时器/计数器方式控制寄存器TMOD • 定时器/计数器T0、T1各有四种工作方式,可通过指令对TMOD设置来选择。TMOD的低4位用于定时器/计数器0,高4位用于定时器/计数器1。
定时器/计数器方式控制寄存器TMOD • D7位 GATE——T1的门控位 • D6位 C/T——T1的功能选择位 • D5D4位 M1M0——T1的工作方式选择位 • D3位 GATE——T0的门控位 • D2位 C/T——T0的功能选择位。 • D1D0位 M1M0——T0的工作方式选择位
3.定时器/计数器控制寄存器TCON • TCON的作用是控制定时/计数器的启动与停止,标志定时/计数器的计满溢出和中断情况。
定时器/计数器控制寄存器TCON • TCON.7位 TF1——定时器T1的溢出标志位 • TCON.6位 TR1——定时器T1运行控制位 • TCON.5位 TF0——定时器T0的溢出标志位 • TCON.4位 TR0——定时器T0运行控制位 • TCON.3位 IE1——外部中断1(INT1)的请求标志位 • TCON.2位 IT1——外部中断1(INT1)触发方式选择位 • TCON.1位 IE0——外部中断0(INT0)的请求标志位 • TCON.0位 IT0——外部中断0(INT0)触发方式选择位
方式字的应用举例 • 设定时器T0为定时工作方式,要求软件启动按照方式1工作,定时器T1为计数方式,要求软件启动按照方式0工作。根据TMOD寄存器各位的作用,可知命令字为: • 由于TMOD不能位寻址,因此指令格式为: • MOV TMOD,#41H
4.定时器/计数器方式0(M1M0=00) • 在方式0工作条件下,T0/T1是13位计数器,如图4.1.1所示 • 计数值由下式确定: • N=213-x=8192-x • 式中N为计数值,x是THx、TLx的初值。x=8191时为最小计数值1,x=0时为最大计数值8192,即计数范围为1—8192。 • 注意:计数器溢出后,必须用指令重新对THx、TLx设置初值,否则下一次THx、TLx将从0开始计数。 • 采用方式0时计算和装入计数器初值时比较麻烦而且容易出错,因此一般情况下尽量避免采用此方法。
5.定时器/计数器方式1(M1M0=01) • 当M1M0=01时,定时器/计数器设定为工作方式1,构成16位定时器/计数器。此时THx、TLx都是8位加法计数器。其它与工作方式0相同。 • 在方式1时,计数器的计数值由下式确定: • N=216-x=65536-x • 计数范围为1—65536。定时器的定时时间由下式确定: • t=N×T=(65536-x)T T为机器周期 • 如果fosc=12MHz,则T=1μs,定时范围为1—65536 μs。
四、任务分析 1、硬件电路
2、软件分析 • 计算计数器初值 • 溢出一次的定时时间为100000us(即t=0.1s),连续溢出10次,总的定时时间就是1s。此时的计数器初值由: • 216-x=t/T • 得:x=216-t/T=65536-100000/2=15536=3CB0H • 定时器初始化 • 初始化涉及到两个方面: • 一是设置TMOD,本例中TMOD=00000001B=01H; • 二是装入计数初值,本例中TH0=3CH,TL0=B0H。 • 完整程序设计(具体内容省略)
开始 定时器初始化,R1=10 启动定时器 溢出? No Yes 清除溢出标志,重装计数初值 No R1-1=0? Yes R1=10,P1.x取反 编写程序流程图 • 查询方式的程序流程图
主程序: 开始 定时器初始化,中断初始化 R1=10 启动定时器,开中断 等待中断 子程序: 进入中断子程序 重装计数初值 No R1-1=0? Yes R1=10,P1.x取反 中断返回 编写程序流程图 • 中断方式的程序流程图
五.任务实施 • 1、在PROTEUS软件中按图4.1.2搭接好电路; • 2、在伟福软件中编辑程序,进行编译,得到.HEX格式文件; • 3、将所得的HEX格式文件在PROTEUS中指定到MCU芯片中; • 4、运行仿真,观察仿真结果; • 5、PROTEUS中结果正常后,用实际硬件搭接并调试电路,通过编程器将.HEX格式文件下载到AT89C51中,通电验证实验结果。
六、任务总结 • 任务回顾 • 课后作业 • 思考题
Thank you! 标志