单片机的c语言 时钟函数带有闹钟功能,当我们调好闹钟以后,想设置响铃的时间,程序的思路

设置响的时间从一分钟到一天可连续调节

第1个回答  2015-04-26
这个可以用中断实现
设置初始最小中断时间 比如 1分钟
在添加一个按钮中断 调节中断时间追问

你说的我知道,有个问题是我已经用了一个定时器中断,如果再开一个就会相互影响,因为中断有优先级,定时器0已经拿来做时间了,那么定期器1该怎么用,最好有一段代码

追答

你可以把 定时器0 中的时间拿出来用啊

定时器0 里应该有1S 时间吧 判断 if(xx==a*1S){flag=1}

闹钟函数里 判断 flag

按钮中断可以用 外部中断 设置 a的值就行了

追问

如果我把定期器0的时间拿出来用,正常的显示怎么办,平时的时候显示时间,例如设置好了闹钟响的时间为8点,然后设置响多久的铃声,时间从一分钟到1天,闹钟响了又不要影响正常显示

追答

闹钟函数:
设置时间 参数:time
设置闹铃时间参数:time1(响多久)

设置闹钟状态 :flag=0空闲
flag=1工作
闹钟声音:判断flag 每xxs间断响一次

通过显示的时间函数 :

判断 当前时间是否与time 相同
相同设置设置闹钟状态1
判断当前时间是否与time +time1相同
相同设置设置闹钟状态 0

中断函数:
通过按键设置 time,time1(或者直接函 数初始化)

单片机是只能单线程,在一个函数里完成,要不影响显示 , 闹钟函数执行时间就要进可能的短

追问

我们都把问题复杂化了,说的简单点,我这个程序已经可以使时间显示,闹钟响,但是闹钟响只能是固定响几秒或者几分钟,我的意思响让闹钟响的时间可调,从一分到一天,闹钟响的时间我放在外部中断1里了,我想用一个按键接在外部中断1上可调响铃的时间,怎样写最好

追答

我上面回答的可以让闹钟响的时间是任意的啊 time1是响铃的时间度

追问

if(flag_ri==1)//当闹钟中断时进入这里

{

di();

delay(100);

di();

delay(500);

}

关键的闹钟函数怎样写好,麻烦修改程序

追答

蜂鸣器音调,这个延时要自己慢慢试,延时时间不要太长,会影响显示

相似回答