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

📄 process.lst

📁 用89C2051实现的软PLC。PLC程序存在24C04,用按健输入程序
💻 LST
字号:
C51 COMPILER V6.23a  PROCESS                                                               12/13/2002 12:45:27 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE PROCESS
OBJECT MODULE PLACED IN process.OBJ
COMPILER INVOKED BY: D:\KEIL\C51\BIN\C51.EXE process.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "reg51.h"
   2          
   3          //extern void delay(unsigned int);
   4          extern unsigned char old_data,key,pc,intr[6];
   5          sbit Inc = P1^0;
   6          sbit Dec = P1^1;
   7          sbit DA  = P1^2;
   8          sbit Wri = P3^2;
   9          bit I2c_Read(unsigned char,unsigned char);
  10          void On_Light(unsigned char,bit,unsigned char);
  11          void delay(unsigned int);
  12          unsigned int input(void);
  13          unsigned char temp,pc_bak =0 ;
  14          bit light_on = 0,jump,cmp_bit,time_out;
  15          
  16          void Process(void)
  17          {
  18   1           
  19   1           unsigned char i;
  20   1               unsigned int temp_in;
  21   1               pc = 0;
  22   1               old_data = 0x00;
  23   1               key = 0xff;
  24   1      
  25   1               while(1)
  26   1           { 
  27   2             I2c_Read(pc++,1); 
  28   2             switch(intr[0]) {
  29   3                              case 0x00 :  I2c_Read(pc++,1);      
  30   3                                                                   temp = 0x80;
  31   3                                                                               temp = temp >> intr[0];
  32   3                                                                               key = ~temp & key;
  33   3                                           On_Light(old_data,0,key);
  34   3                                                                               break;
  35   3      
  36   3                              case 0x01 :  I2c_Read(pc++,1);
  37   3                                           temp = 0x80;
  38   3                                                       temp = temp >> intr[0];
  39   3                                                                               key = temp | key;
  40   3                                                                               On_Light(old_data,0,key);
  41   3                                           break;
  42   3      
  43   3                                                      case 0x04 :  I2c_Read(pc++,1);
  44   3                                                                   old_data = intr[0];
  45   3                                                                               On_Light(old_data,0,key);
  46   3                                                                               break;
  47   3      
  48   3                              case 0x05 :  I2c_Read(pc++,1);
  49   3                                                                   if (intr[0] == 0)
  50   3                                                                                   light_on = 0;
  51   3                                                                               else 
  52   3                                                                                   light_on = 1;
  53   3                                                                               On_Light(old_data,0,key);
  54   3                                                                               break;
  55   3      
C51 COMPILER V6.23a  PROCESS                                                               12/13/2002 12:45:27 PAGE 2   

  56   3                                                  case 0x06 :  I2c_Read(pc++,1);
  57   3                                                                   old_data += intr[0];
  58   3                                                                               On_Light(old_data,0,key);
  59   3                                                                               break;
  60   3      
  61   3                                                  case 0x07 :  I2c_Read(pc++,1);
  62   3                                                                   old_data -= intr[0];
  63   3                                                                               On_Light(old_data,0,key);
  64   3                                                                               break;
  65   3      
  66   3                                                      case 0x10 :  I2c_Read(pc++,1);
  67   3                                                                   pc = intr[0];
  68   3                                                                               break;
  69   3      
  70   3                                                  case 0x15 :  while(1);
  71   3                                        
  72   3                                                      case 0x02 :  I2c_Read(pc++,1);
  73   3                                                                   temp = intr[0];
  74   3                                                                               I2c_Read(pc++,1);
  75   3                                                                               for (i = 0;i < temp;i++)
  76   3                                                                               {
  77   4                                                                           if (intr[0] == 0)
  78   4                                                                                           delay(100);
  79   4                                               else if(intr[0] == 1)
  80   4                                                                                           delay(1000);
  81   4                                                                                       else if(intr[0] == 2)
  82   4                                                                                           delay(60000);
  83   4                                                                               }
  84   3                                                                               break;
  85   3                             
  86   3                               case 0x11 : I2c_Read(pc++,1);               //SDZ N,M
  87   3                                           if (old_data == intr[0])
  88   3                                           {
  89   4                                              I2c_Read(pc++,1);
  90   4                                              pc = intr[0];
  91   4                                           }
  92   3                                           else 
  93   3                                              pc++;  
  94   3                                           break;
  95   3      
  96   3                               case 0x12 : I2c_Read(pc++,1);               //DY N
  97   3                                           pc_bak = pc;
  98   3                                           pc = intr[0];
  99   3                                           break;
 100   3      
 101   3                               case 0x13 : pc = pc_bak;                    //FH
 102   3                                           break;          
 103   3             
 104   3                               case 0x09 : cmp_bit = 0;
 105   3                                                                   goto aaa;
 106   3                               case 0x08 : cmp_bit = 1;
 107   3                                                               aaa:jump = 0;
 108   3                                                                   I2c_Read(pc++,1);
 109   3                                                                   if (intr[0] <= 10)
 110   3                                                                   {
 111   4                                                              temp_in = input(); 
 112   4                                              // while(1)    {  temp_in = input(); On_Light((unsigned char )temp
             -_in ,0,0);  delay(1000); temp_in = temp_in >> 8 ;On_Light((unsigned char) temp_in,0,0);delay(1000);}                    
             -                   
 113   4                                                                                  if ((temp_in & (1 << intr[0])) == cmp_bit)
 114   4                                                 jump = 1;
 115   4                                                                                }
C51 COMPILER V6.23a  PROCESS                                                               12/13/2002 12:45:27 PAGE 3   

 116   3                                                                                else
 117   3                                                                                   switch(intr[0])
 118   3                                                                                                   {
 119   4                                                                                                                  case 11 : if (Inc == cmp_bit)
 120   4                                                                                                        jump = 1;
 121   4                                                                                                                        break;
 122   4                                                                                                                      case 12 : if (Dec == cmp_bit)
 123   4                                                                                                                                jump = 1;
 124   4                                                                                                                                        break;
 125   4                                                                                                                      case 13 : if (DA == cmp_bit)
 126   4                                                                                                                                jump = 1;
 127   4                                                                                                                                        break;
 128   4                                                                                                                      case 14 : if (Wri == cmp_bit)
 129   4                                                                                                                                jump = 1;
 130   4                                                                                                                                        break;
 131   4                                                                                                                      case 15 : if (time_out == cmp_bit)
 132   4                                                                                                                                jump = 1;
 133   4                                                                                                                                        break;                                                                                                                     
 134   4                                                                                                                } 
 135   3        
 136   3                                                                                      if (jump == 1)
 137   3                                                                                              {
 138   4                                                                                  I2c_Read(pc++,1);
 139   4                                                                                                      pc = intr[0];
 140   4                                                                                              }
 141   3                                                                                              else
 142   3                                                                                                  pc++;
 143   3      
 144   3                                                                           
 145   3                              }
 146   2               }
 147   1      
 148   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    610    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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