📄 music.c
字号:
//*************************************************************************//
//
// Function : 乐声
// MCU : PIC16f630
// Version : 1.0
// Start Date : 2008/4/02
// Finish Date : 2008/4/03
// Author : caizb
//
//*************************************************************************//
#include <pic.h> //Common head files
#include "define.h"
__CONFIG(INTOSCIO & MCLRDIS & PWRTEN & BORDIS & WDTDIS ); //配置位
//********************** 中断服务程序 ********************************************
//声音产生.
//*******************************************************************************
void interrupt time_mu(void)
{
//TMR1做声音
TMR1L=m_music_L; //重置计时器初值,以产生一定频率
TMR1H=m_music_H;
TMR1IF=0;
if(!stop_f)
SOUND=!SOUND;
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// 上电初始化
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void init(void)
{
TRISA=0xff;
TRISC=0; //
PORTC=0;
T1CON=1; // 1/1 timer1 on
TMR1IF=0;
TMR1IE=1;
PEIE=1;
OPTION=0x87;
CMCON=0xff;
T0IF=0; //清除TMR0的中断标志
INTF=0; //清RB0中断
T0IE=0; //TMR0中断允许
GIE=1; //总中断允许
}
fSYS()
{
if(T0IF)
{
T0IF=0;
fre_time++;
if(fre_time==m_music_long)
{
ONE_S_F=0;
fre_time=0;
stop_f=0;
}
}
}
//************************ 主程序 *************************//
void main()
{
init();
ONE_S_F=0;
while(1)
{
for(n=0;n<79;)
{
if(!ONE_S_F)
{
s_reg=M_MUSIC[n]&0x0f;
m_music_long=music_long[s_reg];
s_reg=(((M_MUSIC[n]&0xf0)>>4)<<1);
m_music_H=music_15[s_reg];
TMR1H=m_music_H;
s_reg++;
m_music_L=music_15[s_reg];
TMR1L=m_music_L;
ONE_S_F=1;
n++;
}
fSYS();
}
for(n=0;n<100;)
{
if(!ONE_S_F)
{
s_reg=M_MUSIC1[n]&0x0f;
m_music_long=music_long[s_reg];
s_reg=(((M_MUSIC1[n]&0xf0)>>4)<<1);
m_music_H=music_15[s_reg];
TMR1H=m_music_H;
s_reg++;
m_music_L=music_15[s_reg];
TMR1L=m_music_L;
ONE_S_F=1;
n++;
}
fSYS();
}
for(n=0;n<51;)
{
if(!ONE_S_F)
{
s_reg=M_MUSIC2[n]&0x0f;
m_music_long=music_long[s_reg];
s_reg=(((M_MUSIC2[n]&0xf0)>>4)<<1);
m_music_H=music_15[s_reg];
TMR1H=m_music_H;
s_reg++;
m_music_L=music_15[s_reg];
TMR1L=m_music_L;
ONE_S_F=1;
n++;
}
fSYS();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -