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

📄 main.lss

📁 基于AVR单片机 Atmel Mega128的AD采集程序。
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     258:	82 30       	cpi	r24, 0x02	; 2
     25a:	91 05       	cpc	r25, r1
     25c:	99 f1       	breq	.+102    	; 0x2c4
     25e:	2e 81       	ldd	r18, Y+6	; 0x06
     260:	3f 81       	ldd	r19, Y+7	; 0x07
     262:	23 30       	cpi	r18, 0x03	; 3
     264:	31 05       	cpc	r19, r1
     266:	34 f4       	brge	.+12     	; 0x274
     268:	8e 81       	ldd	r24, Y+6	; 0x06
     26a:	9f 81       	ldd	r25, Y+7	; 0x07
     26c:	81 30       	cpi	r24, 0x01	; 1
     26e:	91 05       	cpc	r25, r1
     270:	41 f0       	breq	.+16     	; 0x282
     272:	69 c0       	rjmp	.+210    	; 0x346
     274:	2e 81       	ldd	r18, Y+6	; 0x06
     276:	3f 81       	ldd	r19, Y+7	; 0x07
     278:	23 30       	cpi	r18, 0x03	; 3
     27a:	31 05       	cpc	r19, r1
     27c:	09 f4       	brne	.+2      	; 0x280
     27e:	43 c0       	rjmp	.+134    	; 0x306
     280:	62 c0       	rjmp	.+196    	; 0x346
		{
			case 1://保存合闸线圈电流
				SRAM_1M_8_WRITE(global_close_counter,temp1);//高位字节
     282:	80 91 18 01 	lds	r24, 0x0118
     286:	90 91 19 01 	lds	r25, 0x0119
     28a:	aa 27       	eor	r26, r26
     28c:	bb 27       	eor	r27, r27
     28e:	4b 81       	ldd	r20, Y+3	; 0x03
     290:	bc 01       	movw	r22, r24
     292:	cd 01       	movw	r24, r26
     294:	0e 94 a8 03 	call	0x750
				SRAM_1M_8_WRITE(global_close_counter+1,temp2);//低位字节
     298:	80 91 18 01 	lds	r24, 0x0118
     29c:	90 91 19 01 	lds	r25, 0x0119
     2a0:	01 96       	adiw	r24, 0x01	; 1
     2a2:	aa 27       	eor	r26, r26
     2a4:	bb 27       	eor	r27, r27
     2a6:	4c 81       	ldd	r20, Y+4	; 0x04
     2a8:	bc 01       	movw	r22, r24
     2aa:	cd 01       	movw	r24, r26
     2ac:	0e 94 a8 03 	call	0x750
				global_close_counter+=2;
     2b0:	80 91 18 01 	lds	r24, 0x0118
     2b4:	90 91 19 01 	lds	r25, 0x0119
     2b8:	02 96       	adiw	r24, 0x02	; 2
     2ba:	90 93 19 01 	sts	0x0119, r25
     2be:	80 93 18 01 	sts	0x0118, r24
				break;
     2c2:	41 c0       	rjmp	.+130    	; 0x346
			case 2://保存分闸线圈电流
				SRAM_1M_8_WRITE(global_trip_counter,temp1);//高位字节
     2c4:	80 91 10 01 	lds	r24, 0x0110
     2c8:	90 91 11 01 	lds	r25, 0x0111
     2cc:	aa 27       	eor	r26, r26
     2ce:	bb 27       	eor	r27, r27
     2d0:	4b 81       	ldd	r20, Y+3	; 0x03
     2d2:	bc 01       	movw	r22, r24
     2d4:	cd 01       	movw	r24, r26
     2d6:	0e 94 a8 03 	call	0x750
				SRAM_1M_8_WRITE(global_trip_counter+1,temp2);//低位字节
     2da:	80 91 10 01 	lds	r24, 0x0110
     2de:	90 91 11 01 	lds	r25, 0x0111
     2e2:	01 96       	adiw	r24, 0x01	; 1
     2e4:	aa 27       	eor	r26, r26
     2e6:	bb 27       	eor	r27, r27
     2e8:	4c 81       	ldd	r20, Y+4	; 0x04
     2ea:	bc 01       	movw	r22, r24
     2ec:	cd 01       	movw	r24, r26
     2ee:	0e 94 a8 03 	call	0x750
				global_trip_counter+=2;
     2f2:	80 91 10 01 	lds	r24, 0x0110
     2f6:	90 91 11 01 	lds	r25, 0x0111
     2fa:	02 96       	adiw	r24, 0x02	; 2
     2fc:	90 93 11 01 	sts	0x0111, r25
     300:	80 93 10 01 	sts	0x0110, r24
				break;
     304:	20 c0       	rjmp	.+64     	; 0x346
			case 3://保存操作电压
			//	SRAM_1M_8_WRITE(global_motor_counter,temp1);//高位字节
			//	SRAM_1M_8_WRITE(global_motor_counter+1,temp2);//低位字节
				SRAM_1M_8_WRITE(global_voltage_counter,temp1);//高位字节
     306:	80 91 02 01 	lds	r24, 0x0102
     30a:	90 91 03 01 	lds	r25, 0x0103
     30e:	aa 27       	eor	r26, r26
     310:	bb 27       	eor	r27, r27
     312:	4b 81       	ldd	r20, Y+3	; 0x03
     314:	bc 01       	movw	r22, r24
     316:	cd 01       	movw	r24, r26
     318:	0e 94 a8 03 	call	0x750
				SRAM_1M_8_WRITE(global_voltage_counter+1,temp2);//低位字节
     31c:	80 91 02 01 	lds	r24, 0x0102
     320:	90 91 03 01 	lds	r25, 0x0103
     324:	01 96       	adiw	r24, 0x01	; 1
     326:	aa 27       	eor	r26, r26
     328:	bb 27       	eor	r27, r27
     32a:	4c 81       	ldd	r20, Y+4	; 0x04
     32c:	bc 01       	movw	r22, r24
     32e:	cd 01       	movw	r24, r26
     330:	0e 94 a8 03 	call	0x750
				global_voltage_counter+=2;
     334:	80 91 02 01 	lds	r24, 0x0102
     338:	90 91 03 01 	lds	r25, 0x0103
     33c:	02 96       	adiw	r24, 0x02	; 2
     33e:	90 93 03 01 	sts	0x0103, r25
     342:	80 93 02 01 	sts	0x0102, r24
			//	global_motor_counter+=2;
				break;
		//	case 4://保存操作电压
			//	SRAM_1M_8_WRITE(global_voltage_counter,temp1);//高位字节
			//	SRAM_1M_8_WRITE(global_voltage_counter+1,temp2);//低位字节
			//	global_voltage_counter+=2;
			//	break;
			default:
				break;
		}
	//计数器自加
		global_ad_counter++;
     346:	80 91 15 01 	lds	r24, 0x0115
     34a:	90 91 16 01 	lds	r25, 0x0116
     34e:	01 96       	adiw	r24, 0x01	; 1
     350:	90 93 16 01 	sts	0x0116, r25
     354:	80 93 15 01 	sts	0x0115, r24
	}
