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

📄 tinter.c

📁 电力变电站RTU监控软件(80C196NT单片机) 遥控
💻 C
📖 第 1 页 / 共 5 页
字号:
		asm
		{
		   cmp	   r0, portioa;
		   bne	   Task47;
		}
		Task[48].WaitStatus =Task[48].WaitStatus  | 0x40;//定时到
	      //Task[48].WaitControl=Task[48].WaitControl & 0xBF;//定时到

/* Dbase========Task============================================  */
Task47: 	value=Task[47].Use;// asm eldb	 value,  2350[portid];
		image=Task[47].WaitControl;
		asm
		{
		   bbc	   value,  0,	 Task46;
		   bbs	   image,  7,	 Task47_timer;
		}
		asm br	Task46;
Task47_timer:	portioa=Task[47].TimerCount;
		portioa=portioa-1;
		Task[47].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   Task47_OverPoll;
		}
		portioa=Task[47].TimerLimit;
		if(portioa!=0)
		{
		  Task[47].WaitStatus=Task[47].WaitStatus | 0x80; //定时到
		  Task[47].TimerCount=portioa;//初始化时间基值
		}
Task47_OverPoll:asm
		{
		   bbs	   image,  6,	 Task47_OverWait;
		};
		asm br	Task46;
Task47_OverWait:portioa=Task[47].OverWaitCount;
		portioa=portioa-1;
		Task[47].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   Task46;
		}
		Task[47].WaitStatus =Task[47].WaitStatus  | 0x40;//定时到
	      //Task[47].WaitControl=Task[47].WaitControl & 0xBF;//定时到
/* =============COM===DEVICE==16C550===16C554=======================================  */
Task46: 	value=Task[46].Use;
		image=Task[46].WaitControl;
		asm
		{
		   bbc	   value,  0,	 TASK45;
		   bbs	   image,  7,	 TASK46_timer;
		}
		asm br	TASK45;
TASK46_timer:	portioa=Task[46].TimerCount;
		portioa=portioa-1;
		Task[46].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   TASK46_OverPoll;
		}
		portioa=Task[46].TimerLimit;
		if(portioa!=0)
		{
		  Task[46].WaitStatus=Task[46].WaitStatus | 0x80; //定时到
		  Task[46].TimerCount=portioa;//初始化时间基值
		}
TASK46_OverPoll:asm
		{
		   bbs	   image,  6,	 TASK46_OverWait;
		};
		asm br	TASK45;
TASK46_OverWait:portioa=Task[46].OverWaitCount;
		portioa=portioa-1;
		Task[46].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   TASK45;
		}
		Task[46].WaitStatus =Task[46].WaitStatus   | 0x40;//定时到
	      //Task[46].WaitControl=Task[46].WaitControl  & 0xBF;//定时到
TASK45:
/* =============COM6==TASK==16C554===CSD==================================  */
TASK07: 	value=Task[7].Use;
		image=Task[7].WaitControl;
		asm
		{
		   bbc	   value,  0,	 TASK06;
		   bbs	   image,  7,	 TASK07_timer;
		}
		asm br	TASK06;
TASK07_timer:	portioa=Task[7].TimerCount;
		portioa=portioa-1;
		Task[7].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   TASK07_OverPoll;
		}
		portioa=Task[7].TimerLimit;
		if(portioa!=0)
		{
		  Task[7].WaitStatus=Task[7].WaitStatus | 0x80; //定时到
		  Task[7].TimerCount=portioa;//初始化时间基值
		}
TASK07_OverPoll:asm
		{
		   bbs	   image,  6,	 TASK07_OverWait;
		};
		asm br	TASK06;
TASK07_OverWait:portioa=Task[7].OverWaitCount;
		portioa=portioa-1;
		Task[7].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   TASK06;
		}
		Task[7].WaitStatus =Task[7].WaitStatus	 | 0x40;//定时到
	      //Task[7].WaitControl=Task[7].WaitControl  & 0xBF;//定时到
/* =============COM5===TASK==16C554===CSC=========================================  */
TASK06: 	value=Task[6].Use;
		image=Task[6].WaitControl;
		asm
		{
		   bbc	   value,  0,	 TASK05;
		   bbs	   image,  7,	 TASK06_timer;
		}
		asm br	TASK05;
