51单片机读取信号上升沿50ms代码详解
以下是使用51单片机汇编语言实现的读取信号上升沿50ms的代码:
ORG 0H ; 程序起始地址
MOV P1,#00H ; 将P1口输出低电平
WAIT_LOW:
JB P3.2,WAIT_LOW ; 等待输入信号变为低电平
WAIT_RISE:
JNB P3.2,WAIT_RISE ; 等待输入信号上升沿
MOV TH0,#0B1H ; 设置定时器初值
MOV TL0,#0E1H
SET_TIMER:
SETB TR0 ; 启动定时器
WAIT_TIMER:
JNB TF0,WAIT_TIMER ; 等待定时器溢出
CLR TR0 ; 停止定时器
CLR TF0 ; 清除溢出标志
MOV P1,#FFH ; 将P1口输出高电平
RET ; 返回主程序
END
解释一下代码的实现过程:
首先将P1口输出低电平,等待输入信号变为低电平。
然后等待输入信号上升沿,即信号从低电平变为高电平。
接下来设置定时器初值为0B1H和0E1H,这个初值是为了让定时器在50ms后溢出。
启动定时器,等待定时器溢出。
定时器溢出后,停止定时器,清除溢出标志,将P1口输出高电平。
最后返回主程序。
需要注意的是,这个代码只能读取一次信号上升沿,如果需要连续读取信号上升沿,需要在主程序中加入循环。
原文地址: https://www.cveoy.top/t/topic/oSew 著作权归作者所有。请勿转载和采集!