//如果是检测动作是否开始的采样
	if(global_sample_mode_flag==0x00)
     358:	80 91 14 01 	lds	r24, 0x0114
     35c:	88 23       	and	r24, r24
     35e:	09 f0       	breq	.+2      	; 0x362
     360:	7c c0       	rjmp	.+248    	; 0x45a
	{
	//采样轮转赋值
		//合闸线圈采样
		if(global_ad_counter%2==0)
     362:	80 91 15 01 	lds	r24, 0x0115
     366:	90 91 16 01 	lds	r25, 0x0116
     36a:	81 70       	andi	r24, 0x01	; 1
     36c:	90 70       	andi	r25, 0x00	; 0
     36e:	00 97       	sbiw	r24, 0x00	; 0
     370:	b1 f4       	brne	.+44     	; 0x39e
		{
		//	global_detect_close[0]=int16_temp1;
			global_detect_close[0]=global_detect_close[1];
     372:	80 91 1c 01 	lds	r24, 0x011C
     376:	90 91 1d 01 	lds	r25, 0x011D
     37a:	90 93 1b 01 	sts	0x011B, r25
     37e:	80 93 1a 01 	sts	0x011A, r24
			global_detect_close[1]=global_detect_close[2];
     382:	80 91 1e 01 	lds	r24, 0x011E
     386:	90 91 1f 01 	lds	r25, 0x011F
     38a:	90 93 1d 01 	sts	0x011D, r25
     38e:	80 93 1c 01 	sts	0x011C, r24
			global_detect_close[2]=int16_temp1;
     392:	89 81       	ldd	r24, Y+1	; 0x01
     394:	9a 81       	ldd	r25, Y+2	; 0x02
     396:	90 93 1f 01 	sts	0x011F, r25
     39a:	80 93 1e 01 	sts	0x011E, r24
	//		global_detect_close[2]=int16_temp1;
		}
		//分闸线圈采样
		if(global_ad_counter%2==1)
     39e:	80 91 15 01 	lds	r24, 0x0115
     3a2:	90 91 16 01 	lds	r25, 0x0116
     3a6:	81 70       	andi	r24, 0x01	; 1
     3a8:	90 70       	andi	r25, 0x00	; 0
     3aa:	81 30       	cpi	r24, 0x01	; 1
     3ac:	91 05       	cpc	r25, r1
     3ae:	b1 f4       	brne	.+44     	; 0x3dc
		{
		//	global_detect_trip[0]=int16_temp1;
			global_detect_trip[0]=global_detect_trip[1];
     3b0:	80 91 06 01 	lds	r24, 0x0106
     3b4:	90 91 07 01 	lds	r25, 0x0107
     3b8:	90 93 05 01 	sts	0x0105, r25
     3bc:	80 93 04 01 	sts	0x0104, r24
			global_detect_trip[1]=global_detect_trip[2];
     3c0:	80 91 08 01 	lds	r24, 0x0108
     3c4:	90 91 09 01 	lds	r25, 0x0109
     3c8:	90 93 07 01 	sts	0x0107, r25
     3cc:	80 93 06 01 	sts	0x0106, r24
			global_detect_trip[2]=int16_temp1;
     3d0:	89 81       	ldd	r24, Y+1	; 0x01
     3d2:	9a 81       	ldd	r25, Y+2	; 0x02
     3d4:	90 93 09 01 	sts	0x0109, r25
     3d8:	80 93 08 01 	sts	0x0108, r24
		//	global_detect_trip[2]=int16_temp1;
		}
	//判断是否有码值变化
		//判断合闸数据
		if((global_detect_close[0]>2046)&&(global_detect_close[1]>2046)&&(global_detect_close[2]>2046))//&&(global_detect_close[3]>2045)&&(global_detect_close[4]>2045))
     3dc:	80 91 1a 01 	lds	r24, 0x011A
     3e0:	90 91 1b 01 	lds	r25, 0x011B
     3e4:	37 e0       	ldi	r19, 0x07	; 7
     3e6:	8f 3f       	cpi	r24, 0xFF	; 255
     3e8:	93 07       	cpc	r25, r19
     3ea:	98 f0       	brcs	.+38     	; 0x412
     3ec:	80 91 1c 01 	lds	r24, 0x011C
     3f0:	90 91 1d 01 	lds	r25, 0x011D
     3f4:	27 e0       	ldi	r18, 0x07	; 7
     3f6:	8f 3f       	cpi	r24, 0xFF	; 255
     3f8:	92 07       	cpc	r25, r18
     3fa:	58 f0       	brcs	.+22     	; 0x412
     3fc:	80 91 1e 01 	lds	r24, 0x011E
     400:	90 91 1f 01 	lds	r25, 0x011F
     404:	37 e0       	ldi	r19, 0x07	; 7
     406:	8f 3f       	cpi	r24, 0xFF	; 255
     408:	93 07       	cpc	r25, r19
     40a:	18 f0       	brcs	.+6      	; 0x412
		{
		//检测到动作标志赋值
			global_operation_detected_flag=1;
     40c:	81 e0       	ldi	r24, 0x01	; 1
     40e:	80 93 0e 01 	sts	0x010E, r24
		}
	//	if(global_detect_close[0]>2049)
	//	{
	//		if((global_detect_close[1]-global_detect_close[0]>1)&&(global_detect_close[2]-global_detect_close[1]>1))//&&(global_detect_close[3]-global_detect_close[0]>1))
	//		{
			//检测到动作标志赋值
	//			global_operation_detected_flag=1;
	//		}
	//	}
		//判断分闸数据
		if((global_detect_trip[0]>2046)&&(global_detect_trip[1]>2046)&&(global_detect_trip[2]>2046))//&&(global_detect_trip[3]>2045)&&(global_detect_trip[4]>2045))
     412:	80 91 04 01 	lds	r24, 0x0104
     416:	90 91 05 01 	lds	r25, 0x0105
     41a:	27 e0       	ldi	r18, 0x07	; 7
     41c:	8f 3f       	cpi	r24, 0xFF	; 255
     41e:	92 07       	cpc	r25, r18
     420:	98 f0       	brcs	.+38     	; 0x448
     422:	80 91 06 01 	lds	r24, 0x0106
     426:	90 91 07 01 	lds	r25, 0x0107
     42a:	37 e0       	ldi	r19, 0x07	; 7
     42c:	8f 3f       	cpi	r24, 0xFF	; 255
     42e:	93 07       	cpc	r25, r19
     430:	58 f0       	brcs	.+22     	; 0x448
     432:	80 91 08 01 	lds	r24, 0x0108
     436:	90 91 09 01 	lds	r25, 0x0109
     43a:	27 e0       	ldi	r18, 0x07	; 7
     43c:	8f 3f       	cpi	r24, 0xFF	; 255
     43e:	92 07       	cpc	r25, r18
     440:	18 f0       	brcs	.+6      	; 0x448
		{
		//检测到动作标志赋值
			global_operation_detected_flag=1;
     442:	81 e0       	ldi	r24, 0x01	; 1
     444:	80 93 0e 01 	sts	0x010E, r24
		}
	//	if(global_detect_trip[0]>2049)
	//	{
	//		if((global_detect_trip[1]-global_detect_trip[0]>1)&&(global_detect_trip[2]-global_detect_trip[1]>1))//&&(global_detect_trip[3]-global_detect_trip[0]>1))
	//		{
			//检测到动作标志赋值
	//			global_operation_detected_flag=1;
	//		}
	//	}
	//	if(int16_temp1>2049)
	//	{
		//检测到动作标志赋值
	//		global_operation_detected_flag=1;
	//	}
		global_ad_counter++;
     448:	80 91 15 01 	lds	r24, 0x0115
     44c:	90 91 16 01 	lds	r25, 0x0116
     450:	01 96       	adiw	r24, 0x01	; 1
     452:	90 93 16 01 	sts	0x0116, r25
     456:	80 93 15 01 	sts	0x0115, r24
	}
