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

📄 music.h

📁 音乐程序
💻 H
字号:
/*****************************************************
Project : sound
Version : 1.0
Date    : 2005-7-18
Author  : Liu.Qian
Company : HuanXiang GCT
Comments: Creat
*****************************************************/
#ifndef _SOUND_
#define _SOUND_

#if XTAL > 16000000UL
#error 'XTAL'(XTAL) is greater than 16,000,000 MHz.
#endif

// SPCLK
//#define SPCLK PORTB.5

// 音符频率:音阶高8度=频率×2
//    1,   2,   3,   4,   5,   6,   7  // 音符
//  131, 147, 165, 175, 196, 220, 247  // 低音L
//  262, 294, 330, 350, 392, 440, 494  // 中音M
//  524, 588, 660, 700, 784, 880, 988  // 高音H
// 1048,1176,1320,1400,1568,1760,1976  // 超高S
// 低音L
#define HZ_L_1 131
#define HZ_L_2 147
#define HZ_L_3 165
#define HZ_L_4 175
#define HZ_L_5 196
#define HZ_L_6 220
#define HZ_L_7 247
// 中音M
#define HZ_M_1 262
#define HZ_M_2 294
#define HZ_M_3 330
#define HZ_M_4 350
#define HZ_M_5 392
#define HZ_M_6 440
#define HZ_M_7 494
// 高音H
#define HZ_H_1 524
#define HZ_H_2 588
#define HZ_H_3 660
#define HZ_H_4 700
#define HZ_H_5 784
#define HZ_H_6 880
#define HZ_H_7 988
// 超高S
#define HZ_S_1 1048
#define HZ_S_2 1176
#define HZ_S_3 1320
#define HZ_S_4 1400
#define HZ_S_5 1568
#define HZ_S_6 1760
#define HZ_S_7 1976
// 音符对应OCR1A的值
// 低音
#define NOTE_L_1 (XTAL/(2*HZ_L_1))
#define NOTE_L_2 (XTAL/(2*HZ_L_2))
#define NOTE_L_3 (XTAL/(2*HZ_L_3))
#define NOTE_L_4 (XTAL/(2*HZ_L_4))
#define NOTE_L_5 (XTAL/(2*HZ_L_5))
#define NOTE_L_6 (XTAL/(2*HZ_L_6))
#define NOTE_L_7 (XTAL/(2*HZ_L_7))
// 中音
#define NOTE_M_1 (NOTE_L_1>>1)
#define NOTE_M_2 (NOTE_L_2>>1)
#define NOTE_M_3 (NOTE_L_3>>1)
#define NOTE_M_4 (NOTE_L_4>>1)
#define NOTE_M_5 (NOTE_L_5>>1)
#define NOTE_M_6 (NOTE_L_6>>1)
#define NOTE_M_7 (NOTE_L_7>>1)
// 高音
#define NOTE_H_1 (NOTE_M_1>>1)
#define NOTE_H_2 (NOTE_M_2>>1)
#define NOTE_H_3 (NOTE_M_3>>1)
#define NOTE_H_4 (NOTE_M_4>>1)
#define NOTE_H_5 (NOTE_M_5>>1)
#define NOTE_H_6 (NOTE_M_6>>1)
#define NOTE_H_7 (NOTE_M_7>>1)
// 超高
#define NOTE_S_1 (NOTE_H_1>>1)
#define NOTE_S_2 (NOTE_H_2>>1)
#define NOTE_S_3 (NOTE_H_3>>1)
#define NOTE_S_4 (NOTE_H_4>>1)
#define NOTE_S_5 (NOTE_H_5>>1)
#define NOTE_S_6 (NOTE_H_6>>1)
#define NOTE_S_7 (NOTE_H_7>>1)
// 休止符
#define NOTE_IDLE NOTE_M_1
// 音节32分音符对应的trigle数
#define TIME_BASE 32
// 低音
#define TIME_L_1 (HZ_L_1*2/TIME_BASE)
#define TIME_L_2 (HZ_L_2*2/TIME_BASE)
#define TIME_L_3 (HZ_L_3*2/TIME_BASE)
#define TIME_L_4 (HZ_L_4*2/TIME_BASE)
#define TIME_L_5 (HZ_L_5*2/TIME_BASE)
#define TIME_L_6 (HZ_L_6*2/TIME_BASE)
#define TIME_L_7 (HZ_L_7*2/TIME_BASE)
// 中音
#define TIME_M_1 (HZ_M_1*2/TIME_BASE)
#define TIME_M_2 (HZ_M_2*2/TIME_BASE)
#define TIME_M_3 (HZ_M_3*2/TIME_BASE)
#define TIME_M_4 (HZ_M_4*2/TIME_BASE)
#define TIME_M_5 (HZ_M_5*2/TIME_BASE)
#define TIME_M_6 (HZ_M_6*2/TIME_BASE)
#define TIME_M_7 (HZ_M_7*2/TIME_BASE)
// 高音
#define TIME_H_1 (HZ_H_1*2/TIME_BASE)
#define TIME_H_2 (HZ_H_2*2/TIME_BASE)
#define TIME_H_3 (HZ_H_3*2/TIME_BASE)
#define TIME_H_4 (HZ_H_4*2/TIME_BASE)
#define TIME_H_5 (HZ_H_5*2/TIME_BASE)
#define TIME_H_6 (HZ_H_6*2/TIME_BASE)
#define TIME_H_7 (HZ_H_7*2/TIME_BASE)
// 超高音
#define TIME_S_1 (HZ_S_1*2/TIME_BASE)
#define TIME_S_2 (HZ_S_2*2/TIME_BASE)
#define TIME_S_3 (HZ_S_3*2/TIME_BASE)
#define TIME_S_4 (HZ_S_4*2/TIME_BASE)
#define TIME_S_5 (HZ_S_5*2/TIME_BASE)
#define TIME_S_6 (HZ_S_6*2/TIME_BASE)
#define TIME_S_7 (HZ_S_7*2/TIME_BASE)
// 休止符
#define TIME_IDLE TIME_M_1

