- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MCS-51 单片机原理及应用-定时器-计数器参考
MCS-51 单片机原理及应用 例如 :设定时/计数器 T0 为定时工作方式 1 。 设定时/计数器 T1为计数方式2和T0 为定时工作方式 1 定时器/计数器初值计算 定时器/计数器用于定时或计数时,必须按照需要给计数器设置初值。定时器/计数器在计数初值的基础上以加1的方式进行计数,在计数器从全1变为全0时,将自动产生溢出中断请求。 (1)计数初值计算 假设要计数的值为X,由于计数器是加工计数器,所以定时器/计数器的初值为 2 -X: 其中n的值依赖于工作方式, 对于方式 0,n= 13;即初值=8192-X 对于方式 1,n= 16;即初值=65536-X 对于方式 2和方式 3,n=8;即初值= 256-X 2)定时初值计算 定时就是定时间,假设晶振频率为f,定时时间为T,对应的计数值为X,此时计数器是将系统时钟12分频后作为计数脉冲,则以下等式成立。 要装入的计数器初值 CI= 2 -T·fosc/12。 例如:已知晶振的频率为 6 MHz,要求定时为2 ms,则 当为方式0时,应装入的计数初值为; 8192-2×10 ×6×10 /12 = 8192-1000 = 7192 定财器/计数器初始化步骤 1)确定工作方式:把工作方式控制字写入到TMOD中; 2)设置定时或计数的初值:根据问题要求,求出定时或计数的初值,写入到寄存器THO、TLO或THI、TLI中。 3)如果需要中断,使定时器中断允许位ET0或ETI置位,如果要求中断嵌套,还应设置相应的中断优先级,然后置位EA,使CPU开放中断;如果不需要中断,仅以软件方式对计数器溢出标志TFO或TFI进行查询,则可略去此步骤; 4)启动定时器/计数器:将 TRO或 TRI置 1即可启动定时器/计数器。 例: 设 6M时钟,用定时/计数器TO产生 1ms的 定时,并使P1.0输出 占空比 为1:1周期为 2ms的方波 计算初值:方式0, 13位计数器 X=8192-T(fosc/12) =8192-1000x6/12 =7692 01100 TH0=0F0H TL0=0CH 程序: PROTEUS硬件仿真—绘制电路原理图 PROTEUS硬件仿真--参数设置 PROTEUS硬件仿真—波形测试 原始初值 PROTEUS硬件仿真--频率测量 PROTEUS硬件仿真—最终初值 接续上题,用 定时器T1完成上述功能 【例】设系统时钟频率为12MHZ,编程实现从P1.1输出周期为1s的方波。 先产生500ms的周期性的定时,定时到则对P1.1取反就可实现。由于定时时间较长,一个定时/计数器不能直接实现,可用定时/计数器T0产生周期性为10ms的定时,然后用一个寄存器R2对10ms计数50次或用定时/计数器T1对10ms计数50次实现。系统时钟为12MHZ,定时/计数器T0定时10ms,计数值N为10000,只能选方式1,方式控制字(01H),初值X: X=65536-10000=55536=1101100011110000B 则TH0=D8H,TL0=F0H。 利用定时器 TO,使与 PI. 0口连接的发光二极管每 IS闪烁一次。 解:使发光二极管闪烁也可以利用例6-1的方法,在时间到18时,对PI.0取反。然而晶振的频率为 6 MHz,定时器所能定时的最长的时间为 131.072 ms,我们先用定时器/计数器T0做一个100 ms的定时器,另外再设定一个计数器COUNT,每次定时器中断时,对COUNT内容加入如果此时COUNT的值为 10,则说明已到了 10 X 100 ms,也即 Is的定时时间,这时对计数器 COUNT中的值清零, 重新开始计数,同时对PI.0取反操作,使灯闪烁,这样就即可到题目要求. 程序如下: Hll00MS EQU HIGH(65536-50000);定义预置计数器的高字节初值 LO100MS EQU LOW(65536-50000);定义预置计数器的低字节初值 COUNT DATA 30H;定义人为计数器的寄存器地址 ORG 0000H LJMP MAIN ORG 000BH ;定时器0的中断向量地址 LJMP TIM0 ;定时器0处理程序入口处 MAIN:MOV SP,# 50H
文档评论(0)