//完成一次AD转换,将AD转换结束标志赋值
	global_ad_finish_flag=0xFF;
     45a:	8f ef       	ldi	r24, 0xFF	; 255
     45c:	80 93 01 01 	sts	0x0101, r24
//开中断
	sei();
     460:	78 94       	sei
}
     462:	27 96       	adiw	r28, 0x07	; 7
     464:	f8 94       	cli
     466:	de bf       	out	0x3e, r29	; 62
     468:	cd bf       	out	0x3d, r28	; 61
     46a:	df 91       	pop	r29
     46c:	cf 91       	pop	r28
     46e:	ff 91       	pop	r31
     470:	ef 91       	pop	r30
     472:	bf 91       	pop	r27
     474:	af 91       	pop	r26
     476:	9f 91       	pop	r25
     478:	8f 91       	pop	r24
     47a:	7f 91       	pop	r23
     47c:	6f 91       	pop	r22
     47e:	5f 91       	pop	r21
     480:	4f 91       	pop	r20
     482:	3f 91       	pop	r19
     484:	2f 91       	pop	r18
     486:	0f 90       	pop	r0
     488:	0f be       	out	0x3f, r0	; 63
     48a:	0f 90       	pop	r0
     48c:	1f 90       	pop	r1
     48e:	18 95       	reti