// music
// 7:5 - time:0-7; 4:3  - scale:0-3 ; 2:0 - note:0-7
// time : 0 - 1/32 , 1 - 1/16 , 2 - 1/8 , ... , 7 - 4
// scale : 0 - low , 1 - middle , 2 - high , 3 - super high
// note : 0 - idle , 1~7 - 1~7
#define MUSICSIZE 8
#define MT_32 (0x00<<5)
#define MT_16 (0x01<<5)
#define MT_8  (0x02<<5)
#define MT_4  (0x03<<5)
#define MT_2  (0x04<<5)
#define MT_1  (0x05<<5)
#define MT_2X (0x06<<5)
#define MT_4X (0x07<<5)
#define MSL (0x00<<3)
#define MSM (0x01<<3)
#define MSH (0x02<<3)
#define MSS (0x03<<3)

// predefine of sound
#define MT MT_16
#define ML1 MSL|MT|1
#define ML2 MSL|MT|2
#define ML3 MSL|MT|3
#define ML4 MSL|MT|4
#define ML5 MSL|MT|5
#define ML6 MSL|MT|6
#define ML7 MSL|MT|7
#define MM1 MSM|MT|1
#define MM2 MSM|MT|2
#define MM3 MSM|MT|3
#define MM4 MSM|MT|4
#define MM5 MSM|MT|5
#define MM6 MSM|MT|6
#define MM7 MSM|MT|7
#define MH1 MSH|MT|1
#define MH2 MSH|MT|2
#define MH3 MSH|MT|3
#define MH4 MSH|MT|4
#define MH5 MSH|MT|5
#define MH6 MSH|MT|6
#define MH7 MSH|MT|7
#define MS1 MSS|MT|1
#define MS2 MSS|MT|2
#define MS3 MSS|MT|3
#define MS4 MSS|MT|4
#define MS5 MSS|MT|5
#define MS6 MSS|MT|6
#define MS7 MSS|MT|7

extern UI8 gui8_Music[MUSICSIZE];
extern UI8 gui8_MusicPtr;
extern UI16 gui16_MusicTime;

extern void music(void);
extern void badkey(void);
extern void goodkey(void);
extern void musicOK(void);
extern void musicNG(void);
extern void musicRT(void);

extern void bi(void);
extern void du(void);

#define MUSICSTART()   gui8_MusicPtr=0;music()
#define waitmusic() while(TIMSK & 0x10)    // 等待OCR1A中断关闭

#endif
// end of file

⌨️ 快捷键说明

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