定时器中断应用

上传人:ji****72 文档编号:56658966 上传时间:2018-10-14 格式:PPT 页数:10 大小:118KB
返回 下载 相关 举报
定时器中断应用_第1页
第1页 / 共10页
定时器中断应用_第2页
第2页 / 共10页
定时器中断应用_第3页
第3页 / 共10页
定时器中断应用_第4页
第4页 / 共10页
定时器中断应用_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《定时器中断应用》由会员分享,可在线阅读,更多相关《定时器中断应用(10页珍藏版)》请在金锄头文库上搜索。

1、定时/计数器的编程和应用,1. 定时/计数器的初始化编程步骤 (1)计算计数器初值 (2)确定工作方式TMOD (3)设置计数初值 (4)启动定时(计数)器 采用中断方式,注意开中断。,定时/计数器的编程和应用,2. 计数初值C的计算和装入,定时/计数器的编程和应用,例:分别确定在方式0、1、2要计100个脉冲的计数初值,并编程装入。 解:在方式0、1、2的计数初值分别为: 方式0:C=2000H-64H=1F9CH 方式1:C=10000H-64H=FF9CH 方式2:C=100H-64H=9CH,用T1、工作方式0实现1秒延时函数,晶振频率为12MHz。 方式0采用13位计数器,其最大定时

2、时间为:81921s = 8.192ms,因此,定时时间不可能象任务7中一样选择50ms,可选择定时时间为5ms,再循环200次。 定时时间为5ms,则计数值为5ms/1s =5000,T1的初值为:X = M 计数值= 8192 5000 = 3192 = C78H = 0110001111000B 13位计数器中TL1的高3位未用,填写0,TH1占高8位,所以,X的实际填写值应为: X = 0110001100011000B = 6318H,举 例1,用T1方式0实现任务7中1秒延时函数如下: void delay1s() unsigned char i;TMOD=0x00; / 置T1为

3、工作方式0for(i=0;i0xc8;i+) / 设置200次循环次数TH1=0x63; / 设置定时器初值TL1=0x18;TR1=1; / 启动T1while(!TF1); / 查询计数是否溢出,即定时5ms时间到,TF1=1TF1=0; / 5ms定时时间到,将定时器溢出标志位TF1清零 ,举 例1,用T1方式0实现1秒延时如下: unsigned char i=200; void main() TMOD=0x00; / 置T1为工作方式0TH1=0x63; / 设置定时器初值TL1=0x18;IE=0x88; /开中断TR1=1; / 启动T1while(1) ; / 等待中断,即定时

4、5ms时间到,TF1=1 void T1_int() interrupt 3 i-;if(i=0) i=200; ,举 例1,中断程序设计,用户对中断的控制和管理:IE、IP、TCON、SCON 中断程序的编制中应注意: (1)开中断:总控开关EA、中断源的中断允许位; (2)对外部中断INT0、INT1应选择触发方式; (3)多个中断源,应设定中断优先级,预设IP。,中断程序设计,C语言程序设计 1. 中断服务函数的定义 函数名()模式 Interrupt n Using m (1)Interrupt n:将函数声明为中断服务程序,n为中断源编号;n=04五个中断源:IE0、TF0、IE1、TF1、RI/TI (2)Using m: 定义函数使用的工作寄存器组;,中断程序设计,中断服务程序不允许用于外部函数,它对目标代码影响如下: (1)调用函数时,SFR中的ACC、B、DPTR和PSW当需要时入栈; (2)如果不使用寄存器组切换,中断函数所需的所有工作寄存器Rn都入栈; (3)函数退出前,所有工作寄存器出栈; (4)函数由“RETI”指令终止。,中断程序设计,2. 编程举例 #includevoid Int0() interrupt 0 P1=0x0f;P14; void main() EA=1;EX0=1;IT0=1;while(1); ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号