计时程序设计.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《AVR单片机应用技术》课程 《能校时的电子时钟设计》 ①T0初始化函数设计; ②T0的中断服务函数设计; ③时间显示函数设计及仿真; 计时程序 设计 计时程序设计 计时程序设计 如何让时间动起来?时间基准信号 延时? 占用CPU资源,不准确 T/C0 计时程序设计 T/C0 8位计数器 T/C0:8位计数器 设: 时钟源1MHZ 8分频 计数初值:0x83 计算: ( 8/ 1MHZ)×(0xff- 0x83+1)=1ms 计时程序设计 1. T0初始化函数设计 1 0 0 0 0 0 1 1 TCNT0 TCNT0=0X83;//初值131 X WGM00 X X WGM01 CS02 CS01 CS02 TCCR0 TCCR0=0X02;//普通计数模式,8分频 计时程序设计 1. T0初始化函数设计 TIMSK=0X01;//使能T0溢出中断,置位TOIE0 TIMSK X X X X X X — TOIE0 void Time0_1sOVR_init(void) { CLI(); TCNT0=0X83; TCCR0=0X02; TIMSK=0X01; SEI(); } 计时程序设计 2.T0的中断服务函数设计 计数初值重装 重复1000次? 否 退出 秒+1 是 60秒? 否 分+1 是 60分? 否 时+1 是 24时? 否 是 归零 项目6第4单元 计时程序设计 2.T0的中断服务函数设计 #include ..\inc\Project_Public_Drv.h #include ..\inc\Time0.h extern uint8 hour, minute, second,interrupt_counter; void Time0_1sOVR_init(void) { CLI(); //关闭总中断 TCNT0=0X83;//初值131 TCCR0=0X02;//普通模式、时钟分频系数8 TIMSK=0X01;//使能T0溢出中断,置位T0IE0 SEI(); //打开总中断 } #pragma interrupt_handler Time0_sevce:iv_TIM0_OVF void Time0_sevce(void) { TCNT0=0X83;//重装初值,保证1毫秒的中断间隔 interrupt_counter++; if(interrupt_counter==1000)//1000次中断产生了秒信号 { interrupt_counter=0; second++;//统计秒累加次数 if(second==60)//分信号产生 { second=0; minute++;//统计分累加次数 if(minute==60)//时信号产生 { minute=0; hour++;//统计时累加次数 if(hour==24)//1天信号产生 { hour=0; } } } } } 项目6第4单元 计时程序设计 void LCM_display(uint8 hour,uint8 minute,uint8 second) { uint8 sec_shi,sec_ge,min_shi,min_ge,hou_shi,hou_ge; } sec_shi=second/10;//秒数据拆分成十位与个位 sec_ge=second%10; min_shi=minute/10;//分数据拆分成十位与个位 min_ge=minute%10; hou_shi=hour/10;//时数据拆分成十位与个位 hou_ge=hour%10; LCM_Write_DAT(tab[hou_shi]);//显示时信息 LCM_Write_DAT(tab[hou_ge]); LCM_Write_DAT(:); //间隔符号 LCM_Write_DAT(tab[min_shi]);//显示分信息 LCM_Write_DAT(tab[min_ge]); LCM_Write_DAT(:); //间隔符号 LCM_Write_DAT(tab[sec_shi]);//显示秒信息 LCM_Write_DAT(tab[sec_ge]); 项目6第4单元 计时程序设计 TC0中断服务函数(每隔1s修改一次时间) 项目6第4单元 计时程序设计 《AVR单片机应用技术》课程 谢 谢!

您可能关注的文档

文档评论(0)

20010520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档