基于单片机设计的音乐马桶
时间:11-28
来源:互联网
点击:
程序:
//12MHZ
#include
sbit sound_mod = P2^1;
#define uchar unsigned char
uchar second;
uchar minute;
bit play_flag; //音乐模块播放控制位
sbit shine = P2^0; //仿真时秒闪烁LED
void run(void);
void init(void) //定时器,中断初始化函数
{
sound_mod = 0;
TH0 = -50000/256;
TL0 = -50000%6;
TMOD = 0x01;
TR0 = 1;
IE = 0x83;
IT0 = 1;
}
void main(void)
{
init();
while (1)
{
run();
}
}
void run(void)
{
if (play_flag) //播放标志为1时,音乐模块供电
{
sound_mod = 1;
}
else if (!play_flag) //播放标志为0时,音乐模块不供电,同时为重新计时3分钟复位
{
minute = 0;
sound_mod = 0;
}
}
void timer(void) interrupt 1
{
static uchar counter;
counter++;
if (20 == counter) //20个定时器溢出为1秒
{
counter = 0;
second++;
shine = !shine;
if (60 == second) //分进位
{
second = 0;
minute++;
{
if (3 == minute)//定时器定时3分钟后,播放标志位清0
{
minute = 0;
play_flag = 0;
}
}
}
}
}
void shake(void) interrupt 0
{
play_flag = 1; //震动开关跳变触发中断,播放标志位置1
}
Top