想问下以下程序是如何实现让蜂鸣器间隔不同时间响一次的?是什么语句在起作用?
#include<reg51.h>//加载头文件#defineucharunsignedchar#defineuintunsignedintsbitBEEP=P3^7;/...
#include<reg51.h> //加载头文件
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P3^7; //定义P3.7管脚为蜂鸣器输出端
sbit K1=P1^4; //定义P1.4--p1.7管脚为按键输入端
sbit K2=P1^5;
sbit K3=P1^6;
sbit K4=P1^7;
void DelayMS(uint x) //延时子程序 1ms
{
uchar t;
while(x--)for(t=0;t<120;t++);
}
void Play(uchar t) //蜂鸣器响应程序
{
uchar i;
for(i=0;i<100;i++)
{
BEEP=~BEEP; //取反
DelayMS(t);
}
BEEP=0;
}
void main()
{
if(K1==0) Play(1); //k1按下,蜂鸣器每隔1ms响一次,响100次停止
if(K2==0) Play(2); //k2按下,蜂鸣器每隔2ms响一次,响100次停止
if(K3==0) Play(3); //k3按下,蜂鸣器每隔3ms响一次,响100次停止
if(K4==0) Play(4) //k4按下,蜂鸣器每隔4ms响一次,响100次停止
} 展开
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P3^7; //定义P3.7管脚为蜂鸣器输出端
sbit K1=P1^4; //定义P1.4--p1.7管脚为按键输入端
sbit K2=P1^5;
sbit K3=P1^6;
sbit K4=P1^7;
void DelayMS(uint x) //延时子程序 1ms
{
uchar t;
while(x--)for(t=0;t<120;t++);
}
void Play(uchar t) //蜂鸣器响应程序
{
uchar i;
for(i=0;i<100;i++)
{
BEEP=~BEEP; //取反
DelayMS(t);
}
BEEP=0;
}
void main()
{
if(K1==0) Play(1); //k1按下,蜂鸣器每隔1ms响一次,响100次停止
if(K2==0) Play(2); //k2按下,蜂鸣器每隔2ms响一次,响100次停止
if(K3==0) Play(3); //k3按下,蜂鸣器每隔3ms响一次,响100次停止
if(K4==0) Play(4) //k4按下,蜂鸣器每隔4ms响一次,响100次停止
} 展开
展开全部
主要起作用的代码是(不过根据代码,一共会响50次才对)
for(i=0;i<100;i++)
{
BEEP=~BEEP; //取反
DelayMS(t);
}
BEEP=~BEEP;作用就是让蜂鸣器进行响一次停一次的交替,交替的时间间隔是由DelayMS(t);实现的。其中参数t就是想要延时的时间。
循环前i为0,BEEP应该初始化为0(不响)。
第一次循环:
BEEP取反得1,此时蜂鸣器在响,延迟t毫秒(响t毫秒),i++,进入下一次循环
第二次循环:
BEEP取反得0,此时蜂鸣器不响,延迟t毫秒(不响t毫秒),i++,进入下一次循环
.........
循环结束后BEEP赋值为0,让蜂鸣器停止。
所以就实现了蜂鸣器每隔tms响一次,不过能听见50次
for(i=0;i<100;i++)
{
BEEP=~BEEP; //取反
DelayMS(t);
}
BEEP=~BEEP;作用就是让蜂鸣器进行响一次停一次的交替,交替的时间间隔是由DelayMS(t);实现的。其中参数t就是想要延时的时间。
循环前i为0,BEEP应该初始化为0(不响)。
第一次循环:
BEEP取反得1,此时蜂鸣器在响,延迟t毫秒(响t毫秒),i++,进入下一次循环
第二次循环:
BEEP取反得0,此时蜂鸣器不响,延迟t毫秒(不响t毫秒),i++,进入下一次循环
.........
循环结束后BEEP赋值为0,让蜂鸣器停止。
所以就实现了蜂鸣器每隔tms响一次,不过能听见50次
追问
你的回答好详细啊,我还有一个问题想了解下,像这种程序有方法实现变成汇编语言吗?
追答
程序本身逻辑并不是很复杂,写成汇编难度不是很大。如果懒着写的话,有的编译器是有反汇编功能的,直接将C程序变成汇编语言。然后再改一下,符合你自己的程序就可以了
宿兴电子
2024-11-28 广告
2024-11-28 广告
联系我们蜂鸣器的种类规格繁多,需先知道几个参数 ( 电压,电流,驱动方式,尺寸,连接/固定方式),当然更重要的是,想要获的声音 (音压大小,频率高低).工作电压:电磁式蜂鸣器,从1.5到24V, 压电式的从3V到220V都是可行的,但一般压...
点击进入详情页
本回答由宿兴电子提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询