求助各位大虾

2019-07-15 23:46发布

这段程序怎么就能随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--);
    }
}
能不能详解一下 谢谢各位大虾了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
冰葑世纪
2019-07-16 05:01
本帖最后由 冰葑世纪 于 2013-7-10 21:47 编辑

那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); 就会伴随这声响,只是这执行速度快。导致你以为是同时进行的。其实是按顺序执行,

一周热门 更多>