求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。
2个回答
展开全部
这里只讲原理,不关注速度。实际设计工作中,已经有很多单片机能够识别io端口上升沿和下降沿中断,且方式不止一种。
sbit io_inp=P2^1;输入端
bit old_bit;输入端电平记忆
unsigned char low_high;上升下降沿标志,0=无变化,1=上升沿,2、下降沿
void io_rest(void)
{
if(old_bit=!io_inp)
{
old_bit=io_inp;
if(io_inp=1)
low_high=1;
else
low_high=2;
}
}
void main(void)
{
old_bit=io_inp=P2^1;
while(1)
{
low_high=0;
io_rest(void);
//在此应用
}
}
sbit io_inp=P2^1;输入端
bit old_bit;输入端电平记忆
unsigned char low_high;上升下降沿标志,0=无变化,1=上升沿,2、下降沿
void io_rest(void)
{
if(old_bit=!io_inp)
{
old_bit=io_inp;
if(io_inp=1)
low_high=1;
else
low_high=2;
}
}
void main(void)
{
old_bit=io_inp=P2^1;
while(1)
{
low_high=0;
io_rest(void);
//在此应用
}
}
展开全部
可以利用定时器定时中断检测。每10ms检测一次开关的状态,多设几个状态值,最后将开关有效值读出;然后利用if语句检测。
定时中断程序此处省略
void main()
{
bit last_state;上一次开关有效值。
bit Now_state;当前开关有效值,从定时中断中读出。
while(1)
{
if((!last_state&&Now_state)==1)
{}上升沿检测
if((last_state&&!Now_state)==1)
{} 下降沿检测
last_state=Now_state;更新上一次开关有效值
}
}
定时中断程序此处省略
void main()
{
bit last_state;上一次开关有效值。
bit Now_state;当前开关有效值,从定时中断中读出。
while(1)
{
if((!last_state&&Now_state)==1)
{}上升沿检测
if((last_state&&!Now_state)==1)
{} 下降沿检测
last_state=Now_state;更新上一次开关有效值
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询