TASK06_timer:	portioa=Task[6].TimerCount;
		portioa=portioa-1;
		Task[6].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   TASK06_OverPoll;
		}
		portioa=Task[6].TimerLimit;
		if(portioa!=0)
		{
		  Task[6].WaitStatus=Task[6].WaitStatus | 0x80; //定时到
		  Task[6].TimerCount=portioa;//初始化时间基值
		}
TASK06_OverPoll:asm
		{
		   bbs	   image,  6,	 TASK06_OverWait;
		};
		asm br	TASK05;
TASK06_OverWait:portioa=Task[6].OverWaitCount;
		portioa=portioa-1;
		Task[6].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   TASK05;
		}
		Task[6].WaitStatus =Task[6].WaitStatus	 | 0x40;//定时到
	      //Task[6].WaitControl=Task[6].WaitControl  & 0xBF;//定时到
/* =============COM4===TASK==16C554===CSB=========================================  */
TASK05: 	value=Task[5].Use;
		image=Task[5].WaitControl;
		asm
		{
		   bbc	   value,  0,	 TASK04;
		   bbs	   image,  7,	 TASK05_timer;
		}
		asm br	TASK04;
TASK05_timer:	portioa=Task[5].TimerCount;
		portioa=portioa-1;
		Task[5].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   TASK05_OverPoll;
		}
		portioa=Task[5].TimerLimit;
		if(portioa!=0)
		{
		  Task[5].WaitStatus=Task[5].WaitStatus | 0x80; //定时到
		  Task[5].TimerCount=portioa;//初始化时间基值
		}
TASK05_OverPoll:asm
		{
		   bbs	   image,  6,	 TASK05_OverWait;
		};
		asm br	TASK04;
TASK05_OverWait:portioa=Task[5].OverWaitCount;
		portioa=portioa-1;
		Task[5].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   TASK04;
		}
		Task[5].WaitStatus =Task[5].WaitStatus	 | 0x40;//定时到
	      //Task[5].WaitControl=Task[5].WaitControl  & 0xBF;//定时到
/* =============COM3===TASK==16C554===CSA=========================================  */
TASK04: 	value=Task[4].Use;
		image=Task[4].WaitControl;
		asm
		{
		   bbc	   value,  0,	 TASK03;
		   bbs	   image,  7,	 TASK04_timer;
		}
		asm br	TASK03;
TASK04_timer:	portioa=Task[4].TimerCount;
		portioa=portioa-1;
		Task[4].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   TASK04_OverPoll;
		}
		portioa=Task[4].TimerLimit;
		if(portioa!=0)
		{
		  Task[4].WaitStatus=Task[4].WaitStatus | 0x80; //定时到
		  Task[4].TimerCount=portioa;//初始化时间基值
		}
TASK04_OverPoll:asm
		{
		   bbs	   image,  6,	 TASK04_OverWait;
		};
		asm br	TASK03;
TASK04_OverWait:portioa=Task[4].OverWaitCount;
		portioa=portioa-1;
		Task[4].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   TASK03;
		}
		Task[4].WaitStatus =Task[4].WaitStatus	 | 0x40;//定时到
	      //Task[4].WaitControl=Task[4].WaitControl  & 0xBF;//定时到
/* =============COM2===TASK=======16C550===============================  */
TASK03: 	value=Task[3].Use;
		image=Task[3].WaitControl;
		asm
		{
		   bbc	   value,  0,	 TASK02;
		   bbs	   image,  7,	 TASK03_timer;
		}
		asm br	TASK02;
TASK03_timer:	portioa=Task[3].TimerCount;
		portioa=portioa-1;
		Task[3].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   TASK03_OverPoll;
		}
		portioa=Task[3].TimerLimit;
		if(portioa!=0)
		{
		  Task[3].WaitStatus=Task[3].WaitStatus | 0x80; //定时到
		  Task[3].TimerCount=portioa;//初始化时间基值
		}
TASK03_OverPoll:asm
		{
		   bbs	   image,  6,	 TASK03_OverWait;
		};
		asm br	TASK02;
TASK03_OverWait:portioa=Task[3].OverWaitCount;
		portioa=portioa-1;
		Task[3].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   TASK02;
		}
		Task[3].WaitStatus =Task[3].WaitStatus	 | 0x40;//定时到
	      //Task[3].WaitControl=Task[3].WaitControl  & 0xBF;//定时到
