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

📄 ei10.lst

📁 单片机在纺织设备上的应用,单片机控制变频器,通过多段速控制,和不同算法,加工不同的绕线形状.
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V6.12  EI10                                                                   01/11/2008 14:04:17 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE EI10
OBJECT MODULE PLACED IN F:\XUYIWU\绕线机\从机1\EI10.OBJ
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE F:\XUYIWU\绕线机\从机1\EI10.C DB SB OE OT(0) 

stmt level    source

   1          
   2          #include <reg52.h>
   3          #include <absacc.h>
   4          #define Address 0x01 //本地址:
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          #define BYTE  unsigned char
   8          #define WORD  unsigned int
   9          #define CS	  01
  10          
  11          #define   CSTIME   10//超时时间
  12          #define   STOP	0x00//停
  13          #define   UPSTEP0	0x08
  14          #define   UPSTEP1	0x01
  15          #define   UPSTEP2	0x02
  16          #define   UPSTEP3	0x03
  17          #define   UPSTEP4	0x04
  18          #define   UPSTEP5	0x05
  19          #define   UPSTEP6	0x06
  20          #define   UPSTEP7	0x07
  21          
  22          #define   DOWNSTEP0	0x88
  23          #define   DOWNSTEP1	0x81
  24          #define   DOWNSTEP2	0x82
  25          #define   DOWNSTEP3	0x83
  26          #define   DOWNSTEP4	0x84
  27          #define   DOWNSTEP5	0x85
  28          #define   DOWNSTEP6	0x86
  29          #define   DOWNSTEP7 0x87
  30          #define	Bsf(bt)		bt = 1;
  31          #define	Bcf(bt)		bt = 0;
  32          
  33          
  34          #define  	KS_IN		X00//上接近开关
  35          #define  	KZ_IN        	X01//下接近开关
  36          #define  	KX_IN        	X02//中接近开关
  37          #define  	KRUN_IN   	X03//运行开关
  38          #define	TIME0_IN	X04//设定绕度1
  39          #define	TIME1_IN	X05//设定绕度2
  40          #define	TIME2_IN	X06//设定绕度3
  41          #define	TIME3_IN	X07//设定绕度4
  42          #define	TIME4_IN	X10//设定绕度5
  43          #define	TIME5_IN	X11//设定绕度6
  44          #define	TIME6_IN	X12//设定绕度7
  45          
  46          #define  	M0_OUT		Y00//正转/停
  47          #define  	M1_OUT		Y01//反转/停
  48          #define  	M2_OUT		Y02//故障清除
  49          #define  	M3_OUT		Y03//多段指令1
  50          #define  	M4_OUT		Y04//多段指令2
  51          #define  	M5_OUT		Y05//多段指令3
  52          #define	BJ_OUT		Y06//
  53          sbit    IN00  =  P2^3;
  54          sbit    IN01  = P3^6;
  55          sbit    IN02  = P3^7;
C51 COMPILER V6.12  EI10                                                                   01/11/2008 14:04:17 PAGE 2   

  56          sbit    IN03  = P3^5;
  57          sbit    IN04  = P3^4;
  58          sbit    IN05  = P3^3;
  59          sbit    IN06  = P3^2;
  60          sbit    IN07  = P1^6;
  61          sbit    IN10  = P1^7;
  62          sbit    IN11  = P1^5;
  63          sbit    IN12  = P1^4;
  64          sbit    OUT00 = P2^4;
  65          sbit    OUT01 = P2^5;
  66          sbit    OUT02 = P2^6;
  67          sbit    OUT03 = P2^7;
  68          sbit    OUT04 = P0^4;
  69          sbit    OUT05 = P0^5;
  70          sbit    OUT06 = P0^3;
  71          sbit    OUT07 = P0^2;
  72          sbit    OUT10 = P0^1;
  73          sbit    OUT11 = P0^0;
  74          sbit    RCK595= P0^7;
  75          sbit    SEG595= P2^0;
  76          sbit    SRCK595=P2^1;
  77          sbit    SC75176= P0^6;
  78          //sbit    SC75176=P2^2;
  79          sbit    WTDCS    = P1^0;
  80          sbit    SOUT  = P1^1;
  81          sbit    SCK   =	P1^2;
  82          sbit    SIN   =	P1^3;
  83          
  84          uchar bdata flag;
  85          uchar bdata X0;//
  86          uchar bdata X1;//
  87          
  88          uchar bdata Y0;//
  89          uchar bdata Y1;//
  90          
  91          
  92          
  93          typedef struct
  94          {
  95          	uchar	AutoStep;//自动步
  96            	uint  	RunMsTick;//运行毫秒滴答
  97            	uchar	RunMsTickFlag;//运行毫秒滴答标志
  98          	uint  	TestMsTick;//测试运行毫秒滴答
  99          
 100            	uint  	SMsTickSave;//保存向上运行毫秒滴答
 101            	uint  	XMsTickSave;//保存向下运行毫秒滴答
 102            	uchar 	XStatus;//下限运行到位
 103            	uchar	SStatus;//上限运行到位
 104            	uchar	ZStatus;//中限运行到位
 105          	uchar	Speed;//速度
 106          	uchar	OverScecond;//超时
 107          	uchar	OverScecondFlag;//超时标志
 108          	uchar 	Run;//开始运行
 109          	uchar	Worm;//报警
 110          	uint           AddStep;//每步加的时间
 111                  void	(*GetStus)();//得到自动运行状态
 112                  void	(*PutCon)();//输出控制
 113                  uint	(*GetAddStep)();//得到步数细分
 114          }SYS,* PSYS;
 115          SYS  	SysAuto;
 116          PSYS 	PSysAuto;
 117          typedef struct
