{
......
ch++
...
}
请教您是如何测试判断,程序根本就没有进入过AD的中断处理程序?
第一部分,定义寄存器地址,主程序,main 对控制寄存器进行配置,定时器初始化,AD初始化及通道选择,然后用while(1)等待中断。
interrupt time,定时器中,对AD进行处理
可以试试这样一个函数我不知道你按钮式高电平有效还是低电平有效,假设定义了一个函数读取按钮状态,按下返回一getkey()
代码可以这样写
for(i=0i<10000i++)
{
if
(!getkey())
break
}
可以试试这段代码,至于0.2s只能通过实验修改那个循环次数来确定了,不能很准确。
当然要在消抖之后,也就是延时10ms之后。
还有一个办法更准确一些,把按钮放在中断里,允许上升沿和下降沿同时触发。
按钮被按下后消抖10ms后重新启动中断,同时启动定时器。建立两个全局变量,一个保存计时器状态,一个保存按钮状态。
计时器启动后及时器状态置1,按钮启动后按钮置1。当按钮被松开时判断定时器是否正在计时,如果正在计时表示不到0.2s关定时器,如果已经超了时间直接把按钮状态置0就可以了。如果计时器到时按钮状态为一直接关闭灯就可以了。这是大致思路你看看行不行把。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)