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

📄 无线遥控音乐.lst

📁 简单的无线遥控音乐制作 采用HC2272
💻 LST
📖 第 1 页 / 共 2 页
字号:
 192                                      0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
 193                                      0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x51,0x41,
 194                                      0x42,0x42,0x44,0x32,0x51,0x61,
 195                                      0x72,0x42,0x44,0x52,0x41,0x31,
 196                                      0x34,0x52,0x41,0x31,0x34,0x52,0x42,
 197                                      0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x71,
 198                                      0x82,0x81,0x71,0x72,0x81,0x71,0x74,0x51,0x41,0x31,
 199                                      0x42,0x41,0x51,0x42,0x31,0x41,0x44,0x52,0x41,0x31,
 200                                      0x34,0x52,0x41,0x31,0x34,0x52,0x42,
 201                                      0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x41,
 202                                      0x82,0x82,0xA2,0x71,0x81,0x72,0x71,0x51,0x41,0x31,
 203                                      0x44,0x41,0x31,0x41,0x51,0x44,0x52,0x52,
 204                                      0x42,0x31,0x34,0x52,0x41,0x31,
 205                                      0x42,0x31,0x34,
 206                                      0xFF};
 207          
 208          
 209          //第八首  偏偏喜欢你                                
 210          unsigned char code song8[]={
 211                                      0XC2,0XB2,
 212                                      0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
 213                                      0XC6,0X12,0XC4,0X12,0XC2,
 214                                      0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
 215                                      0X4C,0X42,0X32,
 216                                      0X74,0X82,0X74,0X82,0X72,
 217                                      0X52,0X41,0X38,0X32,0X42,    
 218                                      0X16,0XC2,0X72,0X52,0X42,0X42,
 219                                      0X3C,0XC2,0XB2,
 220                                      0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
 221                                      0XC6,0X12,0XC4,0X12,0XC2,
 222                                      0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
 223                                      0X4C,0X42,0X32,
 224                                      0X76,0X82,0X74,0X82,0X72,
 225                                      0X53,0X41,0X38,0X32,0X42,
 226                                      0X16,0XC2,0X72,0X52,0X41,0X51,0X12,
 227                                      0XCC,0XC2,0XB2,
 228                                      0X16,0XC2,0X72,0X52,0X42,0X42,
 229                                      0X3C,0X32,0X32,
 230                                      0X26,0X22,0X24,0X42,0X32,
 231                                      0x22,0x12,0x18,0x02,0x52,
 232                                      0X46,0X12,0X44,0X72,0X82,
 233                                      0X5C,0X52,0X52,
 234                                      0X46,0X42,0X74,0X42,0X32,
 235                                      0X36,0X42,0X58,
 236                                      0X82,0X72,0X62,0X52,0X46,0X32,
 237                                      0X3C,0X12,0XB2,
 238                                      0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
 239                                      0XC6,0X12,0XC4,0X12,0XC2,
 240                                      0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
C51 COMPILER V8.02   蝊线_?___乐                                                          12/02/2008 18:41:25 PAGE 5   

 241                                      0X48,0X02,0X42,0X52,0X62,
 242                                      0X76,0X82,0X74,0X82,0X72,
 243                                      0X56,0X41,0X38,0X32,0X22,
 244                                      0X16,0XC2,0X72,0X52,0X42,0X42,
 245                                      0X3C,0X04,0X04,0X04,0X04,
 246                                      0xFF};
 247                    
 248          
 249          unsigned char code* code songs[]={song0,song1,song2,song3,song4,song5,song6,
 250                                            song7,song8}; //指向8首歌
 251          
 252          
 253           /*C调各音符频率与计数初值T的对照表*/
 254          unsigned char code yin[30]={0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,
 255                                      0xFC,0xAC,0xFD,0x09,0xFD,0x34,0xFD,0x82,
 256                                                                  0xFD,0xC8,0xFE,0x06,0xFE,0x22,0xFA,0X15,
 257                                                                  0XFB,0x04,0xFA,0x67,0xFE,0x85}; 
 258                                             
 259          
 260          /*****延时1ms****/
 261          void delay1ms(void)
 262          {
 263   1        unsigned char i,j;
 264   1        for(i=2;i>0;i--)
 265   1        for(j=230;j>0;j--) ;
 266   1      }
 267          
 268          
 269          /*延时1/4拍时间即187ms*/
 270          void  delay187ms()
 271          
 272          {
 273   1       unsigned char i,j;
 274   1       for(i=255;i>0;i--)
 275   1              {
 276   2               for(j=120;j>0;j--)
 277   2                {
 278   3                   if(wl_OK==1) {break;}
 279   3                }
 280   2              }
 281   1      }
 282          
 283          
 284          
 285          
 286          
 287          /******每个音符的发声******/
 288          void timer0() interrupt 1 using 1  //定时器T0
 289          { 
 290   1           TH0=yin[2*l];
 291   1           TL0=yin[2*l+1];
 292   1           SPK = !SPK; 
 293   1      
 294   1      }
 295          
 296          
 297          
 298          /******演奏函数******/
 299          void sing_song()
 300           {  
 301   1         unsigned int data j;    //取码指针
 302   1         unsigned char data i;   //用于循环
C51 COMPILER V8.02   蝊线_?___乐                                                          12/02/2008 18:41:25 PAGE 6   

 303   1         unsigned char data k;   //几个1/4拍
 304   1         wl_OK=0;                //不能少掉!!!!
 305   1         song=songs[song_number];
 306   1         j=0;
 307   1          while(*(song+j)!=0xFF)                     //是否取到结束码
 308   1          {  
 309   2                 if(wl_OK==1){break;}                     //这一句很重要的!!!!!
 310   2             k=*(song+j)&0x0F;                       //后4位为多少个1/4拍
 311   2             l=*(song+j)>>4;                         //song(song+j)[]中所放的每个字节
 312   2                                                     //前4位乘2表示为音符频率在数组yin[]中的位置
 313   2            
 314   2             TH0=yin[2*l];                           //置初值
 315   2             TL0=yin[2*l+1];
 316   2             TR0=1;                                  //起动定时器0
 317   2             if ((yin[2*l]==0xff)&&(yin[2*l+1]==0xff)) //如果取到的都是休止符,则不输出音频
 318   2                 {
 319   3                     TR0=0;SPK=1;
 320   3                      }
 321   2             for(i=k;i>0;--i)     //节拍K为多少就执行多少个1/4拍
 322   2                 {  delay187ms();  } 
 323   2             TR0=0;
 324   2             j++;
 325   2          }                                            //回22222
 326   1       }                                               //回xxxxxx
 327          
 328          /******端口值读取函数*****/                                          
 329           void Getch()
 330          {
 331   1                               
 332   1        P1=0x0f;           //先对P2置数,进行行扫描//
 333   1        if(P1!=0x0f)       //判断端口数据是否变化//
 334   1       {
 335   2         delay1ms();       //软件延时//
 336   2         if(P1!=0x0f)      //确认端口数据变化//
 337   2         {
 338   3           P0=P1;                  //送到P0口显示第几首音乐
 339   3               song_number=P1; //调整音乐曲目
 340   3         }
 341   2        }
 342   1      }
 343          
 344          /*****主函数*****/       
 345           void main()
 346          {
 347   1      
 348   1           EA=1;            //总中断
 349   1           TMOD=0x01;       //timer0工作在方式1
 350   1               IT0=1;           //外部中断0触发方式控制位,下降沿触发
 351   1               ET0=1;           //允许定时器T0中断
 352   1               EX0=1;           //外部中断0(INT0)中断允许位
 353   1               IP=0x01;         //定义外部中断0优先于定时器中断的优先级
 354   1       
 355   1      
 356   1               P0=0x00;
 357   1               
 358   1               wl_OK=0;
 359   1      
 360   1          while(1)
 361   1         {
 362   2          if(wl_OK==1)
 363   2              sing_song();      //演奏
 364   2              else P0=0;                //等待
C51 COMPILER V8.02   蝊线_?___乐                                                          12/02/2008 18:41:25 PAGE 7   

 365   2          }
 366   1      }
 367                          
 368           /*****外部中断*****/
 369          void t0(void) interrupt 0 using 2//外部中断0的函数
 370          {       
 371   1          
 372   1           EA=0;            //关总中断
 373   1               wl_OK=1;                 //接到无线信号
 374   1               Getch();                 //端口扫描
 375   1               EA=1;            //开总中断
 376   1      
 377   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    288    ----
   CONSTANT SIZE    =   1087    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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