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

📄 rudongbeng.lss

📁 这个是我们刚刚批量生产的工业蠕动泵的控制程序。单片机采用AVR系列单片机。该蠕动泵采用直流电机控制。主要根据用户设定的控制时间以及通断时间控制蠕动泵的出水量。程序内包含的自动模式和手动模式
💻 LSS
📖 第 1 页 / 共 4 页
字号:
	{
		keyLargeSubStatus=KEY_PRESS;
		if(keyLargeSubCounter<200)keyLargeSubCounter++;
 1fa:	ce 99       	sbic	0x19, 6	; 25
 1fc:	0d c0       	rjmp	.+26     	; 0x218 <keyScanProgram+0xe4>
	}
	//LARGE SUB按键松开
	else 
 1fe:	81 e0       	ldi	r24, 0x01	; 1
 200:	80 93 6e 00 	sts	0x006E, r24
	{
 204:	80 91 6f 00 	lds	r24, 0x006F
 208:	88 3c       	cpi	r24, 0xC8	; 200
 20a:	c0 f4       	brcc	.+48     	; 0x23c <keyScanProgram+0x108>
 20c:	80 91 6f 00 	lds	r24, 0x006F
 210:	8f 5f       	subi	r24, 0xFF	; 255
 212:	80 93 6f 00 	sts	0x006F, r24
 216:	12 c0       	rjmp	.+36     	; 0x23c <keyScanProgram+0x108>
		//按键是曾经是按过的
		if(keyLargeSubStatus==KEY_PRESS)
		{
			//按键有效触发
			if(keyLargeSubCounter>KEY_PRESS_OK)
			{
 218:	80 91 6e 00 	lds	r24, 0x006E
 21c:	81 30       	cpi	r24, 0x01	; 1
 21e:	71 f4       	brne	.+28     	; 0x23c <keyScanProgram+0x108>
				keyLargeSubCounter=0;
				keyLargeSubStatus=KEY_OPEN;
			}
 220:	80 91 6f 00 	lds	r24, 0x006F
 224:	84 30       	cpi	r24, 0x04	; 4
 226:	30 f0       	brcs	.+12     	; 0x234 <keyScanProgram+0x100>
			//无法有效触发
			else
 228:	10 92 6f 00 	sts	0x006F, r1
			{
 22c:	82 e0       	ldi	r24, 0x02	; 2
 22e:	80 93 6e 00 	sts	0x006E, r24
 232:	04 c0       	rjmp	.+8      	; 0x23c <keyScanProgram+0x108>
				keyLargeSubCounter=0;
				keyLargeSubStatus=KEY_WAITING;
			}
		}
	}
 234:	10 92 6f 00 	sts	0x006F, r1

 238:	10 92 6e 00 	sts	0x006E, r1
	/////////////////////////////////////////
	//HAND CONTROL按钮按下
	if(KEY_HAND_CONTROL_SET)

	{
		keyHandControlStatus=KEY_PRESS;
		if(keyHandControlCounter<200)keyHandControlCounter++;
	}
 23c:	b0 99       	sbic	0x16, 0	; 22
 23e:	0d c0       	rjmp	.+26     	; 0x25a <keyScanProgram+0x126>
	//HAND CONTROL按键松开
	else 
	{
 240:	81 e0       	ldi	r24, 0x01	; 1
 242:	80 93 70 00 	sts	0x0070, r24
		//按键是曾经是按过的
 246:	80 91 71 00 	lds	r24, 0x0071
 24a:	88 3c       	cpi	r24, 0xC8	; 200
 24c:	c0 f4       	brcc	.+48     	; 0x27e <keyScanProgram+0x14a>
 24e:	80 91 71 00 	lds	r24, 0x0071
 252:	8f 5f       	subi	r24, 0xFF	; 255
 254:	80 93 71 00 	sts	0x0071, r24
 258:	12 c0       	rjmp	.+36     	; 0x27e <keyScanProgram+0x14a>
		if(keyHandControlStatus==KEY_PRESS)
		{
			//按键有效触发
			if(keyHandControlCounter>KEY_PRESS_OK)
			{
				keyHandControlCounter=0;
 25a:	80 91 70 00 	lds	r24, 0x0070
 25e:	81 30       	cpi	r24, 0x01	; 1
 260:	71 f4       	brne	.+28     	; 0x27e <keyScanProgram+0x14a>
				keyHandControlStatus=KEY_OPEN;
			}
			//无法有效触发
 262:	80 91 71 00 	lds	r24, 0x0071
 266:	84 30       	cpi	r24, 0x04	; 4
 268:	30 f0       	brcs	.+12     	; 0x276 <keyScanProgram+0x142>
			else
			{
 26a:	10 92 71 00 	sts	0x0071, r1
				keyHandControlCounter=0;
 26e:	82 e0       	ldi	r24, 0x02	; 2
 270:	80 93 70 00 	sts	0x0070, r24
 274:	04 c0       	rjmp	.+8      	; 0x27e <keyScanProgram+0x14a>
				keyHandControlStatus=KEY_WAITING;
			}
		}
	}

 276:	10 92 71 00 	sts	0x0071, r1
	/////////////////////////////////////////
 27a:	10 92 70 00 	sts	0x0070, r1
	//HAND AUTO SET按钮按下
	if(KEY_HAND_AUTO_SET)

	{
		keyHandAutoStatus=KEY_PRESS;
		if(keyHandAutoCounter<200)keyHandAutoCounter++;
	}
	//HAND CONTROL按键松开
 27e:	b1 99       	sbic	0x16, 1	; 22
 280:	0d c0       	rjmp	.+26     	; 0x29c <keyScanProgram+0x168>
	else 
	{
		//按键是曾经是按过的
 282:	81 e0       	ldi	r24, 0x01	; 1
 284:	80 93 72 00 	sts	0x0072, r24
		if(keyHandAutoStatus==KEY_PRESS)
 288:	80 91 73 00 	lds	r24, 0x0073
 28c:	88 3c       	cpi	r24, 0xC8	; 200
 28e:	c0 f4       	brcc	.+48     	; 0x2c0 <keyScanProgram+0x18c>
 290:	80 91 73 00 	lds	r24, 0x0073
 294:	8f 5f       	subi	r24, 0xFF	; 255
 296:	80 93 73 00 	sts	0x0073, r24
 29a:	12 c0       	rjmp	.+36     	; 0x2c0 <keyScanProgram+0x18c>
		{
			//按键有效触发
			if(keyHandAutoCounter>KEY_PRESS_OK)
			{
				keyHandAutoCounter=0;
				keyHandAutoStatus=KEY_OPEN;
 29c:	80 91 72 00 	lds	r24, 0x0072
 2a0:	81 30       	cpi	r24, 0x01	; 1
 2a2:	71 f4       	brne	.+28     	; 0x2c0 <keyScanProgram+0x18c>
			}
			//无法有效触发
			else
 2a4:	80 91 73 00 	lds	r24, 0x0073
 2a8:	84 30       	cpi	r24, 0x04	; 4
 2aa:	30 f0       	brcs	.+12     	; 0x2b8 <keyScanProgram+0x184>
			{
				keyHandAutoCounter=0;
 2ac:	10 92 73 00 	sts	0x0073, r1
				keyHandAutoStatus=KEY_WAITING;
 2b0:	82 e0       	ldi	r24, 0x02	; 2
 2b2:	80 93 72 00 	sts	0x0072, r24
 2b6:	04 c0       	rjmp	.+8      	; 0x2c0 <keyScanProgram+0x18c>
			}
		}
	}

	/////////////////////////////////////////
 2b8:	10 92 73 00 	sts	0x0073, r1
	//TIME SWITCH按钮按下
 2bc:	10 92 72 00 	sts	0x0072, r1
	if(KEY_TIME_SWITCH_SET)
	{
		keyTimeSwitchStatus=KEY_PRESS;
		if(keyTimeSwitchCounter<200)keyTimeSwitchCounter++;
	}
	//TIME SWITCH按键松开
	else 
	{
 2c0:	b2 99       	sbic	0x16, 2	; 22
 2c2:	0d c0       	rjmp	.+26     	; 0x2de <keyScanProgram+0x1aa>
		//按键是曾经是按过的
		if(keyTimeSwitchStatus==KEY_PRESS)
 2c4:	81 e0       	ldi	r24, 0x01	; 1
 2c6:	80 93 74 00 	sts	0x0074, r24
		{
 2ca:	80 91 75 00 	lds	r24, 0x0075
 2ce:	88 3c       	cpi	r24, 0xC8	; 200
 2d0:	c0 f4       	brcc	.+48     	; 0x302 <keyScanProgram+0x1ce>
 2d2:	80 91 75 00 	lds	r24, 0x0075
 2d6:	8f 5f       	subi	r24, 0xFF	; 255
 2d8:	80 93 75 00 	sts	0x0075, r24
 2dc:	12 c0       	rjmp	.+36     	; 0x302 <keyScanProgram+0x1ce>
			//按键有效触发
			if(keyTimeSwitchCounter>KEY_PRESS_OK)
			{
				keyTimeSwitchCounter=0;
				keyTimeSwitchStatus=KEY_OPEN;
			}
 2de:	80 91 74 00 	lds	r24, 0x0074
 2e2:	81 30       	cpi	r24, 0x01	; 1
 2e4:	71 f4       	brne	.+28     	; 0x302 <keyScanProgram+0x1ce>
			//无法有效触发
			else
			{
 2e6:	80 91 75 00 	lds	r24, 0x0075
 2ea:	84 30       	cpi	r24, 0x04	; 4
 2ec:	30 f0       	brcs	.+12     	; 0x2fa <keyScanProgram+0x1c6>
				keyTimeSwitchCounter=0;
				keyTimeSwitchStatus=KEY_WAITING;
 2ee:	10 92 75 00 	sts	0x0075, r1
			}
 2f2:	82 e0       	ldi	r24, 0x02	; 2
 2f4:	80 93 74 00 	sts	0x0074, r24
 2f8:	04 c0       	rjmp	.+8      	; 0x302 <keyScanProgram+0x1ce>
		}
	}

	/////////////////////////////////////////

 2fa:	10 92 75 00 	sts	0x0075, r1
	//RESET按钮按下
 2fe:	10 92 74 00 	sts	0x0074, r1
	if(KEY_DORESET_SET)
	{
		
		keyResetStatus=KEY_PRESS;
		if(keyResetCounter<65500)keyResetCounter++;
	}
	//TIME SWITCH按键松开
	else 
	{	
 302:	b3 99       	sbic	0x16, 3	; 22
 304:	14 c0       	rjmp	.+40     	; 0x32e <keyScanProgram+0x1fa>
		//按键是曾经是按过的
		if(keyResetStatus==KEY_PRESS)
		{
 306:	81 e0       	ldi	r24, 0x01	; 1
 308:	80 93 76 00 	sts	0x0076, r24
			//reset按键长按触发
 30c:	80 91 77 00 	lds	r24, 0x0077
 310:	90 91 78 00 	lds	r25, 0x0078
 314:	8c 5d       	subi	r24, 0xDC	; 220
 316:	9f 4f       	sbci	r25, 0xFF	; 255
 318:	a0 f5       	brcc	.+104    	; 0x382 <keyScanProgram+0x24e>
 31a:	80 91 77 00 	lds	r24, 0x0077
 31e:	90 91 78 00 	lds	r25, 0x0078
 322:	01 96       	adiw	r24, 0x01	; 1
 324:	90 93 78 00 	sts	0x0078, r25
 328:	80 93 77 00 	sts	0x0077, r24
 32c:	08 95       	ret
			if(keyResetCounter>KEY_RESET_LONG)
			{
				keyResetCounter=0;
				keyResetStatus=KEY_TIME_LONG;
				LED3_ON();
			}
 32e:	80 91 76 00 	lds	r24, 0x0076
 332:	81 30       	cpi	r24, 0x01	; 1
 334:	31 f5       	brne	.+76     	; 0x382 <keyScanProgram+0x24e>
			//reset按键短按触发
			else if(keyResetCounter>KEY_RESET_SHORT)
			//else if(keyResetCounter>KEY_PRESS_OK)
 336:	80 91 77 00 	lds	r24, 0x0077
 33a:	90 91 78 00 	lds	r25, 0x0078
 33e:	81 52       	subi	r24, 0x21	; 33
 340:	93 40       	sbci	r25, 0x03	; 3
 342:	48 f0       	brcs	.+18     	; 0x356 <keyScanProgram+0x222>
			{
				keyResetCounter=0;
 344:	10 92 78 00 	sts	0x0078, r1
 348:	10 92 77 00 	sts	0x0077, r1
				keyResetStatus=KEY_TIME_SHORT;
 34c:	84 e0       	ldi	r24, 0x04	; 4
 34e:	80 93 76 00 	sts	0x0076, r24
				LED3_OFF();
 352:	97 9a       	sbi	0x12, 7	; 18
 354:	08 95       	ret
				
			}
			//无法有效触发
 356:	80 91 77 00 	lds	r24, 0x0077
 35a:	90 91 78 00 	lds	r25, 0x0078
 35e:	89 3c       	cpi	r24, 0xC9	; 201
 360:	91 05       	cpc	r25, r1
 362:	48 f0       	brcs	.+18     	; 0x376 <keyScanProgram+0x242>
			else 
			{
				keyResetCounter=0;
 364:	10 92 78 00 	sts	0x0078, r1
 368:	10 92 77 00 	sts	0x0077, r1
				keyResetStatus=KEY_WAITING;
 36c:	83 e0       	ldi	r24, 0x03	; 3
 36e:	80 93 76 00 	sts	0x0076, r24
			}
 372:	97 98       	cbi	0x12, 7	; 18
 374:	08 95       	ret
		}
	}

}


 376:	10 92 78 00 	sts	0x0078, r1
 37a:	10 92 77 00 	sts	0x0077, r1

 37e:	10 92 76 00 	sts	0x0076, r1
 382:	08 95       	ret

