首页 51定时器程序(1)

51定时器程序(1)

举报
开通vip

51定时器程序(1)#include//包含51单片机寄存器定义的头文件sbitD1=P2^0;//将D1位定义为P2.0引脚sbitD2=P2^1;//将D2位定义为P2.1引脚/**************************************************************函数声明**************************************************************/voidStartTime0(void);//启动定时器T0voidStartTime1(void)...

51定时器程序(1)
#include//包含51单片机寄存器定义的头文件sbitD1=P2^0;//将D1位定义为P2.0引脚sbitD2=P2^1;//将D2位定义为P2.1引脚/**************************************************************函数声明**************************************************************/voidStartTime0(void);//启动定时器T0voidStartTime1(void);//启动定时器T1/**************************************************************函数功能:主函数**************************************************************/voidmain(void){EA=1;         //开总中断StartTime0();StartTime1();}/**************************************************************函数功能:启动T0***************************************************************/voidStartTime0(void){ ET0=1;        //定时器T0中断允许    TMOD=0x01;      //使用定时器T0,工作方式1TH0=(65536-46083)/256;//定时器T0的高8位赋初值TL0=(65536-46083)%6;//定时器T0的高8位赋初值TR0=1;        //启动定时器T0while(1)//无限循环等待中断;}/**************************************************************函数功能:定时器T0的中断服务程序**************************************************************/voidTime0(void)interrupt1using0//“interrupt”声明函数为中断服务函数//其后的1为定时器T0的中断编号;0 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示使用第0组工作寄存器{D1=~D1;//按位取反操作,将P2.0引脚输出电平取反TH0=(65536-46083)/256;//定时器T0的高8位重新赋初值TL0=(65536-46083)%6;//定时器T0的高8位重新赋初值}/***************************************************************函数功能:启动T1****************************************************************/voidStartTime1(void){ ET1=1;        //定时器T0中断允许    TMOD=0x10;      //使用定时器T1,工作方式1TH0=(65536-46083)/256;//定时器T1的高8位赋初值TL0=(65536-46083)%6;//定时器T1的高8位赋初值TR1=1;        //启动定时器T1while(1)//无限循环等待中断;}/**************************************************************函数功能:定时器T1的中断服务程序**************************************************************/voidTime1(void)interrupt3using1//“interrupt”声明函数为中断服务函数//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器{D2=~D2;//按位取反操作,将P2.0引脚输出电平取反TH0=(65536-46083)/256;//定时器T0的高8位重新赋初值TL0=(65536-46083)%6;//定时器T0的高8位重新赋初值}上述的程序出现问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,修改如下:#include//包含51单片机寄存器定义的头文件sbitD1=P2^0;//将D1位定义为P2.0引脚sbitD2=P2^1;//将D2位定义为P2.1引脚/**************************************************************函数声明**************************************************************/voidStartTime0(void);//启动定时器T0voidStartTime1(void);//启动定时器T1/**************************************************************函数功能:主函数**************************************************************/voidmain(void){EA=1;         //开总中断StartTime0();StartTime1();while(1)//无限循环等待中断;}/**************************************************************函数功能:启动T0***************************************************************/voidStartTime0(void){ ET0=1;        //定时器T0中断允许    TMOD=TMOD&0XF1;      //使用定时器T0,工作方式1TH0=(65536-46083)/256;//定时器T0的高8位赋初值TL0=(65536-46083)%6;//定时器T0的高8位赋初值TR0=1;        //启动定时器T0}/**************************************************************函数功能:定时器T0的中断服务程序**************************************************************/voidTime0(void)interrupt1using0//“interrupt”声明函数为中断服务函数//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器{D1=~D1;//按位取反操作,将P2.0引脚输出电平取反TH0=(65536-46083)/256;//定时器T0的高8位重新赋初值TL0=(65536-46083)%6;//定时器T0的高8位重新赋初值}/***************************************************************函数功能:启动T1****************************************************************/voidStartTime1(void){ ET1=1;        //定时器T0中断允许    TMOD=TMOD&0X1F      //使用定时器T1,工作方式1TH0=(65536-46083)/256;//定时器T1的高8位赋初值TL0=(65536-46083)%6;//定时器T1的高8位赋初值TR1=1;        //启动定时器T1}/**************************************************************函数功能:定时器T1的中断服务程序**************************************************************/voidTime1(void)interrupt3using1//“interrupt”声明函数为中断服务函数//其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器{D2=~D2;//按位取反操作,将P2.0引脚输出电平取反TH0=(65536-46083)/256;//定时器T0的高8位重新赋初值TL0=(65536-46083)%6;//定时器T0的高8位重新赋初值}修改说明:1,删除子程序中的while(1);死循环语句,在主程序中增加while(1);,原因是:在子程序中加了之后,StartTime1();将会执行不到,因为中断返回后还是while(1);死循环语句,跳不出来,程序的原意实现不了。在主程序中添加,因为“main里面加while是常识,否则跑飞的概率很高”。2,TMOD用或,直接赋值不太可靠。在starttime0中TMOD=TMOD&0XF1,starttime1中TMOD=TMOD&0X1F,在原始程序中starttime1就修改了T0的运行方式。
本文档为【51定时器程序(1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_842972
暂无简介~
格式:doc
大小:18KB
软件:Word
页数:6
分类:
上传时间:2021-11-30
浏览量:10