diff --git a/src/main.c b/src/main.c index 7cdb9bf..c8adfcc 100644 --- a/src/main.c +++ b/src/main.c @@ -14,12 +14,31 @@ #include "led.h" #include "time0.h" +__code u16 toneH[10]={ //音调对应的定时器计数值的高8位 第一个音为低音7 +0XF8,0XF8,0XF9,0XFA,0XFA,0XFB,0XFB,0XFC,0XFC,0XFC +}; +__code u16 toneL[10]={ //音调对应的定时器计数值的低8位 +0X18,0X8C,0X6B,0X15,0X67,0X04,0X90,0X0C,0X44,0XAC +}; + +__code u16 soundtone[42]={ +1,1,5,5,6,6,5,4,4,3,3,2,2,1, +5,5,4,4,3,3,2,5,5,4,4,3,3,2, +1,1,5,5,6,6,5,4,4,3,3,2,2,1 +}; + +__code u16 soundlong[42]={ +1,1,1,1,1,1,2,1,1,1,1,1,1,2, +1,1,1,1,1,1,2,1,1,1,1,1,1,2, +1,1,1,1,1,1,2,1,1,1,1,1,1,2 +}; /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ +u16 tH, tL; void main(void) { @@ -39,10 +58,22 @@ void main(void) // i = rotate_left(i,1); // delay_ms(1000); // 实验三:蜂鸣器 - BEEP=!BEEP; + // BEEP=!BEEP; // delay_10us(100); - time0_delay1ms(1); - + // 实验四:小星星 + for(u8 t=0;t<42;t++) + { + tH=toneH[soundtone[t]]; //提取音调对应的定时器初始值 + tL=toneL[soundtone[t]]; + TH0=tH; //给TH0和TL0赋值 + TL0=tL; + TR0=1; //打开定时器,蜂鸣器发声 + delay_ms(soundlong[t]*500); //延时soundlong[t]指定的时间长度 + TR0=0; + BEEP=0; //蜂鸣器不发声,停顿片刻 + delay_ms(50); + } + delay_ms(2000); // printf("Hello,world!\r\n"); } } @@ -69,8 +100,7 @@ void uart(void) __interrupt (4) //串口通信中断函数 void time0(void) __interrupt (1) //定时器0中断函数 { - static u16 i;//定义静态变量i - TH0=0XFC; //给定时器赋初值,定时1ms - TL0=0X18; - time0_delay_cnt++;//计数器自增 + TH0=tH; //给定时器赋初值,定时1ms + TL0=tL; + BEEP =! BEEP; } \ No newline at end of file