版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理与应用技术教学课件,第四章 中断、定时与串口,本讲重点: 中断概念,响应条件,处理原则,中断服务; 定时器/计数器工作方式1,2的用法; 串行通讯的波特率, 4种工作方式.,单片机原理与应用技术教学课件,第二节 单片机的定时/计数器,单片机原理与应用技术教学课件,2个16位定时器/计数器 (52系列有3个16位Timer) 定时器:对片内机器时钟(周期方波)进行计数 计数器:对T0/T1引脚输入的负脉冲进行计数,与Timer工作有关的特殊功能寄存器: TCON 和 TMOD,单片机原理与应用技术教学课件,TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,定时器控制寄存器
2、TCON (88H) P.116,TF0/TF1: Timer0/1计数溢出标志位。 =1 计数溢出; =0 计数未满 TF0/TF1标志位可用于申请中断或供CPU查询。 在进入中断服务程序时会自动清零;但在 查询方式时必须软件清零。,TR0/TR1: Timer0/1运行控制位。 =1 启动计数; =0 停止计数,单片机原理与应用技术教学课件,定时器T0/T1 中断申请过程, 在已经开放T0/T1中断允许且已被启动的前提下: T0/T1加满溢出时 TF0/TF1标志位自动置“1” 检测到TCON中TF0/TF1变“1”后,将产生指令: LCALL 000BH/LCALL 001BH 执行中断
3、服务程序 TF0/TF1标志位会自动清“0”,以备下次中断申请。,定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数,单片机原理与应用技术教学课件,定时器方式寄存器TMOD (89H),GATE C / T M1 M0 GATE C / T M1 M0,T1,T0,M1,M0:工作方式定义位 ( 定义4 种方式 ):,C/T :计数器/定时器选择位 = 1 外部事件计数器。对Tx引脚的负脉冲计数; = 0 片内时钟定时器。对机器周期脉冲计数定时,0 0:13位 Timer用它无益,不要记它! 0 1:16位 Timer经常用到 1 0:可自动重装的 8位 Tim
4、er经常用到 1 1:T0 分为2个8位 Timer;T1 此时不工作 几乎无用,单片机原理与应用技术教学课件,GATE C / T M1 M0 GATE C / T M1 M0,T1,T0,GATE门控位: Timer可由软件与硬件两者控制 GATE = 0 普通用法 Timer的启/停由软件对TRx位写“1”/“0”控制,定时器方式寄存器TMOD(续),(89H), GATE = 1 门控用法 Timer的启/停由软件对TRx位写“1”/“0” 和在INTx引脚上出现的信号的高/低共同控制,单片机原理与应用技术教学课件,定时器结构与工作方式,工作方式1:16位的定时/计数器,单片机原理与应
5、用技术教学课件, THx/TLx赋初值:THx赋高8位,TLx赋低8位,工作方式1 的编程要点:, TMOD选方式: 写“M1,M0”=01 b 选方式1, 若不用门控位,直接用软件写TRx控制启/停 若使用门控位,先置位TRx,然后由INTx端 的高/低电平来控制其启/停, 若要允许中断,还须先置位ETx、EA等中断 允许控制位,并编写中断服务程序 若不用中断,可查询“计数溢出标志TFx” 的方式工作,但溢出标志TFx须软件清0,单片机原理与应用技术教学课件,定时器(方式1)应用程序举例:,分析:已知fosc = 6MHz 则: (机器周期)1Tm=12Tc=12/6MHz=2S 粗略地说:
6、Tmin 2S 16位定时器最大数值为:216=65536=0FFFFH+1 故选择方式 1 工作可以得到: Tmax = 655362 = 131072S131.072mS,例:若晶振频率为6MHz,计算单片机的最小与最大定时时间:,单片机原理与应用技术教学课件,分析:已知fosc = 6MHz 则: (机器周期)1Tm=12Tc=12/6MHz=2S 100mS2 S = 50000 16位定时器最大数值为: 216 = 65536 (=0FFFFH+1) 故选择方式1工作可以满足要求。,例:要求对T0产生100mS定时进行初始化。 (晶振=6MHz),定时器(方式1)应用程序举例:,计算
7、初值:6553650000=15536=3CB0H,单片机原理与应用技术教学课件,GATE C / T M1 M0 GATE C / T M1 M0,定时器方式 寄存器TMOD,由分析得知:T0选择方式1,初值=3CB0H,X X X X 0 0 0 1,初始化:MOV TMOD,#01H ;选 T0 方式 1 MOV TH0, #3CH ;赋初值高8位 MOV TL0, #0B0H ;赋初值低8位 SETB TR0 ;启动 T0定时 若需要定时器0产生中断还应当写如下语句: SETB ET0 ;开T0中断允许 SETB EA ;开总中断允许 以及相应的中断服务程序。,单片机原理与应用技术教学
8、课件,工作方式2:8 位自动重装的定时/计数器,单片机原理与应用技术教学课件, THx/TLx赋相同初值 在TLx计数达到0FFH 再加“1”时,TL0 将溢出,进位位直接进入“TFx”去申请 中断,同时打开三态门,使THx中的值 自动重装(Copy)进TLx,工作方式 2 的编程:, TMOD寄存器选方式: 写“M1,M0” = 1 0 b 选中方式2, 其他用法与各种方式1完全相同,单片机原理与应用技术教学课件,分析:fosc = 6MHz 1机器周期 = 2 S 1KHz方波周期 = 1 mS 半个方波周期 =500S 500uS2 uS = 250 若选择方式2 工作,8位定时器最大数
9、值为: 28 =256 =0FFH + 1 可以满足要求。 计算初值:256250=6,例:从P1.0 脚输出频率=1KHz方波。 设:晶振=6MHz。利用T1定时中断。,定时器(方式2)应用程序举例:,单片机原理与应用技术教学课件,ORG 0000H AJMP MAIN ORG 001BH ;T1的中断矢量 ;中断服务 RETI ;中断返回 MAIN: MOV TH1, #6 SETB ET1 SETB EA HERE: AJMP HERE ;原地等待中断 END,初始化,;选T1方式2 ;赋重装值 ;赋初值 ;开T1中断 ;开总中断 ;启动T1,CPL P1.0,MOV TMOD,#20H
10、,MOV TL1, #6,SETB TR1,单片机原理与应用技术教学课件,T0: 组织成TL0和TH0两个8位定时/计数器,Timer工作方式 3 几乎无用,T1: 不再是定时/计数器了 T1 的TR1和TF1出借给TH0当控制位使用, 剩下的TH1/TL1寄存器只能当作普通寄存 器用。,单片机原理与应用技术教学课件,Timer工作方式 3 结构:, T0成为双 8位Timer T1不再有Timer功能 TF1,TR1出借给TH0,单片机原理与应用技术教学课件,定时器小结: (2个16位加法计数器),运行/停止由TRx位控制,(当GATE=1时: 由TRx位和Tx引脚上的信号共同控制),工作方
11、式由TMOD决定; 计数/定时由C/T位决定 工作方式0(13位) 几乎不用 工作方式3(T0拆为双8位) 几乎无用 工作方式1(16位) 经常用到 工作方式2(8位自动重装) 经常用到,从初值按机器周期或外部脉冲递加,溢出位 TFx申请中断;中断允许由ETx位和EA位控制,,定时计数器的初始化,1、初始化的步骤: 1)确定定时器/计数器的工作方式、操作模式、启动控制方式,并利用传送指令将其写入TMOD寄存器。 2)设置定时器/计数器的初值。直接将初值写入TH0、TL0或TH1、TL1中。 3)根据要求考虑是否采用中断方式,直接对IE位赋值。开放中断时,对应位置1;采用程序查询方式时,IE中对
12、应位应清0进行中断屏蔽。,定时计数器的初始化,4)启动定时器/计数器工作。 当GATE设置0时,执行SETB TRi后,启动定时器/计数器; 若GATE设置l时,由外部中断引脚共同控制,只有当INT0/INT1引脚电平为高时,指令以上执行后定时器/计数器方可启动工作。 定时器/计数器一旦启动就按规定的方式定时或计数。,2计数初值的计算,当T0或T1工作于定时器或计数器方式时,不同的工作方式、不同的操作模式其计数初值均不相同。若设最大计数值(溢出值)为M(模),各操作模式下的M值为: 模式0: M=213=8192 模式1: M=216=65536 模式2: M=28=256 模式3: M=28
13、=256定时器T0分成2个独立的8位计数器,所以TH0、TL0的M均为256。,2计数初值的计算,MCS-51的两个定时器均为加1计数器,当加到溢出值时产生溢出,将TF位置l,可发出溢出中断,因此,计数器初值X的计算式为: X=M-计数值(通式) T0或T1工作于定时器与计数器方式时,X的确定方法有别。,1)计数器方式,当T0或T1工作于计数器方式时,计数脉冲由外部引入,它是对外部脉冲进行计数。因此计数值应根据实际要求来确定。计数初值可采用通式计算,即: X=M-计数值 【举例】:在方式1时,每接收100个外部事件,要求产生一个中断,确定计数初值。 X=M-计数值=65536-100=6543
14、6=FF9CH,THi=FFH TLi=9CH,定时器初值计算公式:,当T0或T1工作于定时器方式时,由于是对机器周期进行计数,故计数值应为定时时间对应的机器周期个数。为此,应首先将定时时间转换为所需要记录的机器周期个数(计数值)。其转换公式为: 机器周期个数(计数值)= Tc / Tp 式中 Tc定时时间;Tp机器周期,Tp=12/ fosc ;fosc为机器时钟(震荡器)的振荡频率。 故计数初值的计算公式为: X=M-计数值=M- Tc / Tp =M-(TCfosc)12。,【举例】:请计算定时50ms所需要的定时初值。 fosc=12MHz 1)确定模式:选择模式1 ; 2)计算定时初
15、值。,X=65536-50ms/1=65536-50000 =15536 =3CB0H,即: THi=3CH;TLi=B0H,定时器方式1应用举例,例1:用T1产生一个50Hz的对称方波,由P1.l输出,采用用程序查询方式,fosc=12MHz。,TMOD 0001 0000,【解】:首先确定工作方式、工作模式和定时初值。 1)选定时方式(C/T=0); 2)模式1(M2 M1=01) ,,3)方波周期T=l/50=O.02s=20ms,用T1定时10ms,,计数初值为:X1=216-1010-31210612= 65536-10000=55536=D8F0H; 即TH1=D8H,TL1=F0
16、H。,源程序如下(查询方式):,ORG 0000h LJMP T1BUS ORG 0030h T1BUS: ;T1模式1,定时 LOOP:MOV TH1,#0D8H ;T1计数初值 MOV TL1,#0F0H ;启动T1 LOOP1: JNB TF1,LOOP1 ;T1没有溢出等待 ;清溢出标志位 CPL P1.1 ;P1.l取反输出 SJMP LOOP ;循环,MOV TMOD,#10H,SETB TRl,CLR TF1,利用中断方式编程,ORG 0000h LJMP T1MIN ORG 001Bh LJMP LOOP ORG 0030h T1MIN: MOV TMOD,#10H ;T1模式
17、1,定时 MOV TH1,#0D8H ;T1计数初值 MOV TL1,#0F0H SETB EA ;CPU、T1开中断 SETB ET1 SETB TRl ;启动T1 T1MIN2: NOP LJMP T1MIN2 ORG 0100h LOOP:MOV TH1,#0D8H ;T1计数初值 MOV TL1,#0F0H CPL P1.1 ;P1.l取反输出 RETI,定时器门控位GATE的应用,例: 利用T0门控位测引脚上出现的正脉冲宽度,将所测得的高8位值存入片内7lH,低8位值存入片内70H单元中。已知fosc=12MHz。,GATE=0时,只要TR=1便启动定时器开始计数。 如果GATE=1
18、时, TR=1电路是否计数取决于/INT0: /INTE0=1 时开始计数;/INTE0=0,电路不计数。,解题步骤: 将外部脉冲接到P3.2上,使用T0且C/T=0; 计数器TH0、TL0原始初值为00H,且设为模式1(16位),GATE设为1 ; 在/INT0=0时启动T0计数器(TR0=1); 当/INT0=1时,定时器T0开始计数; 当/INT0=0时计数停止,此时TH0、TL0中的计数值就是与脉冲宽度相对应得数据。,测试程序如下(仍用查询方式),ORG 0000H LJMP T0MIN ORG 0030h T0MIN: MOV TMOD,#09H ;T0定时,模式1, ;GATE=l
19、 MOV TL0, #00H ;T0从0000H开始计数 MOV TH0,#00H MOV R0, #70H SETB TR0 ;P3.2变低,准备启动T0 LOOP1: JNB P3.2,LOOP1 ;等待P3.2变高,启动计数 LOOP2: JB P3.2,LOOP2 ;等待P3.2再次变低 CLR TR0 ;停止计数 MOV R0,TL0 ;存入计数值 INC R0 MOV R0,TH0 : :,这种方案的最大被测脉冲宽度为65535s ,由于靠软件启动和停止计数器,测量的数值有一定的误差,其最大误差与采用的指令有关。上述程序被测的脉冲宽度t的计算式为: t=12Nfosc =N s 式
20、中 N为定时器中的计数值,等于7lH 70H单元中的数值。,试编写由Pl.0输出一个周期为2分钟的方波信号的程序。已知fosc=12MHz。,解:此例要求P1.0输出的方波信号的周期较长,用一个定时器无法实现。解决的办法可采用定时器加软件计数的方法,方法:将T1设置为定时器方式,定时时间为10ms(即10ms中断一次由CPU自动调用一次中断服务程序),工作于模式1;再利用T1的中断服务程序作为软件计数器;共同实现一分钟的定时。 整个程序由两部分组成,即由主程序和T1的中断服务程序。 主程序包括初始化程序和Pl.0输出操作程序 中断服务程序包括毫秒(ms)、秒(s)、分(min)的定时等。,编写T1的中断服务程序时,应首先将T1初始化,并安排好中断服务程序中所用到的内部RAM中地址单元。 T1计数初值: X=216-1010-31210612=55536=D8FOH。 中断服务程序所用到的地址单元安排如下: 40H单元作ms的单元,计数值为1s10ms=100次; 4lH单元作s的计数单元,计数值为1min1s=60次; 29H单元的D7位(位地址为4FH)作1分计时到的标志位,即标志用4FH,主程序: ORG 000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江西社区工作者考试应知应会题库
- 2025年初会专业技术资格《初级会计实务》真题汇编
- 工信局安全生产预警制度
- 生产设备维护修理制度
- 陪玩团培训教程课件
- 养蚕生产管理制度及流程
- 推土机生产管理制度汇编
- 印刷厂生产工具管理制度
- 养殖小区安全生产制度
- 航运安全管理规范手册
- 医学检验免疫课件
- 农村土地永久性转让合同
- 中建市政道路施工组织设计方案
- 财务先进个人代表演讲稿
- 年度得到 · 沈祖芸全球教育报告(2024-2025)
- DB23T 2689-2020养老机构院内感染预防控制规范
- 2025届天津市和平区名校高三最后一模语文试题含解析
- 专业律师服务合同书样本
- 建筑施工现场污水处理措施方案
- 学生计算错误原因分析及对策
- 送货单格式模板
评论
0/150
提交评论