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

📄 rudongbeng.lss

📁 这个是我们刚刚批量生产的工业蠕动泵的控制程序。单片机采用AVR系列单片机。该蠕动泵采用直流电机控制。主要根据用户设定的控制时间以及通断时间控制蠕动泵的出水量。程序内包含的自动模式和手动模式
💻 LSS
📖 第 1 页 / 共 4 页
字号:
 4b4:	80 93 97 00 	sts	0x0097, r24

 4b8:	80 91 97 00 	lds	r24, 0x0097
 4bc:	80 93 8d 00 	sts	0x008D, r24
	//按键LARGE ADD松开了
 4c0:	80 91 98 00 	lds	r24, 0x0098
 4c4:	80 93 8e 00 	sts	0x008E, r24
	if(keyLargeAddStatus==KEY_OPEN)
	{
 4c8:	61 e0       	ldi	r22, 0x01	; 1
 4ca:	8b e8       	ldi	r24, 0x8B	; 139
 4cc:	90 e0       	ldi	r25, 0x00	; 0
 4ce:	0e 94 49 00 	call	0x92	; 0x92 <writeEEPROM>
		//粗调运行时间,增量为100x100ms
 4d2:	88 ec       	ldi	r24, 0xC8	; 200
 4d4:	80 93 8a 00 	sts	0x008A, r24
		if(timeSetMode==TIME_SET_WORK)
 4d8:	88 e5       	ldi	r24, 0x58	; 88
 4da:	92 e0       	ldi	r25, 0x02	; 2
 4dc:	90 93 89 00 	sts	0x0089, r25
 4e0:	80 93 88 00 	sts	0x0088, r24
		{
 4e4:	10 92 6a 00 	sts	0x006A, r1
			if(outputWorkTimeSetting<65430)outputWorkTimeSetting+=100;
			unionData.intData=outputWorkTimeSetting;
			dataSaveBuffer[WORK_TIME_HIGH]=unionData.charData[0];
			dataSaveBuffer[WORK_TIME_LOW]=unionData.charData[1];
 4e8:	80 91 6c 00 	lds	r24, 0x006C
 4ec:	82 30       	cpi	r24, 0x02	; 2
 4ee:	09 f0       	breq	.+2      	; 0x4f2 <__stack+0x93>
 4f0:	57 c0       	rjmp	.+174    	; 0x5a0 <__stack+0x141>
		}
		else //if(timeSetMode==TIME_SET_STOP)
		{
 4f2:	80 91 86 00 	lds	r24, 0x0086
 4f6:	88 23       	and	r24, r24
 4f8:	11 f5       	brne	.+68     	; 0x53e <__stack+0xdf>
			if(outputStopTimeSetting<65430)outputStopTimeSetting+=100;
			unionData.intData=outputStopTimeSetting;
 4fa:	80 91 7c 00 	lds	r24, 0x007C
 4fe:	90 91 7d 00 	lds	r25, 0x007D
 502:	86 59       	subi	r24, 0x96	; 150
 504:	9f 4f       	sbci	r25, 0xFF	; 255
 506:	50 f4       	brcc	.+20     	; 0x51c <__stack+0xbd>
 508:	80 91 7c 00 	lds	r24, 0x007C
 50c:	90 91 7d 00 	lds	r25, 0x007D
 510:	8c 59       	subi	r24, 0x9C	; 156
 512:	9f 4f       	sbci	r25, 0xFF	; 255
 514:	90 93 7d 00 	sts	0x007D, r25
 518:	80 93 7c 00 	sts	0x007C, r24
			dataSaveBuffer[STOP_TIME_HIGH]=unionData.charData[0];
 51c:	80 91 7c 00 	lds	r24, 0x007C
 520:	90 91 7d 00 	lds	r25, 0x007D
 524:	90 93 98 00 	sts	0x0098, r25
 528:	80 93 97 00 	sts	0x0097, r24
			dataSaveBuffer[STOP_TIME_LOW]=unionData.charData[1];
 52c:	80 91 97 00 	lds	r24, 0x0097
 530:	80 93 8b 00 	sts	0x008B, r24
		}
 534:	80 91 98 00 	lds	r24, 0x0098
 538:	80 93 8c 00 	sts	0x008C, r24
 53c:	21 c0       	rjmp	.+66     	; 0x580 <__stack+0x121>
		writeEEPROM(dataSaveBuffer,1);
		timeSwitchTimeCounter=200;
		unitTimeCounter=600;
		keyLargeAddStatus=KEY_WAITING;
 53e:	80 91 80 00 	lds	r24, 0x0080
 542:	90 91 81 00 	lds	r25, 0x0081
 546:	86 59       	subi	r24, 0x96	; 150
 548:	9f 4f       	sbci	r25, 0xFF	; 255
 54a:	50 f4       	brcc	.+20     	; 0x560 <__stack+0x101>
 54c:	80 91 80 00 	lds	r24, 0x0080
 550:	90 91 81 00 	lds	r25, 0x0081
 554:	8c 59       	subi	r24, 0x9C	; 156
 556:	9f 4f       	sbci	r25, 0xFF	; 255
 558:	90 93 81 00 	sts	0x0081, r25
 55c:	80 93 80 00 	sts	0x0080, r24
	}
 560:	80 91 80 00 	lds	r24, 0x0080
 564:	90 91 81 00 	lds	r25, 0x0081
 568:	90 93 98 00 	sts	0x0098, r25
 56c:	80 93 97 00 	sts	0x0097, r24

 570:	80 91 97 00 	lds	r24, 0x0097
 574:	80 93 8d 00 	sts	0x008D, r24
	//按键LARGE SUB松开了
 578:	80 91 98 00 	lds	r24, 0x0098
 57c:	80 93 8e 00 	sts	0x008E, r24
	if(keyLargeSubStatus==KEY_OPEN)
	{
 580:	61 e0       	ldi	r22, 0x01	; 1
 582:	8b e8       	ldi	r24, 0x8B	; 139
 584:	90 e0       	ldi	r25, 0x00	; 0
 586:	0e 94 49 00 	call	0x92	; 0x92 <writeEEPROM>
		//粗调运行时间,减量为100x100ms
 58a:	88 ec       	ldi	r24, 0xC8	; 200
 58c:	80 93 8a 00 	sts	0x008A, r24
		if(timeSetMode==TIME_SET_WORK)
 590:	88 e5       	ldi	r24, 0x58	; 88
 592:	92 e0       	ldi	r25, 0x02	; 2
 594:	90 93 89 00 	sts	0x0089, r25
 598:	80 93 88 00 	sts	0x0088, r24
		{
 59c:	10 92 6c 00 	sts	0x006C, r1
			if(outputWorkTimeSetting>100)outputWorkTimeSetting-=100;
			unionData.intData=outputWorkTimeSetting;
			dataSaveBuffer[WORK_TIME_HIGH]=unionData.charData[0];
			dataSaveBuffer[WORK_TIME_LOW]=unionData.charData[1];
 5a0:	80 91 6e 00 	lds	r24, 0x006E
 5a4:	82 30       	cpi	r24, 0x02	; 2
 5a6:	09 f0       	breq	.+2      	; 0x5aa <__stack+0x14b>
 5a8:	57 c0       	rjmp	.+174    	; 0x658 <__stack+0x1f9>
		}
		else //if(timeSetMode==TIME_SET_STOP)
		{
 5aa:	80 91 86 00 	lds	r24, 0x0086
 5ae:	88 23       	and	r24, r24
 5b0:	11 f5       	brne	.+68     	; 0x5f6 <__stack+0x197>
			if(outputStopTimeSetting>100)outputStopTimeSetting-=100;
			unionData.intData=outputStopTimeSetting;
 5b2:	80 91 7c 00 	lds	r24, 0x007C
 5b6:	90 91 7d 00 	lds	r25, 0x007D
 5ba:	85 36       	cpi	r24, 0x65	; 101
 5bc:	91 05       	cpc	r25, r1
 5be:	50 f0       	brcs	.+20     	; 0x5d4 <__stack+0x175>
 5c0:	80 91 7c 00 	lds	r24, 0x007C
 5c4:	90 91 7d 00 	lds	r25, 0x007D
 5c8:	84 56       	subi	r24, 0x64	; 100
 5ca:	90 40       	sbci	r25, 0x00	; 0
 5cc:	90 93 7d 00 	sts	0x007D, r25
 5d0:	80 93 7c 00 	sts	0x007C, r24
			dataSaveBuffer[STOP_TIME_HIGH]=unionData.charData[0];
 5d4:	80 91 7c 00 	lds	r24, 0x007C
 5d8:	90 91 7d 00 	lds	r25, 0x007D
 5dc:	90 93 98 00 	sts	0x0098, r25
 5e0:	80 93 97 00 	sts	0x0097, r24
			dataSaveBuffer[STOP_TIME_LOW]=unionData.charData[1];
 5e4:	80 91 97 00 	lds	r24, 0x0097
 5e8:	80 93 8b 00 	sts	0x008B, r24
		}
 5ec:	80 91 98 00 	lds	r24, 0x0098
 5f0:	80 93 8c 00 	sts	0x008C, r24
 5f4:	21 c0       	rjmp	.+66     	; 0x638 <__stack+0x1d9>
		writeEEPROM(dataSaveBuffer,1);
		timeSwitchTimeCounter=200;
		unitTimeCounter=600;
		keyLargeSubStatus=KEY_WAITING;
 5f6:	80 91 80 00 	lds	r24, 0x0080
 5fa:	90 91 81 00 	lds	r25, 0x0081
 5fe:	85 36       	cpi	r24, 0x65	; 101
 600:	91 05       	cpc	r25, r1
 602:	50 f0       	brcs	.+20     	; 0x618 <__stack+0x1b9>
 604:	80 91 80 00 	lds	r24, 0x0080
 608:	90 91 81 00 	lds	r25, 0x0081
 60c:	84 56       	subi	r24, 0x64	; 100
 60e:	90 40       	sbci	r25, 0x00	; 0
 610:	90 93 81 00 	sts	0x0081, r25
 614:	80 93 80 00 	sts	0x0080, r24
	}
 618:	80 91 80 00 	lds	r24, 0x0080
 61c:	90 91 81 00 	lds	r25, 0x0081
 620:	90 93 98 00 	sts	0x0098, r25
 624:	80 93 97 00 	sts	0x0097, r24

 628:	80 91 97 00 	lds	r24, 0x0097
 62c:	80 93 8d 00 	sts	0x008D, r24
	//按键HandControl松开了
 630:	80 91 98 00 	lds	r24, 0x0098
 634:	80 93 8e 00 	sts	0x008E, r24
	if(keyHandControlStatus==KEY_OPEN)
	{
 638:	61 e0       	ldi	r22, 0x01	; 1
 63a:	8b e8       	ldi	r24, 0x8B	; 139
 63c:	90 e0       	ldi	r25, 0x00	; 0
 63e:	0e 94 49 00 	call	0x92	; 0x92 <writeEEPROM>
		outPutEnable=1;
 642:	88 ec       	ldi	r24, 0xC8	; 200
 644:	80 93 8a 00 	sts	0x008A, r24
		outputWorkTimeCounter=0;
 648:	88 e5       	ldi	r24, 0x58	; 88
 64a:	92 e0       	ldi	r25, 0x02	; 2
 64c:	90 93 89 00 	sts	0x0089, r25
 650:	80 93 88 00 	sts	0x0088, r24
		outputStopTimeCounter=0;
 654:	10 92 6e 00 	sts	0x006E, r1
		keyHandControlStatus=KEY_WAITING;
		timeSwitchTimeCounter=200;
		unitTimeCounter=600;
	}
 658:	80 91 70 00 	lds	r24, 0x0070
 65c:	82 30       	cpi	r24, 0x02	; 2
 65e:	b1 f4       	brne	.+44     	; 0x68c <__stack+0x22d>

	//按键HandAuto松开了
 660:	81 e0       	ldi	r24, 0x01	; 1
 662:	80 93 82 00 	sts	0x0082, r24
	if(keyHandAutoStatus==KEY_OPEN)
 666:	10 92 7b 00 	sts	0x007B, r1
 66a:	10 92 7a 00 	sts	0x007A, r1
	{
 66e:	10 92 7f 00 	sts	0x007F, r1
 672:	10 92 7e 00 	sts	0x007E, r1
		//假如是自动状态,切换到手动状态
 676:	10 92 70 00 	sts	0x0070, r1
		if(outPutMode==OUTPUT_AUTO)
 67a:	88 ec       	ldi	r24, 0xC8	; 200
 67c:	80 93 8a 00 	sts	0x008A, r24
		{
 680:	88 e5       	ldi	r24, 0x58	; 88
 682:	92 e0       	ldi	r25, 0x02	; 2
 684:	90 93 89 00 	sts	0x0089, r25
 688:	80 93 88 00 	sts	0x0088, r24
			outPutMode=OUTPUT_HAND;
			outPutEnable=1;
			//outputWorkTimeCounter=0;
		    //outputStopTimeCounter=0;
 68c:	80 91 72 00 	lds	r24, 0x0072
 690:	82 30       	cpi	r24, 0x02	; 2
 692:	a1 f4       	brne	.+40     	; 0x6bc <__stack+0x25d>
		}
		//假如是手动状态,切换到自动状态		
		else //if((outPutMode==OUTPUT_HAND))
 694:	80 91 83 00 	lds	r24, 0x0083
 698:	81 30       	cpi	r24, 0x01	; 1
 69a:	19 f4       	brne	.+6      	; 0x6a2 <__stack+0x243>
		{
			outPutMode=OUTPUT_AUTO;
 69c:	10 92 83 00 	sts	0x0083, r1
 6a0:	03 c0       	rjmp	.+6      	; 0x6a8 <__stack+0x249>
			outPutEnable=1;
			//outputWorkTimeCounter=0;
		    //outputStopTimeCounter=0;
		}
		timeSwitchTimeCounter=0;
		unitTimeCounter=0;
		keyHandAutoStatus=KEY_WAITING;
	}
 6a2:	81 e0       	ldi	r24, 0x01	; 1
 6a4:	80 93 83 00 	sts	0x0083, r24

 6a8:	80 93 82 00 	sts	0x0082, r24
	//按键TimeSwitch松开了
	if(keyTimeSwitchStatus==KEY_OPEN)
	{
		//假如是运作时间设置状态,切换到间隔时间设置状态
 6ac:	10 92 8a 00 	sts	0x008A, r1
		if(timeSetMode==TIME_SET_WORK)
 6b0:	10 92 89 00 	sts	0x0089, r1
 6b4:	10 92 88 00 	sts	0x0088, r1
		{
 6b8:	10 92 72 00 	sts	0x0072, r1
			timeSetMode=TIME_SET_STOP;
			//outputWorkTimeCounter=0;
		    //outputStopTimeCounter=0;
		}
 6bc:	80 91 74 00 	lds	r24, 0x0074
 6c0:	82 30       	cpi	r24, 0x02	; 2
 6c2:	a9 f4       	brne	.+42     	; 0x6ee <__stack+0x28f>
		//假如是手动状态,切换到自动状态		
		else //if((timeSetMode==TIME_SET_STOP))
		{
 6c4:	80 91 86 00 	lds	r24, 0x0086
 6c8:	88 23       	and	r24, r24
 6ca:	21 f4       	brne	.+8      	; 0x6d4 <__stack+0x275>
			timeSetMode=TIME_SET_WORK;
			//outputWorkTimeCounter=0;
 6cc:	81 e0       	ldi	r24, 0x01	; 1
 6ce:	80 93 86 00 	sts	0x0086, r24
 6d2:	02 c0       	rjmp	.+4      	; 0x6d8 <__stack+0x279>
		   // outputStopTimeCounter=0;
		}
		timeSwitchTimeCounter=200;
		unitTimeCounter=600;
		keyTimeSwitchStatus=KEY_WAITING;
	}

 6d4:	10 92 86 00 	sts	0x0086, r1
	//按键RESET松开了
	//是短按的动作
	if(keyResetStatus==KEY_TIME_SHORT)
	{
 6d8:	88 ec       	ldi	r24, 0xC8	; 200
 6da:	80 93 8a 00 	sts	0x008A, r24
		timeSetMode=TIME_SET_STOP;
 6de:	88 e5       	ldi	r24, 0x58	; 88
 6e0:	92 e0       	ldi	r25, 0x02	; 2
 6e2:	90 93 89 00 	sts	0x0089, r25
 6e6:	80 93 88 00 	sts	0x0088, r24
		outPutMode=OUTPUT_HAND;
 6ea:	10 92 74 00 	sts	0x0074, r1
		//outPutEnable=0;
		outputWorkTimeCounter=0;
		outputStopTimeCounter=0;
		outputWorkTimeSetting=90;
		outputStopTimeSetting=30;
 6ee:	80 91 76 00 	lds	r24, 0x0076
 6f2:	83 30       	cpi	r24, 0x03	; 3
 6f4:	09 f0       	breq	.+2      	; 0x6f8 <__stack+0x299>
 6f6:	41 c0       	rjmp	.+130    	; 0x77a <__stack+0x31b>
		unionData.intData=outputWorkTimeSetting;
		dataSaveBuffer[WORK_TIME_HIGH]=unionData.charData[0];
 6f8:	81 e0       	ldi	r24, 0x01	; 1
 6fa:	80 93 86 00 	sts	0x0086, r24
		dataSaveBuffer[WORK_TIME_LOW]=unionData.charData[1];
 6fe:	10 92 83 00 	sts	0x0083, r1
		unionData.intData=outputStopTimeSetting;
		dataSaveBuffer[STOP_TIME_HIGH]=unionData.charData[0];
 702:	10 92 7b 00 	sts	0x007B, r1
 706:	10 92 7a 00 	sts	0x007A, r1
		dataSaveBuffer[STOP_TIME_LOW]=unionData.charData[1];
 70a:	10 92 7f 00 	sts	0x007F, r1
 70e:	10 92 7e 00 	sts	0x007E, r1
		writeEEPROM(dataSaveBuffer,1);
 712:	8a e5       	ldi	r24, 0x5A	; 90
 714:	90 e0       	ldi	r25, 0x00	; 0
 716:	90 93 7d 00 	sts	0x007D, r25
 71a:	80 93 7c 00 	sts	0x007C, r24
		keyResetStatus=KEY_WAITING;
 71e:	8e e1       	ldi	r24, 0x1E	; 30
 720:	90 e0       	ldi	r25, 0x00	; 0
 722:	90 93 81 00 	sts	0x0081, r25
 726:	80 93 80 00 	sts	0x0080, r24
	}
 72a:	80 91 7c 00 	lds	r24, 0x007C
 72e:	90 91 7d 00 	lds	r25, 0x007D
 732:	90 93 98 00 	sts	0x0098, r25
 736:	80 93 97 00 	sts	0x0097, r24
	//是长按的动作
 73a:	80 91 97 00 	lds	r24, 0x0097
 73e:	80 93 8b 00 	sts	0x008B, r24
	else if(keyResetStatus==KEY_TIME_LONG)
 742:	80 91 98 00 	lds	r24, 0x0098
 746:	80 93 8c 00 	sts	0x008C, r24
	{
 74a:	80 91 80 00 	lds	r24, 0x0080
 74e:	90 91 81 00 	lds	r25, 0x0081
 752:	90 93 98 00 	sts	0x0098, r25
 756:	80 93 97 00 	sts	0x0097, r24
		timeSetMode=TIME_SET_STOP;
 75a:	80 91 97 00 	lds	r24, 0x0097
 75e:	80 93 8d 00 	sts	0x008D, r24
		outPutMode=OUTPUT_AUTO;
 762:	80 91 98 00 	lds	r24, 0x0098
 766:	80 93 8e 00 	sts	0x008E, r24
		outPutEnable=1;
 76a:	61 e0       	ldi	r22, 0x01	; 1
 76c:	8b e8       	ldi	r24, 0x8B	; 139
 76e:	90 e0       	ldi	r25, 0x00	; 0
 770:	0e 94 49 00 	call	0x92	; 0x92 <writeEEPROM>
		outputWorkTimeCounter=0;
 774:	10 92 76 00 	sts	0x0076, r1
 778:	08 95       	ret
		outputStopTimeCounter=0;
		outputWorkTimeSetting=65530;
		outputStopTimeSetting=10;
 77a:	80 91 76 00 	lds	r24, 0x0076
 77e:	84 30       	cpi	r24, 0x04	; 4
 780:	09 f0       	breq	.+2      	; 0x784 <__stack+0x325>
 782:	42 c0       	rjmp	.+132    	; 0x808 <__stack+0x3a9>
		unionData.intData=outputWorkTimeSetting;
		dataSaveBuffer[WORK_TIME_HIGH]=unionData.charData[0];
 784:	81 e0       	ldi	r24, 0x01	; 1
 786:	80 93 86 00 	sts	0x0086, r24
		dataSaveBuffer[WORK_TIME_LOW]=unionData.charData[1];		
 78a:	80 93 83 00 	sts	0x0083, r24
		unionData.intData=outputStopTimeSetting;
 78e:	80 93 82 00 	sts	0x0082, r24
		dataSaveBuffer[STOP_TIME_HIGH]=unionData.charData[0];
 792:	10 92 7b 00 	sts	0x007B, r1
 796:	10 92 7a 00 	sts	0x007A, r1
		dataSaveBuffer[STOP_TIME_LOW]=unionData.charData[1];
 79a:	10 92 7f 00 	sts	0x007F, r1
 79e:	10 92 7e 00 	sts	0x007E, r1
		writeEEPROM(dataSaveBuffer,1);
 7a2:	8a ef       	ldi	r24, 0xFA	; 250
 7a4:	9f ef       	ldi	r25, 0xFF	; 255
 7a6:	90 93 7d 00 	sts	0x007D, r25
 7aa:	80 93 7c 00 	sts	0x007C, r24
		keyResetStatus=KEY_WAITING;
 7ae:	8a e0       	ldi	r24, 0x0A	; 10
 7b0:	90 e0       	ldi	r25, 0x00	; 0
 7b2:	90 93 81 00 	sts	0x0081, r25
 7b6:	80 93 80 00 	sts	0x0080, r24
		//LED3_ON();
 7ba:	80 91 7c 00 	lds	r24, 0x007C
 7be:	90 91 7d 00 	lds	r25, 0x007D
 7c2:	90 93 98 00 	sts	0x0098, r25
 7c6:	80 93 97 00 	sts	0x0097, r24
	}	
 7ca:	80 91 97 00 	lds	r24, 0x0097
 7ce:	80 93 8b 00 	sts	0x008B, r24
	
 7d2:	80 91 98 00 	lds	r24, 0x0098
 7d6:	80 93 8c 00 	sts	0x008C, r24
}
 7da:	80 91 80 00 	lds	r24, 0x0080
 7de:	90 91 81 00 	lds	r25, 0x0081
 7e2:	90 93 98 00 	sts	0x0098, r25
 7e6:	80 93 97 00 	sts	0x0097, r24

 7ea:	80 91 97 00 	lds	r24, 0x0097
 7ee:	80 93 8d 00 	sts	0x008D, r24
