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

📄 main.lst

📁 中颖单片机SH88F516例程
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  04/30/2010 21:54:56 PAGE 1   


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

line level    source

   1          /********************************************************************************************************
   2          说明: 使用了外部中断4,定时器中断1,实现了跑马灯程序
   3          本程序通过按键S1改变LED灯工作的数量,按键S2改变LED灯闪烁的频率,实现跑马灯的效果  
   4          要求:打开拨码开关J8
   5          *********************************************************************************************************/
   6          #include <sh88f516.h>
   7          
   8          unsigned char Num,Fnum;
   9          unsigned char Disp;
  10          unsigned char Time0Count;
  11          bit DispFlag; 
  12          void mcu_init();
  13          
  14          main()
  15          {
  16   1      
  17   1              mcu_init();
  18   1                                              
  19   1          while(1)
  20   1              {
  21   2      
  22   2                      if(DispFlag)
  23   2                      {
  24   3                              DispFlag = 0;
  25   3      
  26   3                      P0 = (P0&0xFC) | (Disp&0x03);           //端口0的低2位对应LED灯的D2 D3
  27   3                              P1 = (P1&0x03) | (Disp&0xFC);       //端口1的高6位对应LED灯的D4-D9
  28   3      
  29   3                              Disp <<= 1;
  30   3                              if(CY)
  31   3                                  Disp |= 0x01;
  32   3                      }
  33   2      
  34   2              }
  35   1      
  36   1      }
  37          
  38          
  39          
  40          void mcu_init()
  41          {
  42   1      
  43   1              CLKCON = 0x60;  //系统频率=晶振频率/12
  44   1      
  45   1              P0M0 = 0x00;
  46   1              P0M1 = 0xFF;    //推挽输出模式
  47   1      
  48   1              P1M0 = 0x00;
  49   1              P1M1 = 0xFF;    //推挽输出模式
  50   1      
  51   1              IENC = 0x70;    //0111 0000 外部中断4的选择寄存器,1-打开,0-关闭
  52   1              EXF0 = 0x80;    //上升沿触发
  53   1      
  54   1              TH0 = 0xFA;
  55   1              TL0 = 0x00;     
C51 COMPILER V8.08   MAIN                                                                  04/30/2010 21:54:56 PAGE 2   

  56   1              TMOD = 0x01;    // Timer 0 is 16-bit counter, timer mode
  57   1              ET0 = 1;            //enable timer 0 interrupt
  58   1              TR0 = 1;            //enable timer 0
  59   1      
  60   1              IEN1 = 0x40;    //ELPD EX4  EPWM ESCM    ECMP1 ES1 ECMP0 ESPI    0100 0000
  61   1              EA = 1;                 //开启总中断
  62   1      
  63   1              Num = 0;
  64   1              Fnum = 4;
  65   1              DispFlag = 1;
  66   1              P0 = 0;
  67   1              P1 = 0;
  68   1              P2 =P2 |0x80;
  69   1              Disp = 0x01;
  70   1      
  71   1      
  72   1      }
  73          
  74          void Timer0_int() interrupt 1
  75          {
  76   1              Time0Count++;
  77   1              if(Time0Count>=Fnum)
  78   1              {
  79   2                      Time0Count = 0;
  80   2                      DispFlag = 1;
  81   2              }
  82   1      }
  83          
  84          
  85          void EX4_INT() interrupt 13  //using 2  //外部中断4的中断号为13.
  86          {
  87   1              
  88   1              IEN1 &= 0xBF;
  89   1      
  90   1              if(IF45)                                 //P2.5对应于板子上的S2
  91   1              {       
  92   2                      Fnum--;
  93   2                      if(Fnum==0)
  94   2                          Fnum = 6;
  95   2      
  96   2              }
  97   1      
  98   1              if(IF46)                                 //P2.6对应于板子上的S1
  99   1              {       
 100   2                      Num++;     
 101   2                      if(Num==5)
 102   2                          Num  = 0;
 103   2      
 104   2                      switch(Num)
 105   2                      {
 106   3                          case 0:   Disp = 0x01;
 107   3                                    break;
 108   3                              case 1:   Disp = 0x03;
 109   3                                    break;
 110   3                              case 2:   Disp = 0x0F;
 111   3                                    break;
 112   3                              case 3:   Disp = 0x11;
 113   3                                    break;
 114   3                              case 4:   Disp = 0x55;
 115   3                                    break;
 116   3                              default:  Disp = 0x00;
 117   3                                    break;
C51 COMPILER V8.08   MAIN                                                                  04/30/2010 21:54:56 PAGE 3   

 118   3                      }
 119   2      
 120   2              }
 121   1      
 122   1      
 123   1      
 124   1              EXF1 = 0x00;                     //需要软件清0
 125   1      
 126   1              IEN1 |= 0x40;
 127   1      
 128   1      }
 129          
 130          


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