用51单片机汇编语言检测上升沿和下降沿

用51单片机汇编语言检测上升沿和下降沿,第1张

这里只讲原理,不关注速度。实际设计工作中,已经有很多单片机能够识别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)

//在此应用

}

}

扩展资料:

直接使用汇编指令编写单片机程序,对硬件的控制更加直接,可以直接 *** 作物理地址,寄存器,端口等;其它更高级的语言(如:C语言)对硬件的控制是依赖于类库来实现的。并且,对于一些对程序大小和运行速度有非常严苛要求的项目而言,都必须使用汇编指令。

C语言只是为了方便编写,与机器打交道的其实都是2进制得代码,汇编语言就是这些代码好记忆的名称和规则,只是比C语言难理解些。

参考资料来源:百度百科-单片机汇编指令

您是问硬件的方式?还是软件的方式?

如果是硬件的方式,那么,各种单片机很不相同,需要具体看它的资料。

一般来说,某些引脚,例如:外中断引脚、定时器的计数触发引脚、捕获引脚等等,都可以用来检测上升沿与下降沿。

以捕获(有的单片机资料如80196,将它称作“高速输入”)引脚为例:

捕获引脚可以与某个定时器相关联,在捕获引脚上遇到上升沿或下降沿时,硬件就自动记录下当时定时器的读数,并产生中断请求。您可以在中断服务程序中做所需的相应 *** 作。

至于是上升沿捕获,还是下降沿捕获,还是二者都能捕获,可以由用户自己选择配置。

如果是用软件的方式来检测,那道理就简单了。用查询方式:只要将要检测的信号接到某个输入端口的某个位,在程序中反复读取该位的输入,一旦遇到“上次是0此次是1”的情况,就说明检测到了上升沿,遇到“上次是1此次是0”的情况,就说明检测到了下降沿。

PLS指令是指输出(或叫产生)一个尖脉冲,它相当于线圈瞬动闭合一次,并保持一个扫描周期周期;

LDP是指取上升沿脉冲,即取触头或开关、按钮等由断开(OFF)变为闭合(ON)的瞬间产生一个尖脉冲,与以后该触头或开关、按钮等的闭合持续时间长短无关,并保持一个扫描周期周期;

ANDP是指“与上升沿脉冲”,是指将该上升沿脉冲和前面的触头做“与”的逻辑运算。

你可以按上面的回答再理解一下。我的回答希望对你学习PLC有帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11169347.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存