/*********************************************************
 7f2:	80 91 98 00 	lds	r24, 0x0098
 7f6:	80 93 8e 00 	sts	0x008E, r24
//继电器输出控制
 7fa:	61 e0       	ldi	r22, 0x01	; 1
 7fc:	8b e8       	ldi	r24, 0x8B	; 139
 7fe:	90 e0       	ldi	r25, 0x00	; 0
 800:	0e 94 49 00 	call	0x92	; 0x92 <writeEEPROM>
//假设时间单位是100ms
 804:	10 92 76 00 	sts	0x0076, r1
 808:	08 95       	ret

0000080a <outputControl>:
*********************************************************/
void outputControl(void)
{
	//在输出状态
	if(outPutEnable==1)
	{
		if(outputStep==OUTPUT_STEP_WORK)
		{
			outputWorkTimeCounter++;
			OUTPUT1_ON();
			OUTPUT2_ON();
 80a:	40 91 82 00 	lds	r20, 0x0082
 80e:	41 30       	cpi	r20, 0x01	; 1
 810:	09 f0       	breq	.+2      	; 0x814 <outputControl+0xa>
 812:	45 c0       	rjmp	.+138    	; 0x89e <outputControl+0x94>
			//LED3_ON();
			if(outputWorkTimeCounter>outputWorkTimeSetting)
			{
				outputWorkTimeCounter=0;
 814:	80 91 85 00 	lds	r24, 0x0085
 818:	88 23       	and	r24, r24
 81a:	e9 f4       	brne	.+58     	; 0x856 <outputControl+0x4c>

⌨️ 快捷键说明

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