完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目前需求是设定定时时间任意分钟,从0开始计时到任意分钟结束,结束后报警提示,我想用时钟芯片的时间秒寄存器的,有时间变化一次,就计数一次,直到设定时间到达。麻烦大神谁能写一下这段程序,谢谢! |
|
相关推荐
2个回答
|
|
以下是一种可能的实现方法:
首先需要连接时钟芯片(例如DS1302)和单片机,通过时钟芯片获取当前的分钟和秒数。需要注意的是,时钟芯片的读取和写入操作都需要特定的时序控制,具体可以参考DS1302的数据手册。 在程序中,可以定义一个计时器变量 `timer`,用来记录从开始计时到现在已经过了多少分钟。在每次读取时钟芯片的时候,可以检查当前的分钟数是否达到了设定的时间,如果是则发出报警提示。代码框架如下: ``` #include // 定义时钟芯片的引脚接口等信息 unsigned char timer = 0; // 计时器变量,初始值为0 void main() { // 初始化时钟芯片等硬件 // 循环读取时钟芯片的秒和分钟信息,计算已经过了多少分钟 // 如果当前分钟数达到设定值,则发出报警提示 } ``` 循环读取时钟芯片的代码如下: ``` void read_time(unsigned char *minute_ptr, unsigned char *second_ptr) { // 具体的读取时钟芯片的代码,需要根据具体的芯片型号进行编写 // 读取到的分钟数和秒数分别存放在minute_ptr和second_ptr指向的地址中 } ``` 计算已经过了多少分钟的代码如下: ``` void update_timer(unsigned char minute) { static unsigned char last_minute = 0; unsigned char current_minute = minute; if (current_minute != last_minute) { timer ++; last_minute = current_minute; } } ``` 在主函数中,可以根据需要设定计时时间,然后进入类似如下的循环: ``` void main() { // 初始化时钟芯片等硬件 unsigned char set_minute = 15; // 设定计时时间为15分钟 while (1) { unsigned char current_minute, current_second; read_time(¤t_minute, ¤t_second); update_timer(current_minute); if (timer >= set_minute) { // 达到设定时间,发出报警提示 // 注意需要提供一个报警的函数或者子程序 break; } } } ``` 需要根据具体的情况进行代码的具体实现,包括时钟芯片的型号、连接方式、时序控制等。另外需要注意时钟芯片的精度和误差,如果需要更高的精度,可能需要使用更为精确的时钟芯片,或者采用其他计时方式。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
644 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1819 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1262 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1136 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1357 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 16:39 , Processed in 0.709019 second(s), Total 84, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号