- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定时器_中断方式_1s连续闪烁
/**********************************************************************name:发光二极管以1秒钟的间隔,连续闪烁延时方式:定时器0,工作方式0(13位计数)程序控制方式:中断方式连线:P2口—发光二极管JP14计数初值计算过程分析:1s=200*0.005s每秒计数机器周期个数=11.0592M/12=9216000.005s计数个数N=921600*0.005=4608定时0.005s计数初值X=8192-4608=3584低5位(TL0):X%32高8位(TH0):X/32**********************************************************************/#includereg51.h#define uint unsigned int#define uchar unsigned char#define LED P2//重新定义P2口为LEDvoid init_T0(void);void isr_T0(void);uchar count = 0;main(){init_T0();while(1){//方式二:将定时时间到的处理程序写在主函数中处理!较好!!if(count == 200){count = 0;//清0,重新计数//P2 = ~P2;LED = ~LED;}}}void isr_T0(void) interrupt 1{ ++count;//方式一:将定时时间到的处理程序写在中断服务函数里,不好!提到主函数中处理!! /*if(count == 200){count = 0;//清0,重新计数P2 = ~P2;}*/TL0 = 3548%32;//重新写入计数初值低8位TH0 = 3548/32;//重新写入计数初值高8位//清除溢出标志位:中断方式硬件自动清0}void init_T0(void){TMOD = 0x0;//设定定时计数器0:工作方式0TL0 = 3548%32;//设置计数初值低8位TH0 = 3548/32;//设置计数初值高8位EA = 1;//开总中断ET0 = 1;//开定时计数器0中断TR0 = 1;//TCON=0x10,启动定时计数器0}/*******************************************************************name:发光二极管以1秒钟的间隔,连续闪烁延时方式:定时器0,工作方式2(8位计数,自动重装载)程序控制方式:中断方式连线:P2口—发光二极管JP14计数初值计算过程分析:每秒计数机器周期个数=11.0592M/12=9216000计数个数N=921600*01441s = 06400定时0计数初值X=256-144=112高8位(TH0)=低8位(TL0):X*******************************************************************/#includereg51.h#define uint unsigned int#define uchar unsigned char#define LED P2 //重新定义P2口为LEDvoid init_T0(void);void isr_T0(void);uint count = 0;main(){init_T0();while(1){//方式二:将定时时间到的处理程序写在主函数中处理!较好!!if(count == 6400){count = 0;//清0,重新计数LED = ~LED;}}}void isr_T0(void) interrupt 1{ ++count;//计数初值自动重装载//清除溢出标志位:中断方式硬件自动清0}void init_T0(void){TMOD = 0x02;//设定定时计数器0:工作方式2TH0 =TL0 = 112;//设置计数初值高8位=低8位EA = 1;//开总中断ET0 = 1;//开定时计数器0中断TR0 = 1;//TCON=0x10,启动定时计数器0}
文档评论(0)