硬件电路:一个独立按键连接了P3.2口,也就是外部中断0的端口,同时蜂鸣器连接在了P3.7口,详情见proteus仿真图。
软件编写:
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit BEEP=P3^7;
void delay(u16 ten)//
{
while(ten--);
}
void EX_Init()
{
IT0=1;
EX0=1;
TR0=0;
EA=1;
}
void main()
{
EX_Init();
while(1)
{
BEEP=!BEEP;
delay(100000);
}
}
void EX0_ISP()interrupt 0
{
delay(1000);
if(INT0==0)
{
TR0=~TR0;
}
}
理论上来讲,我按下按键key0后会触发外部中断0,且在中断初始化中选择了下降沿触发,故对定时计数器状态取反后程序应该停止,即蜂鸣器不发声,再次按下是定时计数器打开,蜂鸣器会继续发声,也就是通过key0来实现蜂鸣器的暂停。
问题是:当按下key0时,蜂鸣器只是有一小段的暂停后就继续发声了,没起到暂停的功能,麻烦各位看看问题出在哪里。
51单片机的外部中断0
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
悬赏问题
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境
- ¥30 关于#java#的问题,请各位专家解答!
- ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
- ¥20 pcf8563时钟芯片不启振
- ¥20 pip2.40更新pip2.43时报错
- ¥15 换yum源但仍然用不了httpd
- ¥50 C# 使用DEVMOD设置打印机首选项
- ¥15 麒麟V10 arm安装gdal
- ¥20 OPENVPN连接问题