📄 music.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 + -