00000384 <keyProcess>:

/*********************************************************
//按键处理程序
//假定时间单位是100ms
//假定运行时间以及间隔时间单位都是100ms
*********************************************************/
void keyProcess(void)
{
	//按键TINY ADD松开了
	if(keyTinyAddStatus==KEY_OPEN)
	{
		//微调运行时间,增量为100ms
		if(timeSetMode==TIME_SET_WORK)
		{
			if(outputWorkTimeSetting<65530)outputWorkTimeSetting+=1;
			unionData.intData=outputWorkTimeSetting;
 384:	80 91 68 00 	lds	r24, 0x0068
 388:	82 30       	cpi	r24, 0x02	; 2
 38a:	09 f0       	breq	.+2      	; 0x38e <keyProcess+0xa>
 38c:	55 c0       	rjmp	.+170    	; 0x438 <keyProcess+0xb4>
			dataSaveBuffer[WORK_TIME_HIGH]=unionData.charData[0];
			dataSaveBuffer[WORK_TIME_LOW]=unionData.charData[1];
			
		}
		else //if(timeSetMode==TIME_SET_STOP)
 38e:	80 91 86 00 	lds	r24, 0x0086
 392:	88 23       	and	r24, r24
 394:	09 f5       	brne	.+66     	; 0x3d8 <keyProcess+0x54>
		{
			if(outputStopTimeSetting<65530)outputStopTimeSetting+=1;
 396:	80 91 7c 00 	lds	r24, 0x007C
 39a:	90 91 7d 00 	lds	r25, 0x007D
 39e:	8a 5f       	subi	r24, 0xFA	; 250
 3a0:	9f 4f       	sbci	r25, 0xFF	; 255
 3a2:	48 f4       	brcc	.+18     	; 0x3b6 <keyProcess+0x32>
 3a4:	80 91 7c 00 	lds	r24, 0x007C
 3a8:	90 91 7d 00 	lds	r25, 0x007D
 3ac:	01 96       	adiw	r24, 0x01	; 1
 3ae:	90 93 7d 00 	sts	0x007D, r25
 3b2:	80 93 7c 00 	sts	0x007C, r24
			unionData.intData=outputStopTimeSetting;
 3b6:	80 91 7c 00 	lds	r24, 0x007C
 3ba:	90 91 7d 00 	lds	r25, 0x007D
 3be:	90 93 98 00 	sts	0x0098, r25
 3c2:	80 93 97 00 	sts	0x0097, r24
			dataSaveBuffer[STOP_TIME_HIGH]=unionData.charData[0];
 3c6:	80 91 97 00 	lds	r24, 0x0097
 3ca:	80 93 8b 00 	sts	0x008B, r24
			dataSaveBuffer[STOP_TIME_LOW]=unionData.charData[1];
 3ce:	80 91 98 00 	lds	r24, 0x0098
 3d2:	80 93 8c 00 	sts	0x008C, r24
 3d6:	20 c0       	rjmp	.+64     	; 0x418 <keyProcess+0x94>
		}
		writeEEPROM(dataSaveBuffer,1);
		timeSwitchTimeCounter=200;
		unitTimeCounter=600;
		keyTinyAddStatus=KEY_WAITING;
 3d8:	80 91 80 00 	lds	r24, 0x0080
 3dc:	90 91 81 00 	lds	r25, 0x0081
 3e0:	8a 5f       	subi	r24, 0xFA	; 250
 3e2:	9f 4f       	sbci	r25, 0xFF	; 255
 3e4:	48 f4       	brcc	.+18     	; 0x3f8 <keyProcess+0x74>
 3e6:	80 91 80 00 	lds	r24, 0x0080
 3ea:	90 91 81 00 	lds	r25, 0x0081
 3ee:	01 96       	adiw	r24, 0x01	; 1
 3f0:	90 93 81 00 	sts	0x0081, r25
 3f4:	80 93 80 00 	sts	0x0080, r24
	}
 3f8:	80 91 80 00 	lds	r24, 0x0080
 3fc:	90 91 81 00 	lds	r25, 0x0081
 400:	90 93 98 00 	sts	0x0098, r25
 404:	80 93 97 00 	sts	0x0097, r24

 408:	80 91 97 00 	lds	r24, 0x0097
 40c:	80 93 8d 00 	sts	0x008D, r24
	//按键TINY SUB松开了
 410:	80 91 98 00 	lds	r24, 0x0098
 414:	80 93 8e 00 	sts	0x008E, r24
	if(keyTinySubStatus==KEY_OPEN)
	{
 418:	61 e0       	ldi	r22, 0x01	; 1
 41a:	8b e8       	ldi	r24, 0x8B	; 139
 41c:	90 e0       	ldi	r25, 0x00	; 0
 41e:	0e 94 49 00 	call	0x92	; 0x92 <writeEEPROM>
		//微调运行时间,减量为100ms
 422:	88 ec       	ldi	r24, 0xC8	; 200
 424:	80 93 8a 00 	sts	0x008A, r24
		if(timeSetMode==TIME_SET_WORK)
 428:	88 e5       	ldi	r24, 0x58	; 88
 42a:	92 e0       	ldi	r25, 0x02	; 2
 42c:	90 93 89 00 	sts	0x0089, r25
 430:	80 93 88 00 	sts	0x0088, r24
		{
 434:	10 92 68 00 	sts	0x0068, r1
			if(outputWorkTimeSetting>0)outputWorkTimeSetting-=1;
			unionData.intData=outputWorkTimeSetting;
			dataSaveBuffer[WORK_TIME_HIGH]=unionData.charData[0];
			dataSaveBuffer[WORK_TIME_LOW]=unionData.charData[1];
 438:	80 91 6a 00 	lds	r24, 0x006A
 43c:	82 30       	cpi	r24, 0x02	; 2
 43e:	09 f0       	breq	.+2      	; 0x442 <keyProcess+0xbe>
 440:	53 c0       	rjmp	.+166    	; 0x4e8 <__stack+0x89>
		}
		else //if(timeSetMode==TIME_SET_STOP)
		{
 442:	80 91 86 00 	lds	r24, 0x0086
 446:	88 23       	and	r24, r24
 448:	01 f5       	brne	.+64     	; 0x48a <__stack+0x2b>
			if(outputStopTimeSetting>0)outputStopTimeSetting-=1;
			unionData.intData=outputStopTimeSetting;
 44a:	80 91 7c 00 	lds	r24, 0x007C
 44e:	90 91 7d 00 	lds	r25, 0x007D
 452:	89 2b       	or	r24, r25
 454:	49 f0       	breq	.+18     	; 0x468 <__stack+0x9>
 456:	80 91 7c 00 	lds	r24, 0x007C
 45a:	90 91 7d 00 	lds	r25, 0x007D
 45e:	01 97       	sbiw	r24, 0x01	; 1
 460:	90 93 7d 00 	sts	0x007D, r25
 464:	80 93 7c 00 	sts	0x007C, r24
			dataSaveBuffer[STOP_TIME_HIGH]=unionData.charData[0];
 468:	80 91 7c 00 	lds	r24, 0x007C
 46c:	90 91 7d 00 	lds	r25, 0x007D
 470:	90 93 98 00 	sts	0x0098, r25
 474:	80 93 97 00 	sts	0x0097, r24
			dataSaveBuffer[STOP_TIME_LOW]=unionData.charData[1];
 478:	80 91 97 00 	lds	r24, 0x0097
 47c:	80 93 8b 00 	sts	0x008B, r24
		}
 480:	80 91 98 00 	lds	r24, 0x0098
 484:	80 93 8c 00 	sts	0x008C, r24
 488:	1f c0       	rjmp	.+62     	; 0x4c8 <__stack+0x69>
		writeEEPROM(dataSaveBuffer,1);
		timeSwitchTimeCounter=200;
		unitTimeCounter=600;
		keyTinySubStatus=KEY_WAITING;
 48a:	80 91 80 00 	lds	r24, 0x0080
 48e:	90 91 81 00 	lds	r25, 0x0081
 492:	89 2b       	or	r24, r25
 494:	49 f0       	breq	.+18     	; 0x4a8 <__stack+0x49>
 496:	80 91 80 00 	lds	r24, 0x0080
 49a:	90 91 81 00 	lds	r25, 0x0081
 49e:	01 97       	sbiw	r24, 0x01	; 1
 4a0:	90 93 81 00 	sts	0x0081, r25
 4a4:	80 93 80 00 	sts	0x0080, r24
	}
 4a8:	80 91 80 00 	lds	r24, 0x0080
 4ac:	90 91 81 00 	lds	r25, 0x0081
 4b0:	90 93 98 00 	sts	0x0098, r25

⌨️ 快捷键说明

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