⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 单片机C语言程序设计实训100例--基于AVR+PROTEUS仿真
💻 C
字号:
//-----------------------------------------------------------------
//  名称: 多首电子音乐的选播
//-----------------------------------------------------------------
//  说明: 本例运行时,每次按下K1将切换播放下一首电子音乐,对应的
//        LED指示灯将被点亮.
//
//-----------------------------------------------------------------
#define F_CPU 1000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define INT8U   unsigned char
#define INT16U  unsigned int

//指示灯控制(任一LED点亮时都会关闭其他指示灯)


//蜂鸣器
#define BEEP() PORTB ^= _BV(PB0)
//音符延时表,它们分别对应于0~15号音符的输出频率
INT16U Tone_Delay_Table[] = 
{


};

//第一段(Tone为音符,Time为节拍)
INT8U Music1_Tone[] =
{ 3,5,5,3,2,1,2,3,5,3,2,3,5,5,3,2,1,2,3,2,1,1,0xFF }; 
INT8U Music1_Time[] = 
{ 2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0xFF }; 
 
//第二段
INT8U Music2_Tone[] =
{ 1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xFF }; 
INT8U Music2_Time[] =
{ 2,1,1,2,1,1,1,2,1,1,3,2,1,1,2,4,1,1,2,1,1,1,0xFF };

//第三段 
INT8U Music3_Tone[] =
{ 0,1,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0xFF}; 
INT8U Music3_Time[] =
{ 1,1,1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1,1,1,1,1,1,1,1,1,0xFF};

//音符与延时指针数组








//音乐片段索引,音符索引
volatile INT8U Music_Idx = 2, Tone_Idx = 0;
//从当前数组中取音符的位置
volatile INT8U i = 0;
//暂停控制
volatile enum bool { FALSE = 0, TRUE = 1 } Pause = TRUE;
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
int main()
{

}

//-----------------------------------------------------------------
// T1定时器溢出中断控制音符输出
//-----------------------------------------------------------------
ISR (TIMER1_OVF_vect)
{


}

//-----------------------------------------------------------------
// 按键触发INT0中断,控制音乐段切换
//-----------------------------------------------------------------
ISR (INT0_vect)
{


}

//-----------------------------------------------------------------
// 播放启动/停止控制
//-----------------------------------------------------------------
ISR (INT1_vect)
{


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -