青然L 2022-11-11 20:48 采纳率: 0%
浏览 35

51单片机的外部中断0

硬件电路:一个独立按键连接了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时,蜂鸣器只是有一小段的暂停后就继续发声了,没起到暂停的功能,麻烦各位看看问题出在哪里。

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-11 22:08
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 11月11日

悬赏问题

  • ¥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连接问题