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

📄 main.lss

📁 基于AVR单片机 Atmel Mega128的AD采集程序。
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     4e2:	80 91 56 00 	lds	r24, 0x0056
     4e6:	80 61       	ori	r24, 0x10	; 16
     4e8:	80 93 56 00 	sts	0x0056, r24
		//终止定时器
		TIMER_STOP();
     4ec:	0e 94 e0 07 	call	0xfc0
     4f0:	89 81       	ldd	r24, Y+1	; 0x01
     4f2:	8f 5f       	subi	r24, 0xFF	; 255
     4f4:	89 83       	std	Y+1, r24	; 0x01
     4f6:	e8 cf       	rjmp	.-48     	; 0x4c8
	}
//数据采集流程
	while(1)
	{
	//检测动作开始标志清零
		for(i=0;i<4;i++){global_detect_close[i]=0;}
     4f8:	19 82       	std	Y+1, r1	; 0x01
     4fa:	89 81       	ldd	r24, Y+1	; 0x01
     4fc:	84 30       	cpi	r24, 0x04	; 4
     4fe:	08 f0       	brcs	.+2      	; 0x502
     500:	0f c0       	rjmp	.+30     	; 0x520
     502:	89 81       	ldd	r24, Y+1	; 0x01
     504:	28 2f       	mov	r18, r24
     506:	33 27       	eor	r19, r19
     508:	c9 01       	movw	r24, r18
     50a:	82 0f       	add	r24, r18
     50c:	93 1f       	adc	r25, r19
     50e:	fc 01       	movw	r30, r24
     510:	e6 5e       	subi	r30, 0xE6	; 230
     512:	fe 4f       	sbci	r31, 0xFE	; 254
     514:	10 82       	st	Z, r1
     516:	11 82       	std	Z+1, r1	; 0x01
     518:	89 81       	ldd	r24, Y+1	; 0x01
     51a:	8f 5f       	subi	r24, 0xFF	; 255
     51c:	89 83       	std	Y+1, r24	; 0x01
     51e:	ed cf       	rjmp	.-38     	; 0x4fa
		for(i=0;i<4;i++){global_detect_trip[i]=0;}
     520:	19 82       	std	Y+1, r1	; 0x01
     522:	89 81       	ldd	r24, Y+1	; 0x01
     524:	84 30       	cpi	r24, 0x04	; 4
     526:	08 f0       	brcs	.+2      	; 0x52a
     528:	0f c0       	rjmp	.+30     	; 0x548
     52a:	89 81       	ldd	r24, Y+1	; 0x01
     52c:	28 2f       	mov	r18, r24
     52e:	33 27       	eor	r19, r19
     530:	c9 01       	movw	r24, r18
     532:	82 0f       	add	r24, r18
     534:	93 1f       	adc	r25, r19
     536:	fc 01       	movw	r30, r24
     538:	ec 5f       	subi	r30, 0xFC	; 252
     53a:	fe 4f       	sbci	r31, 0xFE	; 254
     53c:	10 82       	st	Z, r1
     53e:	11 82       	std	Z+1, r1	; 0x01
     540:	89 81       	ldd	r24, Y+1	; 0x01
     542:	8f 5f       	subi	r24, 0xFF	; 255
     544:	89 83       	std	Y+1, r24	; 0x01
     546:	ed cf       	rjmp	.-38     	; 0x522
	//如果自动测试
		if(global_sample_mode_flag==0x00)
     548:	80 91 14 01 	lds	r24, 0x0114
     54c:	88 23       	and	r24, r24
     54e:	e1 f4       	brne	.+56     	; 0x588
		{
		//关串口接收中断
			UART_RXCINT_CLOSE();
     550:	0e 94 44 06 	call	0xc88
		//开外部中断7(AD转换结束中断)
			EXTERN_INTERRUPT_OPEN(7);
     554:	87 e0       	ldi	r24, 0x07	; 7
     556:	0e 94 55 03 	call	0x6aa
		//检测采样
			OPERATION_DETECTION();
     55a:	0e 94 67 08 	call	0x10ce
		//如果检测到有信号变化,向COUNTER发送开始采集命令
			sbi(UCSR0B,TXB8);//将TXB8置1
     55e:	80 91 2a 00 	lds	r24, 0x002A
     562:	81 60       	ori	r24, 0x01	; 1
     564:	80 93 2a 00 	sts	0x002A, r24
			UART_DATA_BYTE_SEND(0x10);//发送数据采集命令
     568:	80 e1       	ldi	r24, 0x10	; 16
     56a:	0e 94 51 06 	call	0xca2
		//开始采样
			SAMPLE();
     56e:	0e 94 ed 07 	call	0xfda
		//关外部中断7
			EXTERN_INTERRUPT_CLOSE(7);
     572:	87 e0       	ldi	r24, 0x07	; 7
     574:	0e 94 83 03 	call	0x706
		//开串口接收中断,等待数据包传输命令
			UART_RXCINT_OPEN();
     578:	0e 94 38 06 	call	0xc70
		//向主机发送采集结束命令0x33
			UART_DATA_BYTE_SEND(0x33);
     57c:	83 e3       	ldi	r24, 0x33	; 51
     57e:	0e 94 51 06 	call	0xca2
		//自动测试标志复原
			global_sample_mode_flag=0xFF;
     582:	8f ef       	ldi	r24, 0xFF	; 255
     584:	80 93 14 01 	sts	0x0114, r24
		}
	//如果接收到开始采集命令
		if(global_start_sample_flag==0x00)
     588:	80 91 17 01 	lds	r24, 0x0117
     58c:	88 23       	and	r24, r24
     58e:	09 f0       	breq	.+2      	; 0x592
     590:	b3 cf       	rjmp	.-154    	; 0x4f8
		{
		//关串口接收中断
			UART_RXCINT_CLOSE();
     592:	0e 94 44 06 	call	0xc88
		//开外部中断7(AD转换结束中断)
			EXTERN_INTERRUPT_OPEN(7);
     596:	87 e0       	ldi	r24, 0x07	; 7
     598:	0e 94 55 03 	call	0x6aa
		//采样
			SAMPLE();
     59c:	0e 94 ed 07 	call	0xfda
		//关外部中断7
			EXTERN_INTERRUPT_CLOSE(7);
     5a0:	87 e0       	ldi	r24, 0x07	; 7
     5a2:	0e 94 83 03 	call	0x706
		//开串口接收中断,等待数据包传输命令
			UART_RXCINT_OPEN();
     5a6:	0e 94 38 06 	call	0xc70
		//开始采集标志复原
			global_start_sample_flag=0xFF;
     5aa:	8f ef       	ldi	r24, 0xFF	; 255
     5ac:	80 93 17 01 	sts	0x0117, r24
     5b0:	a3 cf       	rjmp	.-186    	; 0x4f8

000005b2 <INITIATION>:
extern uint16_t global_voltage_counter;//操作电压地址计数器
extern uint8_t global_ad_finish_flag;//AD转换结束标志
//AD板子的初始化,包括端口方向,串口初始化等
void INITIATION(void)
{
     5b2:	cf 93       	push	r28
     5b4:	df 93       	push	r29
     5b6:	cd b7       	in	r28, 0x3d	; 61
     5b8:	de b7       	in	r29, 0x3e	; 62
	DDRC=0xFF;//端口C输出
     5ba:	8f ef       	ldi	r24, 0xFF	; 255
     5bc:	80 93 34 00 	sts	0x0034, r24
	PORTC=0xFF;
     5c0:	8f ef       	ldi	r24, 0xFF	; 255
     5c2:	80 93 35 00 	sts	0x0035, r24
	DDRF|=0x0F;//端口F输出
     5c6:	80 91 61 00 	lds	r24, 0x0061
     5ca:	8f 60       	ori	r24, 0x0F	; 15
     5cc:	80 93 61 00 	sts	0x0061, r24
	sbi(DDRB,2);//CONVST初始化,输出
     5d0:	80 91 37 00 	lds	r24, 0x0037
     5d4:	84 60       	ori	r24, 0x04	; 4
     5d6:	80 93 37 00 	sts	0x0037, r24
	sbi(PORTB,2);
     5da:	80 91 38 00 	lds	r24, 0x0038
     5de:	84 60       	ori	r24, 0x04	; 4
     5e0:	80 93 38 00 	sts	0x0038, r24
	sbi(DDRG,0);//WR初始化,输出1
     5e4:	80 91 64 00 	lds	r24, 0x0064
     5e8:	81 60       	ori	r24, 0x01	; 1
     5ea:	80 93 64 00 	sts	0x0064, r24
	sbi(PORTG,0);
     5ee:	80 91 65 00 	lds	r24, 0x0065
     5f2:	81 60       	ori	r24, 0x01	; 1
     5f4:	80 93 65 00 	sts	0x0065, r24
	sbi(DDRG,1);//RD初始化,输出1
     5f8:	80 91 64 00 	lds	r24, 0x0064
     5fc:	82 60       	ori	r24, 0x02	; 2
     5fe:	80 93 64 00 	sts	0x0064, r24
	sbi(PORTG,1);
     602:	80 91 65 00 	lds	r24, 0x0065
     606:	82 60       	ori	r24, 0x02	; 2
     608:	80 93 65 00 	sts	0x0065, r24
	sbi(DDRG,2);//ALE初始化,输出1
     60c:	80 91 64 00 	lds	r24, 0x0064
     610:	84 60       	ori	r24, 0x04	; 4
     612:	80 93 64 00 	sts	0x0064, r24
	sbi(PORTG,2);
     616:	80 91 65 00 	lds	r24, 0x0065
     61a:	84 60       	ori	r24, 0x04	; 4
     61c:	80 93 65 00 	sts	0x0065, r24
	sbi(DDRD,5);//CS_ADC初始化,输出1
     620:	80 91 31 00 	lds	r24, 0x0031
     624:	80 62       	ori	r24, 0x20	; 32
     626:	80 93 31 00 	sts	0x0031, r24
	sbi(PORTD,5);
     62a:	80 91 32 00 	lds	r24, 0x0032
     62e:	80 62       	ori	r24, 0x20	; 32
     630:	80 93 32 00 	sts	0x0032, r24
	sbi(DDRD,6);//CS_RAM初始化,输出1
     634:	80 91 31 00 	lds	r24, 0x0031
     638:	80 64       	ori	r24, 0x40	; 64
     63a:	80 93 31 00 	sts	0x0031, r24
	sbi(PORTD,6);
     63e:	80 91 32 00 	lds	r24, 0x0032
     642:	80 64       	ori	r24, 0x40	; 64
     644:	80 93 32 00 	sts	0x0032, r24
	UART_SETTING(19200,7372800);//串口初始化
     648:	40 e0       	ldi	r20, 0x00	; 0
     64a:	50 e8       	ldi	r21, 0x80	; 128
     64c:	60 e7       	ldi	r22, 0x70	; 112
     64e:	70 e0       	ldi	r23, 0x00	; 0
     650:	80 e0       	ldi	r24, 0x00	; 0
     652:	9b e4       	ldi	r25, 0x4B	; 75
     654:	0e 94 62 05 	call	0xac4
	sbi(DDRE,2);//串口接收控制
     658:	80 91 22 00 	lds	r24, 0x0022
     65c:	84 60       	ori	r24, 0x04	; 4
     65e:	80 93 22 00 	sts	0x0022, r24
	cbi(PORTE,2);
     662:	80 91 23 00 	lds	r24, 0x0023
     666:	8b 7f       	andi	r24, 0xFB	; 251
     668:	80 93 23 00 	sts	0x0023, r24
}
     66c:	df 91       	pop	r29
     66e:	cf 91       	pop	r28
     670:	08 95       	ret

00000672 <delay_ms>:
//延时程序
void delay_ms(void)
{
     672:	cf 93       	push	r28
     674:	df 93       	push	r29
     676:	cd b7       	in	r28, 0x3d	; 61
     678:	de b7       	in	r29, 0x3e	; 62
     67a:	21 97       	sbiw	r28, 0x01	; 1
     67c:	0f b6       	in	r0, 0x3f	; 63
     67e:	f8 94       	cli
     680:	de bf       	out	0x3e, r29	; 62
     682:	0f be       	out	0x3f, r0	; 63
     684:	cd bf       	out	0x3d, r28	; 61
	uint8_t i;
	for(i=0;i<0x01;i++){;}
     686:	19 82       	std	Y+1, r1	; 0x01
     688:	89 81       	ldd	r24, Y+1	; 0x01
     68a:	88 23       	and	r24, r24
     68c:	09 f0       	breq	.+2      	; 0x690
     68e:	04 c0       	rjmp	.+8      	; 0x698
     690:	89 81       	ldd	r24, Y+1	; 0x01
     692:	8f 5f       	subi	r24, 0xFF	; 255
     694:	89 83       	std	Y+1, r24	; 0x01
     696:	f8 cf       	rjmp	.-16     	; 0x688
}
     698:	21 96       	adiw	r28, 0x01	; 1
     69a:	0f b6       	in	r0, 0x3f	; 63
     69c:	f8 94       	cli
     69e:	de bf       	out	0x3e, r29	; 62
     6a0:	0f be       	out	0x3f, r0	; 63
     6a2:	cd bf       	out	0x3d, r28	; 61
     6a4:	df 91       	pop	r29
     6a6:	cf 91       	pop	r28
     6a8:	08 95       	ret

000006aa <EXTERN_INTERRUPT_OPEN>:

//开外部中断
void EXTERN_INTERRUPT_OPEN(uint8_t index)
{
     6aa:	cf 93       	push	r28
     6ac:	df 93       	push	r29
     6ae:	cd b7       	in	r28, 0x3d	; 61
     6b0:	de b7       	in	r29, 0x3e	; 62
     6b2:	21 97       	sbiw	r28, 0x01	; 1
     6b4:	0f b6       	in	r0, 0x3f	; 63
     6b6:	f8 94       	cli
     6b8:	de bf       	out	0x3e, r29	; 62
     6ba:	0f be       	out	0x3f, r0	; 63
     6bc:	cd bf       	out	0x3d, r28	; 61
     6be:	89 83       	std	Y+1, r24	; 0x01
	EICRA=0xAA;
     6c0:	8a ea       	ldi	r24, 0xAA	; 170
     6c2:	80 93 6a 00 	sts	0x006A, r24
	EICRB=0xAA;//设置下降沿触发
     6c6:	8a ea       	ldi	r24, 0xAA	; 170
     6c8:	80 93 5a 00 	sts	0x005A, r24
	sbi(EIMSK,index);
     6cc:	89 81       	ldd	r24, Y+1	; 0x01
     6ce:	28 2f       	mov	r18, r24
     6d0:	33 27       	eor	r19, r19
     6d2:	81 e0       	ldi	r24, 0x01	; 1
     6d4:	90 e0       	ldi	r25, 0x00	; 0
     6d6:	02 c0       	rjmp	.+4      	; 0x6dc
     6d8:	88 0f       	add	r24, r24
     6da:	99 1f       	adc	r25, r25
     6dc:	2a 95       	dec	r18
     6de:	e2 f7       	brpl	.-8      	; 0x6d8
     6e0:	20 91 59 00 	lds	r18, 0x0059
     6e4:	82 2b       	or	r24, r18
     6e6:	80 93 59 00 	sts	0x0059, r24
	sbi(SREG,7);//将寄存器SREG的“I”置1
     6ea:	80 91 5f 00 	lds	r24, 0x005F
     6ee:	80 68       	ori	r24, 0x80	; 128
     6f0:	80 93 5f 00 	sts	0x005F, r24
}
     6f4:	21 96       	adiw	r28, 0x01	; 1
     6f6:	0f b6       	in	r0, 0x3f	; 63
     6f8:	f8 94       	cli
     6fa:	de bf       	out	0x3e, r29	; 62
     6fc:	0f be       	out	0x3f, r0	; 63
     6fe:	cd bf       	out	0x3d, r28	; 61
     700:	df 91       	pop	r29
     702:	cf 91       	pop	r28
     704:	08 95       	ret

00000706 <EXTERN_INTERRUPT_CLOSE>:

//关外部中断
void EXTERN_INTERRUPT_CLOSE(uint8_t index)
{
     706:	cf 93       	push	r28
     708:	df 93       	push	r29
     70a:	cd b7       	in	r28, 0x3d	; 61
     70c:	de b7       	in	r29, 0x3e	; 62
     70e:	21 97       	sbiw	r28, 0x01	; 1
     710:	0f b6       	in	r0, 0x3f	; 63
     712:	f8 94       	cli
     714:	de bf       	out	0x3e, r29	; 62
     716:	0f be       	out	0x3f, r0	; 63
     718:	cd bf       	out	0x3d, r28	; 61
     71a:	89 83       	std	Y+1, r24	; 0x01
	cbi(EIMSK,index);
     71c:	89 81       	ldd	r24, Y+1	; 0x01
     71e:	28 2f       	mov	r18, r24
     720:	33 27       	eor	r19, r19
     722:	81 e0       	ldi	r24, 0x01	; 1
     724:	90 e0       	ldi	r25, 0x00	; 0
     726:	02 c0       	rjmp	.+4      	; 0x72c
     728:	88 0f       	add	r24, r24
     72a:	99 1f       	adc	r25, r25
     72c:	2a 95       	dec	r18
     72e:	e2 f7       	brpl	.-8      	; 0x728
     730:	98 2f       	mov	r25, r24
     732:	90 95       	com	r25
     734:	80 91 59 00 	lds	r24, 0x0059
     738:	89 23       	and	r24, r25
     73a:	80 93 59 00 	sts	0x0059, r24
//	sbi(SREG,7);//将寄存器SREG的“I”置1
}
     73e:	21 96       	adiw	r28, 0x01	; 1
     740:	0f b6       	in	r0, 0x3f	; 63
     742:	f8 94       	cli
     744:	de bf       	out	0x3e, r29	; 62
     746:	0f be       	out	0x3f, r0	; 63
     748:	cd bf       	out	0x3d, r28	; 61
     74a:	df 91       	pop	r29
     74c:	cf 91       	pop	r28
     74e:	08 95       	ret

00000750 <SRAM_1M_8_WRITE>:

//SRAM写操作
void SRAM_1M_8_WRITE(uint32_t address,uint8_t data)
{
     750:	cf 93       	push	r28
     752:	df 93       	push	r29
     754:	cd b7       	in	r28, 0x3d	; 61
     756:	de b7       	in	r29, 0x3e	; 62

⌨️ 快捷键说明

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