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

📄 main.lst

📁 运行于51单片机的音乐彩灯源代码
💻 LST
字号:
C51 COMPILER V8.01   MAIN                                                                  05/11/2006 18:37:12 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************************************************************
   2          **                                             Small RTOS(51)
   3          **                                   The Real-Time Kernel(For Keil c51)
   4          **
   5          **                                  (c) Copyright 2002-2003, chenmingji
   6          **                                           All Rights Reserved
   7          **
   8          **                                                  V1.12.0
   9          **
  10          **
  11          **--------------文件信息--------------------------------------------------------------------------------
  12          **文   件   名: ext2.c
  13          **创   建   人: 陈明计
  14          **最后修改日期: 2002年12月30日
  15          **描        述: ext2源代码。
  16          **
  17          **--------------历史版本信息----------------------------------------------------------------------------
  18          ** 创建人: 陈明计
  19          ** 版  本: V0.50
  20          ** 日 期: 2002年2月22日
  21          ** 描 述: 原始版本
  22          **
  23          **------------------------------------------------------------------------------------------------------
  24          ** 修改人: 陈明计
  25          ** 版  本: V1.11.0
  26          ** 日 期: 2003年12月2日
  27          ** 描 述: 删除TaskF代码
  28          **
  29          **------------------------------------------------------------------------------------------------------
  30          ** 修改人: 陈明计
  31          ** 版  本: V1.12.0
  32          ** 日 期: 2003年12月30日
  33          ** 描 述: 无变化
  34          **
  35          **--------------当前版本修订------------------------------------------------------------------------------
  36          ** 修改人: 陈子牙
  37          ** 日 期: 2005年5月10日
  38          ** 描 述: 
  39          **
  40          **------------------------------------------------------------------------------------------------------
  41          ********************************************************************************************************/
  42              
  43          #include<stdlib.h>
  44          #include<string.h>
  45          #include<stdio.h>
  46          #include "..\h\config.h"
  47          
  48          #define  ID_LEDRShow    0 
  49          #define  ID_MusicPlay  1
  50          #define  ID_LEDWtsk    2
  51          #define  ID_MusicSpeak 4
  52          
  53          #define  ID_OSS_W_LED    0
  54          #define  ID_OSS_R_LED    1
  55          #define  ID_OSS_M        2
