- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
本章学习目标:
了解中止概念,能正确描绘单片机中止响应过程
熟记80C51单片机5个中止源及其中止入口地址
能按要求正确设置特殊功效存放器IE、IP、TCON、SCON和TMOD
熟悉中止优先控制方法
能正确描绘定时/计数器4种工作方式,重点掌握方式1、方式2应用
学会定时/计数初值计算
能读懂教材中控制实例,学会编写同等难度中止、定时/计数程序;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.1中止系统;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;4.2定时器/计数器;定时/计数器初始化步骤
①向工作方式存放器TMOD写入工作方式控制字以确定:
(A)开启方式是TR0/TR1开启还是TR0/TR1和/配合一起开启;
(B)是定时方式还是计数方式;
(C)是工作方式0还是工作方式1、2或3。
②向计数器TH0、TL0(或TH1、TL1)装入初值;
③开启定时器/计数器(将运行控制位TR0/TR1置位);
④假如采取中止方式,还要将IE中中止允许控制位ET0(或ET1)、中止允许总控位EA置位。
;[例1]利用定时器T0方式0产生定时脉冲。
要求:每隔2ms产生宽度为一个机器周期正脉冲,由P1.0输出此定时序列脉冲信号(设时钟频率为6MHz)。
解: 首先要求出T0初值:
已知:时钟频率为6MHz,则可求得每个机器周期为 2μs(正脉冲宽度)。
定时时间公式为:
所以当定时时间为t=2ms时:;[解法一]:采取查询工作方式编程
ORG0000H;起始程序地址
AJMPMAIN;转到主程序地址去
ORG0100H;主程序起始地址
MAIN: CLRP1.0;将输出口P1第0位清0(输出脉冲起始值)
MOVTMOD,#00H;将T0设置为:由TR0开启、定时方式、工作方式0
MOVTH0,#0E0H;给定时器中计数器高8位送入初值
MOVTL0,#18H;给定时器中计数器低5位送入初值
SETBTR0;将TR0位置1,开启T0工作
LOOP: JNBTF0,LOOP;进行查询:若TF0为0,计数器未溢出,程序转到当前指令 地址若TF0为1,计数器溢出,发出中止请求,程序往下走
CLRTF0;溢出中止请求标志位清0(中止请求响应之前,对TF0进行清0)
SETBP1.0;将P1.0位置1,输出正脉冲
CLRP1.0;这是单机器周期指令,所以正脉冲宽度为2μs,正脉冲消失
MOVTH0,#0E0H;重新装载高8位初值
MOVTL0,#18H;重新装载低5位初值
SJMPLOOP;转到LOOP处继续查询定时2ms初始化程序。而且考虑中止
END;[解法二]:采取中止工作方式编程
ORG0000H;起始程序地址
AJMPMAIN;转到主程序地址去
ORG000BH;中止服务程序矢量地址(中止源是T0)
AJMPTOINT;转到中止服务程序入口地址TOINT
ORG0100H;主程序入口地址
MAIN: CLRP1.0;将P1口第0位清0(输出脉冲起始值)
MOVTMOD,#00H;将T0设置为:由TR0开启、定时方式、工作方式0
MOVTH0,#0E0H;给定时器中计数器高8位送入初值
MOVTL0,#18H;给定时器中计数器低5位送入初值
MOVIE,#82H;T0中止允许ET0=1,允许T0中止,并将总允许控制位EA置1
SETBTR0;将TR0位置1,开启T0工作
LOOP: SJMPLOOP;LOOP为指令当前地址(等候中止)
ORG0300H;中止服务程序入口地址
T0INT: SETBP1.0;将P1.0位置1,输出正脉冲
CLRP1.0;这是单机器周期指令,所以正脉冲宽度为2μs
文档评论(0)