微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助各位大虾

求助各位大虾

时间:10-02 整理:3721RD 点击:
这段程序怎么就能随LED灯的亮灭来发声的
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit teep = P1^2; // P1.2口控制蜂鸣器
Delay(uint);
main ()
{
    uchar  temp, a, b;
    temp = 0xfe;
    P0 = temp;
    while(1) {
      for(a = 0; a < 7; a++)  {
        temp = _crol_(temp, 1); //左移1位
        P0 = temp;
        Delay(260);
      }
      for(b = 0; b < 7; b++)  {
        temp = _cror_(temp, 1); //右移1位
        P0 = temp;
        Delay(260);
      }
    }
}
Delay(uint z)  //含有发音功能的延时程序
{
    uint i, j;
    for(j = z; j > 0; j--)  {
      teep = 0; for(i = 100; i > 0; i--);
      teep = 1; for(i = 100; i > 0; i--);
    }
}
能不能详解一下 谢谢各位大虾了

Delay( uint z ) 实际上是产生Z个周期的方波。用这个方波去驱动蜂鸣器。
这段程序怎么就能随LED灯的亮灭来发声的?不是很理解。

那Delay(uint z)  //含有发音功能的延时程序  ,,这个函数很明显。起到一个延时的作用,但是同时,在延时的过程中加入了一个某频率的声音teep = 0; for(i = 100; i > 0; i--);
      teep = 1; for(i = 100; i > 0; i--);   i的参数控制高低音。那个z的参赛就是控制这声音长短。同时起到一个延时作用。
while(1) {
      for(a = 0; a < 7; a++)  {
        temp = _crol_(temp, 1); //左移1位
        P0 = temp;
        Delay(260);
这程序后面那个 Delay(260); 就会伴随这声响,只是这执行速度快。导致你以为是同时进行的。其实是按顺序执行,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top