C51 COMPILER V6.12  EI10                                                                   01/11/2008 14:04:17 PAGE 3   

 118          {
 119          	uchar	Step;//自动步
 120            	uint  	UpTime;//运行毫秒滴答
 121            	uchar	UPTimeFlag;//运行毫秒滴答标志
 122          }KEY1,* PKEY1;
 123          KEY1	Key;
 124          PKEY1	PKey;
 125          static unsigned char idata LED[03];//定义X0,X1,RUN ,POWER,STOP,Y0,Y1输出显示
 126          //static unsigned char idata check _at_ 0x80;
 127          sbit     X00     = X0^0;
 128          sbit     X01     = X0^1;
 129          sbit     X02     = X0^2;
 130          sbit     X03     = X0^3;
 131          sbit     X04     = X0^4;
 132          sbit     X05     = X0^5;
 133          sbit     X06     = X0^6;
 134          sbit     X07     = X0^7;
 135          sbit     X10     = X1^0;
 136          sbit     X11     = X1^1;
 137          sbit     X12     = X1^2;
 138          sbit     X13     = X1^3;
 139          sbit     X14     = X1^4;
 140          sbit     X15     = X1^5;
 141          sbit     X16     = X1^6;
 142          sbit     X17     = X1^7;
 143          
 144          ///////////////////////
 145          sbit     Y00     = Y0^0;
 146          sbit     Y01     = Y0^1;
 147          sbit     Y02     = Y0^2;
 148          sbit     Y03     = Y0^3;
 149          sbit     Y04     = Y0^4;
 150          sbit     Y05     = Y0^5;
 151          sbit     Y06     = Y0^6;
 152          sbit     Y07     = Y0^7;
 153          sbit     Y10     = Y1^0;
 154          sbit     Y11     = Y1^1;
 155          sbit     Y12     = Y1^2;
 156          sbit     Y13     = Y1^3;
 157          sbit     Y14     = Y1^4;
 158          sbit     Y15     = Y1^5;
 159          sbit     Y16     = Y1^6;
 160          sbit     Y17     = Y1^7;
 161          sbit     Y03_LED = ACC^0;
 162          sbit     Y04_LED = ACC^1;
 163          sbit     Y05_LED = ACC^2;
 164          sbit     Y06_LED = ACC^3;
 165          sbit     Y07_LED = ACC^4;
 166          sbit     Y11_LED = ACC^5;
 167          sbit     Y10_LED = ACC^6;
 168          sbit     Y00_LED = ACC^7;
 169          ////////////////////////
 170          sbit     POWER_LED=ACC^0;
 171          sbit     RUN_LED = ACC^1;
 172          sbit     STOP_LED =ACC^2;
 173          sbit     Y01_LED = ACC^3;
 174          sbit     Y02_LED = ACC^4;
 175          sbit     X07_LED = ACC^5;
 176          sbit     X06_LED = ACC^6;
 177          sbit     X05_LED = ACC^7;
 178          ////////////////////////
 179          sbit     X04_LED = ACC^0;
