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

📄 main.lst

📁 从零开始学51单片机源代码
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  07/02/2012 22:54:48 PAGE 1   


C51 COMPILER V8.08, 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          //main.c
   2          #include <reg51.h> 
   3          
   4          //定义端口寄存器         
   5          sfr P0M0 = 0X93;
   6          sfr P0M1 = 0X94;
   7          sfr P1M0 = 0X91;
   8          sfr P1M1 = 0X92;
   9          sfr P2M0 = 0X95;
  10          sfr P2M1 = 0X96;  
  11          sfr P3M0 = 0Xb1;
  12          sfr P3M1 = 0Xb2; 
  13          
  14          #define fosc 11059200L
  15          #define T0_50ms (65536 - 50000 * ( fosc / 12000000L)) //50ms定时参数 
  16          //以下是各音符对应的T1初值 
  17          unsigned char th1[7] = {0xDD,0xE0,0xE4,0xE6,0xE9,0xEB,0xED}; 
  18          unsigned char tl1[7] = {0x9A,0xE0,0xB2,0x3A,0x0A,0x8C,0xC7};
  19          
  20          unsigned char cnt_int0;//拍子定时计数 
  21          unsigned char current_pitch;//当前输出的音调 
  22          
  23          sbit voice=P0^0; //蜂鸣器发声 
  24          
  25          void init_port()
  26          {
  27   1              //配置P0.0模式为开漏输出 
  28   1              P0M1 = 0x01;
  29   1              P0M0 = 0x01; 
  30   1      }
  31          
  32          void init_timer()
  33          {
  34   1              TMOD = 0X01;    //定时器0模式1,16bit
  35   1              TH0 = T0_50ms >> 8;        //TH0 = T0_50ms / 256
  36   1              TL0 = T0_50ms;                  //TL0 = T0_50ms % 256   
  37   1              ET0 = 1; //允许T0中断
  38   1              
  39   1              TMOD |= 0X10;   //定时器1模式1,16bit 
  40   1              TH1 = th1[0];  //do的频率 
  41   1              TL1 = tl1[0];
  42   1              ET1 = 1; //允许T1中断   
  43   1      }
  44          
  45          //定义延时函数
  46          void ms_delay(unsigned int t)
  47          {
  48   1              unsigned  int  i;
  49   1              for (t; t > 0; t--)     //外层循环t次    
  50   1                      for (i = 110;i > 0; i--)        //内层循环110次            
  51   1                      ;
  52   1      } 
  53          
  54          void Timer0_interrupt() interrupt 1
  55          {
C51 COMPILER V8.08   MAIN                                                                  07/02/2012 22:54:48 PAGE 2   

  56   1              TH0 = T0_50ms >> 8;        //重装初值 
  57   1              TL0 = T0_50ms;
  58   1      
  59   1              cnt_int0++;
  60   1      
  61   1              if (cnt_int0 >=12) //600ms到 
  62   1              {       
  63   2                      cnt_int0=0;
  64   2                      current_pitch++;//音调 +1
  65   2                      if (current_pitch >=7)  //1~7循环 
  66   2                              current_pitch = 1;
  67   2              }
  68   1      }
  69          
  70          void Timer1_interrupt() interrupt 3
  71          {
  72   1              TH1 = th1[current_pitch-1];  //装载音调的频率 
  73   1              TL1 = tl1[current_pitch-1];
  74   1      
  75   1              voice =~voice;
  76   1      }
  77          
  78          main()
  79          {
  80   1              ms_delay(100);
  81   1              cnt_int0 = 0;
  82   1              current_pitch=1;
  83   1              voice=0;
  84   1      
  85   1              init_port();
  86   1              init_timer();
  87   1      
  88   1              EA = 1;//开总中断 
  89   1              TR0 = 1;//启动T0
  90   1              TR1 = 1;//启动T1
  91   1      
  92   1              while(1)
  93   1              {
  94   2              
  95   2              }
  96   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    160    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16    ----
   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 + -