C51 COMPILER V8.01   MAIN                                                                  05/11/2006 18:37:12 PAGE 2   

  56          
  57          
  58          #define  LED_MAX  20
  59          #define  aLED_MAX 2
  60          char const aLED0[LED_MAX]={0x81,0x42,0x24,0x18,0x24,0x42,0x81,0xc3,0xe7,0xff,0x00,0x00,0xff,0x18,0x3c,0x7e
             -,0xff,0x00,0x00,0x00};
  61          char const aLED1[LED_MAX]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff
             -,0x81,0x00,0x18,0x00};
  62          char const  * aLED[aLED_MAX];
  63          
  64          /************************************************************************************************
  65          函数名:主函数
  66          功能:  启动多任务
  67          作者:  陈子牙
  68          ************************************************************************************************/
  69          
  70                                      void main(void)
  71          {   
  72   1          
  73   1          TMOD = (TMOD & 0xF0) | 0x01;
  74   1          TL0 = 0x00;
  75   1          TH0 = 0x4c;
  76   1          TR0 = 1;
  77   1          ET0 = 1;
  78   1          TF0 = 0;
  79   1          OSStart();
  80   1      }
  81          
  82          //////////////////////////////////////////////////////////////////////////////////////////////
  83          //** 函数名称 :
  84          //** 函数功能 :
  85          //** 入口参数 :             
  86          //** 出口参数 :
  87          //   使用方法 :
  88          //   注意事项 :
  89          //////////////////////////////////////////////////////////////////////////////////////////////
  90                       void   LEDRShow(void)
  91          {char SemRec=0;
  92   1       char ID_led=0;
  93   1       char h_led=0;
  94   1       bit bOK=0;  //为0时允许灯亮  
  95   1        aLED[0]=aLED0;
  96   1        aLED[1]=aLED1;
  97   1        while(1)
  98   1                      {//SPEAK=1;
  99   2               if(bOK==0)
 100   2                       {
 101   3                           if((++h_led)==LED_MAX)
 102   3                           h_led=0;
 103   3                           LED_SHOW=~aLED[ID_led][h_led];
 104   3                       }
 105   2                       OSWait(K_TMO,2);
 106   2                       SemRec=OSSemAccept(ID_OSS_R_LED);
 107   2                       if(SemRec==OS_SEM_OK)
 108   2                       {
 109   3                          ID_led++;  
 110   3                              if(ID_led==aLED_MAX)
 111   3                              {
 112   4                                LED_SHOW=0xff;
 113   4                                bOK=1;
 114   4                              }
 115   3                              if(ID_led==aLED_MAX+1)
C51 COMPILER V8.01   MAIN                                                                  05/11/2006 18:37:12 PAGE 3   

 116   3                              {
 117   4                                 ID_led=0;
 118   4                                 bOK=0;
 119   4                              }
 120   3                        }
 121   2                      }
 122   1      
 123   1      }
 124          //////////////////////////////////////////////////////////////////////////////////////////////
 125          //** 函数名称 :
 126          //** 函数功能 :
 127          //** 入口参数 :             
 128          //** 出口参数 :
 129          //   使用方法 :
 130          //   注意事项 :
 131          //////////////////////////////////////////////////////////////////////////////////////////////
 132                      void    KEYGet(void)
 133          {char key=0;
 134   1      //OSWait(K_TMO,10);
 135   1        OSSemCreate(ID_OSS_W_LED,0);
 136   1        OSSemCreate(ID_OSS_R_LED,0);
 137   1        OSSemCreate(ID_OSS_M,0);
 138   1        //fnKEYInit();
 139   1        while(1)
 140   1                 {//SPEAK=1;
 141   2                      OSWait(K_TMO,2);
 142   2                      key=fnGetKey();
 143   2                      if(key==KEY_W)
 144   2                      {
 145   3                         OSSendSignal(ID_LEDWtsk); 
 146   3                      }
 147   2                      if(key==KEY_R)
 148   2                      {
 149   3                          OSSemPost(ID_OSS_R_LED);  
 150   3                      }
 151   2                      if(key==KEY_M)
 152   2                      {
 153   3                          OSSendSignal(ID_MusicPlay);
 154   3                      }
 155   2                 }
 156   1      
 157   1      
 158   1      }
 159          
 160          //////////////////////////////////////////////////////////////////////////////////////////////
 161          //** 函数名称 :
 162          //** 函数功能 :
 163          //** 入口参数 :             
 164          //** 出口参数 :
 165          //   使用方法 :
 166          //   注意事项 :
 167          //////////////////////////////////////////////////////////////////////////////////////////////
 168           extern  char ID_speak;
 169          extern char const aMusic1[];
 170          extern char const aMusic2[];
 171          extern char const *aMusic[MUSIC_MAX];
 172          extern bit MUSIC_OK;//为1时,不允许播放音乐
 173                     void   MusicPlay(void)
 174          {
 175   1       aMusic[0]=aMusic1;
 176   1       aMusic[1]=aMusic2;
 177   1         while(1)
C51 COMPILER V8.01   MAIN                                                                  05/11/2006 18:37:12 PAGE 4   

 178   1              {// SPEAK=1;
 179   2                         OSWait(K_SIG,0);
 180   2                         if((++ID_speak)==MUSIC_MAX)
 181   2                         {
 182   3                           MUSIC_OK=1;
 183   3                               //ID_speak=0;
 184   3                         }
 185   2                         if(ID_speak==MUSIC_MAX+1)
 186   2                         {
 187   3                               ID_speak=0;
 188   3                               MUSIC_OK=0;
 189   3                         }
 190   2      
 191   2                         OSSendSignal(ID_MusicSpeak);
 192   2                              
 193   2                      }
 194   1      
 195   1      
 196   1      }
 197          
 198                   void    MusicSpeak(void)
 199          {
 200   1        while(1)
 201   1        {     SPEAK=1;
 202   2         OSWait(K_SIG,0);
 203   2         timer1init();
 204   2         Speak();
 205   2         time1stop();
 206   2        }
 207   1      
 208   1      }
 209          //////////////////////////////////////////////////////////////////////////////////////////////
 210          //** 函数名称 :
 211          //** 函数功能 :
 212          //** 入口参数 :             
 213          //** 出口参数 :
 214          //   使用方法 :
 215          //   注意事项 :
 216          //////////////////////////////////////////////////////////////////////////////////////////////
 217          
 218                  void  LEDWtsk(void)
 219          {bit i=1;
 220   1          while(1)
 221   1              { //SPEAK=1;
 222   2                LED_W=i=~i; 
 223   2                OSWait(K_SIG,0);  
 224   2              
 225   2              
 226   2              }
 227   1      
 228   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    280    ----
   CONSTANT SIZE    =     40    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.

C51 COMPILER V8.01   MAIN                                                                  05/11/2006 18:37:12 PAGE 5   


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

⌨️ 快捷键说明

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