00000490 <main>:

//主程序//////////////////////////////
int main()
{
     490:	ce ef       	ldi	r28, 0xFE	; 254
     492:	d0 e1       	ldi	r29, 0x10	; 16
     494:	de bf       	out	0x3e, r29	; 62
     496:	cd bf       	out	0x3d, r28	; 61
//变量定义
	uint8_t i;
//初始化和串口波特率设置
	INITIATION();
     498:	0e 94 d9 02 	call	0x5b2
//PG3供测试用/////////////
	sbi(DDRG,3);
     49c:	80 91 64 00 	lds	r24, 0x0064
     4a0:	88 60       	ori	r24, 0x08	; 8
     4a2:	80 93 64 00 	sts	0x0064, r24
	cbi(PORTG,3);
     4a6:	80 91 65 00 	lds	r24, 0x0065
     4aa:	87 7f       	andi	r24, 0xF7	; 247
     4ac:	80 93 65 00 	sts	0x0065, r24
//开中断
	sei();
     4b0:	78 94       	sei
//自动测试标志初始化
	global_sample_mode_flag=0xFF;
     4b2:	8f ef       	ldi	r24, 0xFF	; 255
     4b4:	80 93 14 01 	sts	0x0114, r24
//采集控制标志初始化
	global_start_sample_flag=0xFF;
     4b8:	8f ef       	ldi	r24, 0xFF	; 255
     4ba:	80 93 17 01 	sts	0x0117, r24
//串口接收控制变量初始化
	global_flag_serie=0;
     4be:	10 92 0f 01 	sts	0x010F, r1
//开串口接收中断
	UART_RXCINT_OPEN();
     4c2:	0e 94 38 06 	call	0xc70
//延时
	for(i=0;i<0xFF;i++)
     4c6:	19 82       	std	Y+1, r1	; 0x01
     4c8:	89 81       	ldd	r24, Y+1	; 0x01
     4ca:	8f 3f       	cpi	r24, 0xFF	; 255
     4cc:	09 f4       	brne	.+2      	; 0x4d0
     4ce:	14 c0       	rjmp	.+40     	; 0x4f8
	{
		TIMER_BEGIN();
     4d0:	0e 94 be 07 	call	0xf7c
		//等待定时器溢出,AD结束中断处理在等待过程中完成
		while(!(TIFR&(1<<OCF1A))){;}
     4d4:	80 91 56 00 	lds	r24, 0x0056
     4d8:	99 27       	eor	r25, r25
     4da:	80 71       	andi	r24, 0x10	; 16
     4dc:	90 70       	andi	r25, 0x00	; 0
     4de:	00 97       	sbiw	r24, 0x00	; 0
     4e0:	c9 f3       	breq	.-14     	; 0x4d4
		TIFR|=1<<OCF1A;

⌨️ 快捷键说明

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