// GPIO config...
setHiLo(HiLo){
gpio=HiLo
Sleep(x)
}
while(Condition){
setHiLo(1)SetHiLo(0)SetHiLo(0)
//== Do something...
}
2.用Timer
//GPIO config
gFlag=0
TimerISR(){
if((gFlag%3)==0) gpio=Hi
else gpio=Lo
if(++gFlag>2) gFlag=0
}
main(){
...
...
setTimer()// setTimerInterval
TimerEnable()
...
while(Condition){
}
}
这种要求可以有两种办法。1、直接按频率计设计,计算出频率值来,然后与预期数据比较。
这种办法适应范围很广,而且可以轻松调整阈值。你的频率不是很高,频率计设计难度不高。
2、设计一个带通滤波器,窗口就是30K-60K,然后滤波结果经过整形后送单片机中断,一旦发现有信号,则触发单片机中断。
这个设计对单片机程序设计要求不高,但对于外围模拟电路设计要求非常高,难度要远大于方案1,如果自己电路能力不够的,不要尝试了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)