C51 COMPILER V6.12  EI10                                                                   01/11/2008 14:04:17 PAGE 4   

 180          sbit     X03_LED = ACC^1;
 181          sbit     X12_LED = ACC^2;
 182          sbit     X11_LED = ACC^3;
 183          sbit     X10_LED = ACC^4;
 184          sbit     X00_LED = ACC^5;
 185          sbit     X01_LED = ACC^6;
 186          sbit     X02_LED = ACC^7;
 187          
 188          
 189          sfr  T2MOD    = 0xC9;
 190          
 191          
 192          void Init();//主程序初始化
 193          void GetKey();//开关输入
 194          void Out();//输出更新
 195          alien void  WDT_EN();
 196          alien uchar UpDate(uchar tt);//更新595汇编模块中的程序
 197          void		Delay(uchar time);//延时1*Xms
 198          void 	AutoRun();//自动运行
 199          void    	GetStus();//得到自动运行状态
 200          void    	PutCon();//输出控制
 201          uint		GetAddStep();//得到步数细分
 202          
 203          
 204          void main()
 205          {
 206   1      	Init();//主程序初始化
 207   1      //	WDT_EN();//开看门狗
 208   1        	Delay(250);//延时250ms
 209   1        	WTDCS=~WTDCS;
 210   1        	Delay(250);//延时250ms
 211   1        	WTDCS=~WTDCS;
 212   1        	Delay(250);//延时250ms
 213   1        	WTDCS=~WTDCS;
 214   1        	Delay(250);//延时250ms
 215   1              PSysAuto = &SysAuto;
 216   1              PSysAuto->GetStus = GetStus;
 217   1      	PSysAuto->PutCon = PutCon;
 218   1      	PSysAuto->GetAddStep = GetAddStep;
 219   1      	PKey = &Key;
 220   1        	while(1)
 221   1      	{
 222   2          		WTDCS=~WTDCS;
 223   2          		GetKey();//开关输入
 224   2          		AutoRun();//自动运行
 225   2          		Out();//输出更新
 226   2        	}
 227   1      }
 228          
 229          
 230          //功能:自动运行
 231          void AutoRun()
 232          {
 233   1      //得到输入信号
 234   1      	PSysAuto->GetStus();
 235   1      	PSysAuto->AddStep = PSysAuto->GetAddStep();//得到步数细分
 236   1      	if(PSysAuto->AutoStep > 6 | PSysAuto->Run == 0 | PSysAuto->Worm == CS)
 237   1      	{
 238   2      		PSysAuto->AutoStep = 0;
 239   2      		if(PSysAuto->Run == 0)
 240   2      		{
 241   3      			PSysAuto->Worm = 0;
C51 COMPILER V6.12  EI10                                                                   01/11/2008 14:04:17 PAGE 5   

 242   3      		}
 243   2        	}
 244   1      
 245   1        	switch(PSysAuto->AutoStep)
 246   1      	{
 247   2      		case 0:
 248   2      			PSysAuto->Speed = STOP;
 249   2      			PSysAuto->AutoStep++;
 250   2      		break;//保护功能
 251   2      		case 1:
 252   2      			if(PSysAuto->XStatus)
 253   2      			{
 254   3         				PSysAuto->AutoStep = 2;
 255   3      			}
 256   2      			else
 257   2      			{
 258   3      				PSysAuto->Speed = DOWNSTEP2;
 259   3      				PSysAuto->OverScecond = CSTIME;
 260   3      				Bcf(PSysAuto->OverScecondFlag);
 261   3                                      PSysAuto->AutoStep++;
 262   3      			}
 263   2      
 264   2          		break;//找初始态Then 系统往下
 265   2          		case 2:
 266   2      			if(PSysAuto->XStatus)
 267   2      			{
 268   3      				PSysAuto->Speed = UPSTEP1;
 269   3      				PSysAuto->TestMsTick = 0;
 270   3      				PSysAuto->OverScecond = CSTIME;
 271   3      				Bcf(PSysAuto->OverScecondFlag);
 272   3      				PSysAuto->AutoStep++;
 273   3      			}
 274   2      			if(PSysAuto->OverScecondFlag)
 275   2      			{
 276   3      				PSysAuto->Worm = CS;
 277   3      				PSysAuto->AutoStep = 0;
 278   3      			}
 279   2          		break;//找到初始态Then 系统往上
 280   2          		case 3:
 281   2      			if(PSysAuto->ZStatus)
 282   2      			{
 283   3      				PSysAuto->SMsTickSave = PSysAuto->TestMsTick;
 284   3      				PSysAuto->Speed = DOWNSTEP2;
 285   3      				PSysAuto->TestMsTick = 0;
 286   3      				PSysAuto->OverScecond = CSTIME;
 287   3      				Bcf(PSysAuto->OverScecondFlag);
 288   3      				PSysAuto->AutoStep++;
 289   3      			}
 290   2      			if(PSysAuto->OverScecondFlag)
 291   2      			{
 292   3      				PSysAuto->Worm = CS;
 293   3      				PSysAuto->AutoStep = 0;
 294   3      			}
 295   2      
 296   2          		break;//得到向上时间then 系统向下
 297   2          		case 4:
 298   2      			if(PSysAuto->XStatus)
 299   2      			{
 300   3      				PSysAuto->XMsTickSave = PSysAuto->TestMsTick;

⌨️ 快捷键说明

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