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

📄 pwm2.lst

📁 C8051和CC1100配合使用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 216   1              PCA0CN = 0X40;          //允许PCA计数定时器工作。
 217   1      //      PCA0MD |= 0X04;
 218   1      //      PCA0MD &= ~0X0A;        //频率由TIMER0决定。
 219   1              PCA0MD = 0x04;
 220   1              PCA0CPM1 = 0X42;        //允许PCA比较功能,8位PWM允许。
 221   1              PCA0CPL1 = 0X80;        //
 222   1              PCA0CPH1 = 0X80;        //占空比为50%。
 223   1      }
 224          
 225          //**********************************************************************
 226          //函数名:void Timer0_Init (void)
 227          //功能描述:初始化定时器0,PCA时钟是以定时器0溢出率为时钟的。
 228          //**********************************************************************
 229          void Timer0_Init (void)
 230          {
 231   1              CKCON = 0x01;           // 使用系统时钟4分频
 232   1              TMOD &= ~0x0F;
 233   1              TMOD |= 0x02;           // 8位,方式2
 234   1              ET0 = 0;                //不用进入中断
 235   1              TR0 = 0;                // 停止
 236   1      }
 237          
 238          
 239          //**********************************************************************
 240          //函数名:void Timer1_Init (void)
 241          //功能描述:初始化定时器1
