smgzyxs.lst

来自「RZ-51V20 实例程序」· LST 代码 · 共 171 行

LST
171
字号
C51 COMPILER V8.18   SMGZYXS                                                               01/06/2010 20:50:46 PAGE 1   


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

line level    source

   1          #include <reg52.h>       //51芯片管脚定义头文件
   2          
   3          typedef   unsigned char  uchar; 
   4          typedef   unsigned int   uint;
   5          
   6          uchar code ledcode[11] =
   7              {
   8                0xC0,0xF9,0xA4,0xB0,0x99,
   9                0x92,0x82,0xF8,0x80,0x90,0xff 
  10              };
  11                                 
  12          uchar data display[8];
  13          
  14          uchar  shift,n,num ;
  15          
  16          /**********************************************************
  17          
  18          延时函数
  19          
  20          **********************************************************/
  21          void delayms(uint ms) 
  22          {
  23   1         uchar t;
  24   1         while(ms--)
  25   1         { 
  26   2           for(t = 0; t < 114; t++);
  27   2         }
  28   1      }
  29          
  30          /**********************************************************
  31          
  32          显存单元初始化子函数
  33          
  34          **********************************************************/
  35          void  init_data(void)
  36          {
  37   1         uchar  i;
  38   1      
  39   1         for(i=0; i<8; i++)
  40   1         display[i] = 0x0a;        //写入熄灭代码
  41   1      }
  42          
  43          /**********************************************************
  44          
  45          数据交换子函数 1  (向左移动)
  46          
  47          **********************************************************/
  48          void  exchange1()
  49          {
  50   1         uchar  i;
  51   1      
  52   1         for(i=7; i>0; i--) 
  53   1         display[i] = display[i-1]; //低位单元向高位单元传输数据
  54   1         
  55   1         display[0] = num+1;        //写入数据“1-8”
C51 COMPILER V8.18   SMGZYXS                                                               01/06/2010 20:50:46 PAGE 2   

  56   1      }
  57          
  58          /**********************************************************
  59          
  60          数据交换子函数 2  (向左移动)
  61          
  62          **********************************************************/
  63          void  exchange2()
  64          {
  65   1         uchar  i;
  66   1      
  67   1         for(i=7; i>0; i--) 
  68   1         display[i] = display[i-1]; //低位单元向高位单元传输数据
  69   1      
  70   1         display[0] = 0x0a;         //写入熄灭代码
  71   1      }
  72          
  73          /**********************************************************
  74          
  75          主函数
  76          
  77          **********************************************************/
  78          void  main(void)
  79          {
  80   1         P0=0xff;
  81   1         P2=0xff;
  82   1         n=0;
  83   1         num = 0;
  84   1         shift=0x7f;           //位码初值
  85   1      
  86   1         T2CON = 0x00;         //设置T2CON寄存器
  87   1         TH2 = 0xfc;           //1ms定时
  88   1         TL2 = 0x66;
  89   1         ET2 = 1;              //启用Timer2中断
  90   1         EA = 1;               //总中断允许
  91   1         TR2 = 1;              //启动定时器2
  92   1      
  93   1         while(1)
  94   1         { 
  95   2           init_data();
  96   2      
  97   2           while(num<8)
  98   2           {
  99   3             exchange1();      //数据交换
 100   3             delayms(500);    //调整移动速度
 101   3             num++;            //计数值加1
 102   3           }
 103   2           
 104   2           num = 0;            //清计数单元
 105   2           delayms(1000);      //调整停留速度
 106   2           
 107   2           while(num<8)
 108   2           {
 109   3             exchange2();      //数据交换
 110   3             delayms(500);    //调整移动速度
 111   3             num++;            //计数值加1
 112   3           }
 113   2           num = 0;            //清计数单元
 114   2         }
 115   1      }
 116          
 117          /**********************************************************
C51 COMPILER V8.18   SMGZYXS                                                               01/06/2010 20:50:46 PAGE 3   

 118          
 119          中断服务子函数
 120          
 121          **********************************************************/ 
 122          void  timer2() interrupt 5
 123          {
 124   1         TF2 = 0;                  //手工清中断标志  
 125   1         TH2 = 0xfc;               //1ms定时常数
 126   1         TL2 = 0x66;
 127   1      
 128   1         if(n >= 8)                //8位数码管显示
 129   1         {
 130   2           n=0;
 131   2           shift=0x7f;             //位码初值
 132   2           P2 = 0xff;              //关闭显示
 133   2         }
 134   1         else
 135   1         {
 136   2           P0=ledcode[display[n]]; //送段码
 137   2           P2=shift;               //送位码
 138   2           shift=shift>>1|0x80;    //修改位码
 139   2           n++;
 140   2         }
 141   1      }
 142          
 143          /*********************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    238    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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