/* =============COM1===TASK=========CPU==UART==========================  */
TASK02: 	value=Task[2].Use;
		image=Task[2].WaitControl;
		asm
		{
		   bbc	   value,  0,	 Task01;
		   bbs	   image,  7,	 Task02_timer;
		}
		asm br	Task01;
Task02_timer:	portioa=Task[2].TimerCount;
		portioa=portioa-1;
		Task[2].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   Task02_OverPoll;
		}
		portioa=Task[2].TimerLimit;
		if(portioa!=0)
		{
		  Task[2].WaitStatus=Task[2].WaitStatus | 0x80; //定时到
		  Task[2].TimerCount=portioa;//初始化时间基值
		}
Task02_OverPoll:asm
		{
		   bbs	   image,  6,	 Task02_OverWait;
		};
		asm br	Task01;
Task02_OverWait:portioa=Task[2].OverWaitCount;
		portioa=portioa-1;
		Task[2].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   Task01;
		}
		Task[2].WaitStatus =Task[2].WaitStatus	 | 0x40;//定时到
	      //Task[2].WaitControl=Task[2].WaitControl  & 0xBF;//定时到
/* ========CAN1FRAME==TASK======================================  */
Task01: 	value=Task[1].Use;
		image=Task[1].WaitControl;
		asm
		{
		   bbc	   value,  0,	 Task00;
		   bbs	   image,  7,	 Task01_timer;
		}
		asm br	Task00;
Task01_timer:	portioa=Task[1].TimerCount;
		portioa=portioa-1;
		Task[1].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   Task01_OverPoll;
		}
		portioa=Task[1].TimerLimit;
		if(portioa!=0)
		{
		  Task[1].WaitStatus=Task[1].WaitStatus | 0x80; //定时到
		  Task[1].TimerCount=portioa;//初始化时间基值
		}
Task01_OverPoll:asm
		{
		   bbs	   image,  6,	 Task01_OverWait;
		};
		asm br	Task00;
Task01_OverWait:portioa=Task[1].OverWaitCount;
		portioa=portioa-1;
		Task[1].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   Task00;
		}
		Task[1].WaitStatus =Task[1].WaitStatus	 | 0x40;//定时到
	      //Task[1].WaitControl=Task[1].WaitControl  & 0xBF;//定时到
/* =============CAN0FRAME==TASK======================================  */
Task00: 	value=Task[0].Use;
		image=Task[0].WaitControl;
		asm
		{
		   bbc	   value,  0,	 Taskend;
		   bbs	   image,  7,	 Task00_timer;
		}
		asm br	Taskend;
Task00_timer:	portioa=Task[0].TimerCount;
		portioa=portioa-1;
		Task[0].TimerCount=portioa;
		asm
		{
		   cmp	   r0,portioa;
		   bne	   Task00_OverPoll;
		}
		portioa=Task[0].TimerLimit;
		if(portioa!=0)
		{
		  Task[0].WaitStatus=Task[0].WaitStatus | 0x80; //定时到
		  Task[0].TimerCount=portioa;//初始化时间基值
		}
Task00_OverPoll:asm
		{
		   bbs	   image,  6,	 Task00_OverWait;
		};
		asm br	Taskend;
Task00_OverWait:portioa=Task[0].OverWaitCount;
		portioa=portioa-1;
		Task[0].OverWaitCount=portioa;
		asm
		{
		   cmp	   r0, portioa;
		   bne	   Taskend;
		}
		Task[0].WaitStatus =Task[0].WaitStatus	| 0x40;//定时到
	      //Task[0].WaitControl=Task[0].WaitControl & 0xBF;//定时到
Taskend:	msvalue++;

     if(pVar->Can_clock_fg!=0)
     {

	pVar->Can_ms.Value=pVar->Can_ms.Value+0xfa00;
	if(pVar->Can_ms.VW.HighW>=999)
	{
	   portid=DS_REGA;
	   value=0x26;
	   asm	estb   value,  [portid];
	   portid=DS_REGB;
	   value=0x8E;
	   asm	estb   value,  [portid];

	   value=pVar->Can_second;
	   data=pVar->Can_minute;
	   value++;
	   if(value>=60)
	   {
	     value=0;

⌨️ 快捷键说明

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