求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。

 我来答
NJGQZF
2015-05-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3165
采纳率:0%
帮助的人:1203万
展开全部
这里只讲原理,不关注速度。实际设计工作中,已经有很多单片机能够识别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);
//在此应用
}
}
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
浮若心微凉
2019-06-11
知道答主
回答量:26
采纳率:0%
帮助的人:9.8万
展开全部
可以利用定时器定时中断检测。每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;更新上一次开关有效值
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式