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

📄 main.lst

📁 胶印机印刷控制程序
💻 LST
字号:
C51 COMPILER V6.02  MAIN                                                                   01/08/2003 23:22:43 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.OBJ
COMPILER INVOKED BY: C:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE .\main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          
   3          #define STEP_COU	133
   4          
   5          sbit CON_DIR	=	P1^5;
   6          sbit CON_PUL	=	P1^6;
   7          #define DIR_FOR		0
   8          #define DIR_BACK	1
   9          
  10          sbit B_F	=	P3^3;
  11          sbit B_B	=	P3^4;
  12          sbit B_STEP	=	P3^5;
  13          sbit PLC_FOR	=	P1^4;
  14          sbit PLC_BACK	=	P1^3;
  15          sbit PLC_STEP	=	P1^2;
  16          
  17          sbit WDI	=	P3^0;
  18          
  19          unsigned char workMod;
  20          
  21          #define MSG_NONE	0
  22          #define MSG_FOR		1
  23          #define MSG_BACK	2
  24          #define MSG_STEP	3
  25          
  26          #define WORK_NONE	0
  27          #define WORK_FOR	1
  28          #define WORK_BACK	2
  29          #define WORK_STEP	3
  30          
  31          void StepOne();
  32          
  33          bit testFor()
  34          {
  35   1      	unsigned char i;
  36   1      
  37   1      	for(i=0;i<2;i++)
  38   1      	{
  39   2      		if (PLC_FOR==0) return 0;
  40   2      	}
  41   1      	return 1;
  42   1      }
  43          
  44          bit testBack()
  45          {
  46   1      	unsigned char i;
  47   1      
  48   1      	for(i=0;i<2;i++)
  49   1      	{
  50   2      		if (PLC_BACK==0) return 0;
  51   2      	}
  52   1      	return 1;
  53   1      }
  54          
  55          bit testStep()
C51 COMPILER V6.02  MAIN                                                                   01/08/2003 23:22:43 PAGE 2   

  56          {
  57   1      	unsigned char i;
  58   1      
  59   1      	for(i=0;i<100;i++)
  60   1      	{
  61   2      		if (PLC_STEP==0) return 0;
  62   2      	}
  63   1      	return 1;
  64   1      }
  65          
  66          void delay(unsigned long l)
  67          {
  68   1      	while(l!=0)
  69   1      	{
  70   2      		WDI=!WDI;
  71   2      		l--;
  72   2      	}
  73   1      }
  74          
  75          unsigned char getMessage()
  76          {
  77   1      	WDI=!WDI;
  78   1      	B_F=1;
  79   1      	B_B=1;
  80   1      	B_STEP=1;
  81   1      	if (B_F==0)
  82   1      	{
  83   2      		return MSG_FOR;
  84   2      	}
  85   1      	if (B_B==0)
  86   1      	{
  87   2      		return MSG_BACK;
  88   2      	}
  89   1      	if (B_STEP==0)
  90   1      	{
  91   2      		return MSG_STEP;
  92   2      	}
  93   1      	return MSG_NONE;
  94   1      }
  95          
  96          void main()
  97          {
  98   1      	bit b_for,b_back,b_step;
  99   1      
 100   1      	workMod=WORK_NONE;
 101   1      	CON_DIR=DIR_BACK;
 102   1      
 103   1      	while(1)
 104   1      	{
 105   2      		b_for=testFor();
 106   2      		b_back=testBack();
 107   2      		b_step=testStep();
 108   2      		switch(getMessage())
 109   2      		{
 110   3      		case MSG_NONE:
 111   3      			break;
 112   3      		case MSG_FOR:
 113   3      			if(workMod!=WORK_FOR)
 114   3       		    {
 115   4      				workMod=WORK_FOR;
 116   4      				CON_DIR=DIR_FOR;
 117   4      			}
C51 COMPILER V6.02  MAIN                                                                   01/08/2003 23:22:43 PAGE 3   

 118   3      			else
 119   3      			{
 120   4      				workMod=WORK_NONE;
 121   4      			}
 122   3      			delay(10000);
 123   3      			break;
 124   3      		case MSG_BACK:
 125   3      			if(workMod!=WORK_BACK)
 126   3       		    {
 127   4      				workMod=WORK_BACK;
 128   4      				CON_DIR=DIR_BACK;
 129   4      			}
 130   3      			else
 131   3      			{
 132   4      				workMod=WORK_NONE;
 133   4      			}
 134   3      			delay(10000);
 135   3      			break;
 136   3      		case MSG_STEP:
 137   3      			if(workMod==WORK_NONE)
 138   3      			{
 139   4      				workMod=WORK_STEP;
 140   4      				StepOne();
 141   4      				workMod=WORK_NONE;
 142   4      			}
 143   3      			break;
 144   3      		}
 145   2      		if (b_step==1)
 146   2      		{
 147   3      			StepOne();
 148   3      		}
 149   2      		if( (workMod==WORK_NONE) && (b_for==0) && (b_back==0) )
 150   2      		{
 151   3      			CON_PUL=1;
 152   3      		}
 153   2      		else
 154   2      		{
 155   3      			if(b_for==1)
 156   3      			{
 157   4      				CON_DIR=DIR_FOR;
 158   4      			}
 159   3      			else if(b_back==1)
 160   3      			{
 161   4      				CON_DIR=DIR_BACK;
 162   4      			}
 163   3      			CON_PUL=0;
 164   3      			delay(5);
 165   3      			CON_PUL=1;
 166   3      			delay(20);					
 167   3      		}
 168   2      	}
 169   1      }
 170          
 171          void StepOne()
 172          {
 173   1      	unsigned char i;
 174   1      
 175   1      	CON_DIR=DIR_FOR;
 176   1      	for(i=0;i<STEP_COU;i++)
 177   1      	{
 178   2      		WDI=!WDI;
 179   2      		CON_PUL=0;
C51 COMPILER V6.02  MAIN                                                                   01/08/2003 23:22:43 PAGE 4   

 180   2      		delay(5);
 181   2      		CON_PUL=1;
 182   2      		delay(20);					
 183   2      	}
 184   1      	delay(10000);
 185   1      }
 186          
 187          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    310    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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