|
萌新提问,我的想法是蜂鸣器跟着流水灯响,但是每次流水灯到头,另外一端蜂鸣器就响一下不知道为啥
#include <reg52.h>
//宏定义,定义uint和 uchar
#define uint unsigned int
#define uchar unsigned char
void delay(uint);//声明延时函数
#include <intrins.h>//引用移位库函数头文件
//定义移位用temp变量
uchar temp;
uchar temp2;
//定义流水循环用变量
uint left;
uint right;
//定义蜂鸣器
sbit BU = P2^3;
void main()
{
while(1)
{
temp = 0xfe;//将temp赋值 0xfe 就表示16进制数字1111 1110
//代表第一个灯亮 如果用位移函数可以变成1111 1101 可以让第二个灯亮
P1 = temp;//将temp赋值给P1
//蜂鸣器在移位后蜂鸣
BU = 0;
delay(20);
BU = 1;
for(left = 8;left >0 ;left--)
{
delay(2000);//调用延时函数
temp = _crol_(temp,1);//调用移位函数,将temp的量改变,变为下个灯
P1 = temp;//将temp再次赋值给P1,完成移位
//蜂鸣器在移位后蜂鸣
BU = 0;
delay(20);
BU = 1;
}
temp2 = 0x7f;
P1 = temp2;
BU = 0;
delay(20);
BU = 1;
for(right = 8;right > 0 ;right--)
{
delay(2000);
temp2 = _cror_(temp2,1);
P1 = temp2;
BU = 0;
delay(20);
BU = 1;
}
}
}
//延时函数
void delay(uint c)
{
uint a,b;
for (a = 1; a <10 ;a++)
{
for (b = c ; b > 0; b--)
{
}
}
} |
|