C51 COMPILER V7.08   PWM2                                                                  06/22/2006 10:27:59 PAGE 5   

 242          //**********************************************************************
 243          void Timer1_Init (void)
 244          {
 245   1              CKCON = 0x01;           // 使用系统时钟不分频
 246   1              TMOD &= 0X0F;
 247   1              TMOD |= 0x10;           // 16位定时器。
 248   1              TL1 = TL1S;
 249   1              TH1 = TH1S;             // 
 250   1              ET1 = 1;                // 使能Timer0中断。
 251   1              TR1 = 0;                // 停止
 252   1      }
 253          
 254          /***********************************************************************************
 255          //函数名:void Play(unsigned char m)
 256          //功能描述:发出该音符的声音。
 257          /*********************************************************************************/
 258          void Play(unsigned char m)
 259          {
 260   1              switch(m)
 261   1              {
 262   2                      case 0:
 263   2                              TR0 = 0;
 264   2                              break;
 265   2                      case 1:
 266   2                              TR0 = 0;
 267   2                              TH0 = 195;
 268   2                              TL0 = 195;
 269   2                              TR0 = 1;
 270   2                              break;
 271   2                      case 2:
 272   2                              TR0 = 0;
 273   2                              TH0 = 202;
 274   2                              TL0 = 202;
 275   2                              TR0 = 1;
 276   2                              break;
 277   2                      case 3:
 278   2                              TR0 = 0;
 279   2                              TH0 = 208;
 280   2                              TL0 = 208;
 281   2                              TR0 = 1;
 282   2                              break;
 283   2                      case 4:
 284   2                              TR0 = 0;
 285   2                              TH0 = 211;
 286   2                              TL0 = 211;
 287   2                              TR0 = 1;
 288   2                              break;
 289   2                      case 5:
 290   2                              TR0 = 0;
 291   2                              TH0 = 215;
 292   2                              TL0 = 215;
 293   2                              TR0 = 1;
 294   2                              break;
 295   2                      case 6:
 296   2                              TR0 = 0;
 297   2                              TH0 = 220;
 298   2                              TL0 = 220;
 299   2                              TR0 = 1;
 300   2                              break;
 301   2                      case 7:
 302   2                              TR0 = 0;
 303   2                              TH0 = 222;
C51 COMPILER V7.08   PWM2                                                                  06/22/2006 10:27:59 PAGE 6   

 304   2                              TL0 = 222;
 305   2                              TR0 = 1;
 306   2                              break;
 307   2                      case 8:
 308   2                              TR0 = 0;
 309   2                              TH0 = 225;
 310   2                              TL0 = 225;
 311   2                              TR0 = 1;
 312   2                              break;
 313   2                      case 9:
 314   2                              TR0 = 0;
 315   2                              TH0 = 229;
 316   2                              TL0 = 229;
 317   2                              TR0 = 1;
 318   2                              break;
 319   2                      case 10:
 320   2                              TR0 = 0;
 321   2                              TH0 = 232;
 322   2                              TL0 = 232;
 323   2                              TR0 = 1;
 324   2                              break;
 325   2                      case 11:
 326   2                              TR0 = 0;
 327   2                              TH0 = 233;
 328   2                              TL0 = 233;
 329   2                              TR0 = 1;
 330   2                              break;
 331   2                      case 12:
 332   2                              TR0 = 0;
 333   2                              TH0 = 236;
 334   2                              TL0 = 236;
 335   2                              TR0 = 1;
 336   2                              break;
 337   2                      case 13:
 338   2                              TR0 = 0;
 339   2                              TH0 = 238;
 340   2                              TL0 = 238;
 341   2                              TR0 = 1;
 342   2                              break;
 343   2                      case 14:
 344   2                              TR0 = 0;
 345   2                              TH0 = 239;
 346   2                              TL0 = 239;
 347   2                              TR0 = 1;
 348   2                              break;
 349   2                      case 15:
 350   2                              TR0 = 0;
 351   2                              TH0 = 241;
 352   2                              TL0 = 241;
 353   2                              TR0 = 1;
 354   2                              break;
 355   2              }
 356   1      }
 357          
 358          //**********************************************************************
 359          //函数名:void Timer0_ISR (void) interrupt 1 
 360          //功能描述:定时器0中断函数。
 361          //**********************************************************************
 362          void Timer1_ISR (void) interrupt 3              //18ms
 363          {
 364   1              static unsigned char count;
 365   1              unsigned char temp;
C51 COMPILER V7.08   PWM2                                                                  06/22/2006 10:27:59 PAGE 7   

 366   1              TF1 = 0;
 367   1              TL1 = TL1S;
 368   1              TH1 = TH1S; 
 369   1              if(++count >= 2)
 370   1              {
 371   2                      count = 0;
 372   2                      if(pm == 0)
 373   2                      {       
 374   3                              if(td == 1)                     //停顿
 375   3                              { 
 376   4                                      td = 0;
 377   4                                      temp = tab[gq][music];
 378   4                                      music++;
 379   4                                      if(temp != 0)
 380   4                                      {
 381   5                                              
 382   5                                              pm = temp&0x0f;         //取拍码
 383   5                                              pm *= 10;               //中断为1/4拍的1/10
 384   5                                              temp >>= 4;
 385   5                                              yf = temp&0x0f;         //取音符
 386   5                                              Play(yf);               //该音符的声音
 387   5                                      }
 388   4                                      else
 389   4                                      {
 390   5                                              TR0 = 0;                
 391   5                                              TR1 = 0;                //一首歌曲播完后停止
 392   5              
 393   5                                      }
 394   4                              }
 395   3                              else
 396   3                              {
 397   4                                      td++;
 398   4                                      Play(0);        //停顿1/4拍
 399   4                              }
 400   3                      }
 401   2                      else
 402   2                      {
 403   3                              pm--;
 404   3                              Play(yf);
 405   3                              
 406   3                      }
 407   2              }
 408   1      }                       
 409          main()
 410          {               
 411   1              PCA0MD &= ~0x40;                //关闭看门狗。
 412   1              PORT_Init();                    //端口初始化。
 413   1              Internal_Crystal();             //内部晶体。    
 414   1              Timer0_Init();
 415   1              Timer1_Init();
 416   1              PWMInit();                      //串口初始化。
 417   1      //      CR = 1;                         //开启定时器。
 418   1              EA = 1;
 419   1              gq = 0;
 420   1              TR1 = 1;
 421   1              while(1);
 422   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    469    ----
   CONSTANT SIZE    =   1250    ----
C51 COMPILER V7.08   PWM2                                                                  06/22/2006 10:27:59 PAGE 8   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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