我是看到你的标题自己想的,可不可以用外中断的方式的方式计数。因为51单片机的外中断可以选择脉冲低电平有效,就是进一次中断,然后给A+1的方式计数。但是由于它是对低电平有效,所以在外中断端口P30前加一个外相器,把你输入的信号取反,这样就可以检查上升沿计数了。下面是汇编程序:
org 0000h
LJPM MAIN
ORG 0003H
LJMP JISHU
MAIN: MOV SP,#60H 初始化外中断0
SETB IT0
SETB EA
SETB EX0
MOV IP,#01H
MOV R2,#0
SJMP $
JISHU: PUCH ACC 入栈
INC R2 每次进入中断R2 +1
MOV 50H,R2 最后计数放在50H里,你喜欢放哪就哪里,计数在也在r2里
POP ACC 出栈
RETI
END
你可以试试,希望对你有帮助。也希望你能给我分。
用汇编语言,只用两条指令即可办到。
------------------------
输入周期是2S的(占空比是50%)的方波给单片机的P32口,
经过单片机延时50ms后输出周期为2S的(占空比为50%)的方波,从P10输出。
程序正确。
延时50ms,只是估算,基本上正确。
呵呵,能听见一点声音,真值得祝贺。
主程序中,beep=1;
按下键后,beep=0;
按一下键,蜂鸣器上,只是出现了一个下降沿;
松开按键,蜂鸣器上,只是出现了一个上升沿。
这种波形,是应该听不到正常的声音的,只有微弱的咔咔噪音。
把中断函数如下改动试试:
void extern0() interrupt 0
{
while(P32 == 0) { //在前面设定:sbit P32 = P3^2;
beep = ~beep;
delay(); //延时1~2ms
}
}
以上就是关于单片机检查上升沿并计数,怎么实现可否有例子示范全部的内容,包括:单片机检查上升沿并计数,怎么实现可否有例子示范、怎么捕捉单片机的方波上升沿和下降沿 急!、关于单片机外部中断的这个疑问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)