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

📄 main.lst

📁 基于AVR单片机 Atmel Mega128的AD采集程序。
💻 LST
📖 第 1 页 / 共 3 页
字号:
 613 03a0 DF91      		pop r29
 614 03a2 CF91      		pop r28
 615 03a4 FF91      		pop r31
 616 03a6 EF91      		pop r30
 617 03a8 BF91      		pop r27
 618 03aa AF91      		pop r26
 619 03ac 9F91      		pop r25
 620 03ae 8F91      		pop r24
 621 03b0 7F91      		pop r23
 622 03b2 6F91      		pop r22
 623 03b4 5F91      		pop r21
 624 03b6 4F91      		pop r20
 625 03b8 3F91      		pop r19
 626 03ba 2F91      		pop r18
 627 03bc 0F90      		pop __tmp_reg__
 628 03be 0FBE      		out __SREG__,__tmp_reg__
 629 03c0 0F90      		pop __tmp_reg__
 630 03c2 1F90      		pop __zero_reg__
 631 03c4 1895      		reti
 632               	/* epilogue end (size=23) */
 633               	/* function __vector_8 size 343 (296) */
 641               	.Lscope1:
 644               	.global	main
 646               	main:
 187:main.c        **** 
 188:main.c        **** //主程序//////////////////////////////
 189:main.c        **** int main()
 190:main.c        **** {
 648               	.LM60:
 649               	/* prologue: frame size=1 */
 650 03c6 C0E0      		ldi r28,lo8(__stack - 1)
 651 03c8 D0E0      		ldi r29,hi8(__stack - 1)
 652 03ca DEBF      		out __SP_H__,r29
 653 03cc CDBF      		out __SP_L__,r28
 654               	/* prologue end (size=4) */
 191:main.c        **** //变量定义
 192:main.c        **** 	uint8_t i;
 193:main.c        **** //初始化和串口波特率设置
 194:main.c        **** 	INITIATION();
 656               	.LM61:
 657               	.LBB4:
 658 03ce 0E94 0000 		call INITIATION
 195:main.c        **** //PG3供测试用/////////////
 196:main.c        **** 	sbi(DDRG,3);
 660               	.LM62:
 661 03d2 8091 6400 		lds r24,100
 662 03d6 8860      		ori r24,lo8(8)
 663 03d8 8093 6400 		sts 100,r24
 197:main.c        **** 	cbi(PORTG,3);
 665               	.LM63:
 666 03dc 8091 6500 		lds r24,101
 667 03e0 877F      		andi r24,lo8(-9)
 668 03e2 8093 6500 		sts 101,r24
 198:main.c        **** //开中断
 199:main.c        **** 	sei();
 670               	.LM64:
 671               	/* #APP */
 672 03e6 7894      		sei
 200:main.c        **** //自动测试标志初始化
 201:main.c        **** 	global_sample_mode_flag=0xFF;
 674               	.LM65:
 675               	/* #NOAPP */
 676 03e8 8FEF      		ldi r24,lo8(-1)
 677 03ea 8093 0000 		sts global_sample_mode_flag,r24
 202:main.c        **** //采集控制标志初始化
 203:main.c        **** 	global_start_sample_flag=0xFF;
 679               	.LM66:
 680 03ee 8FEF      		ldi r24,lo8(-1)
 681 03f0 8093 0000 		sts global_start_sample_flag,r24
 204:main.c        **** //串口接收控制变量初始化
 205:main.c        **** 	global_flag_serie=0;
 683               	.LM67:
 684 03f4 1092 0000 		sts global_flag_serie,__zero_reg__
 206:main.c        **** //开串口接收中断
 207:main.c        **** 	UART_RXCINT_OPEN();
 686               	.LM68:
 687 03f8 0E94 0000 		call UART_RXCINT_OPEN
 208:main.c        **** //延时
 209:main.c        **** 	for(i=0;i<0xFF;i++)
 689               	.LM69:
 690 03fc 1982      		std Y+1,__zero_reg__
 691               	.L42:
 692 03fe 8981      		ldd r24,Y+1
 693 0400 8F3F      		cpi r24,lo8(-1)
 694 0402 09F4      		brne .L45
 695 0404 14C0      		rjmp .L51
 696               	.L45:
 210:main.c        **** 	{
 211:main.c        **** 		TIMER_BEGIN();
 698               	.LM70:
 699 0406 0E94 0000 		call TIMER_BEGIN
 212:main.c        **** 		//等待定时器溢出,AD结束中断处理在等待过程中完成
 213:main.c        **** 		while(!(TIFR&(1<<OCF1A))){;}
 701               	.LM71:
 702               	.L46:
 703 040a 8091 5600 		lds r24,86
 704 040e 9927      		clr r25
 705 0410 8071      		andi r24,lo8(16)
 706 0412 9070      		andi r25,hi8(16)
 707 0414 0097      		sbiw r24,0
 708 0416 C9F3      		breq .L46
 214:main.c        **** 		TIFR|=1<<OCF1A;
 710               	.LM72:
 711 0418 8091 5600 		lds r24,86
 712 041c 8061      		ori r24,lo8(16)
 713 041e 8093 5600 		sts 86,r24
 215:main.c        **** 		//终止定时器
 216:main.c        **** 		TIMER_STOP();
 715               	.LM73:
 716 0422 0E94 0000 		call TIMER_STOP
 718               	.LM74:
 719 0426 8981      		ldd r24,Y+1
 720 0428 8F5F      		subi r24,lo8(-(1))
 721 042a 8983      		std Y+1,r24
 722 042c E8CF      		rjmp .L42
 723               	.L51:
 217:main.c        **** 	}
 218:main.c        **** //数据采集流程
 219:main.c        **** 	while(1)
 220:main.c        **** 	{
 221:main.c        **** 	//检测动作开始标志清零
 222:main.c        **** 		for(i=0;i<4;i++){global_detect_close[i]=0;}
 725               	.LM75:
 726 042e 1982      		std Y+1,__zero_reg__
 727               	.L52:
 728 0430 8981      		ldd r24,Y+1
 729 0432 8430      		cpi r24,lo8(4)
 730 0434 08F0      		brlo .L55
 731 0436 0FC0      		rjmp .L53
 732               	.L55:
 733 0438 8981      		ldd r24,Y+1
 734 043a 282F      		mov r18,r24
 735 043c 3327      		clr r19
 736 043e C901      		movw r24,r18
 737 0440 820F      		add r24,r18
 738 0442 931F      		adc r25,r19
 739 0444 FC01      		movw r30,r24
 740 0446 E050      		subi r30,lo8(-(global_detect_close))
 741 0448 F040      		sbci r31,hi8(-(global_detect_close))
 742 044a 1082      		st Z,__zero_reg__
 743 044c 1182      		std Z+1,__zero_reg__
 744 044e 8981      		ldd r24,Y+1
 745 0450 8F5F      		subi r24,lo8(-(1))
 746 0452 8983      		std Y+1,r24
 747 0454 EDCF      		rjmp .L52
 748               	.L53:
 223:main.c        **** 		for(i=0;i<4;i++){global_detect_trip[i]=0;}
 750               	.LM76:
 751 0456 1982      		std Y+1,__zero_reg__
 752               	.L56:
 753 0458 8981      		ldd r24,Y+1
 754 045a 8430      		cpi r24,lo8(4)
 755 045c 08F0      		brlo .L59
 756 045e 0FC0      		rjmp .L57
 757               	.L59:
 758 0460 8981      		ldd r24,Y+1
 759 0462 282F      		mov r18,r24
 760 0464 3327      		clr r19
 761 0466 C901      		movw r24,r18
 762 0468 820F      		add r24,r18
 763 046a 931F      		adc r25,r19
 764 046c FC01      		movw r30,r24
 765 046e E050      		subi r30,lo8(-(global_detect_trip))
 766 0470 F040      		sbci r31,hi8(-(global_detect_trip))
 767 0472 1082      		st Z,__zero_reg__
 768 0474 1182      		std Z+1,__zero_reg__
 769 0476 8981      		ldd r24,Y+1
 770 0478 8F5F      		subi r24,lo8(-(1))
 771 047a 8983      		std Y+1,r24
 772 047c EDCF      		rjmp .L56
 773               	.L57:
 224:main.c        **** 	//如果自动测试
 225:main.c        **** 		if(global_sample_mode_flag==0x00)
 775               	.LM77:
 776 047e 8091 0000 		lds r24,global_sample_mode_flag
 777 0482 8823      		tst r24
 778 0484 E1F4      		brne .L60
 226:main.c        **** 		{
 227:main.c        **** 		//关串口接收中断
 228:main.c        **** 			UART_RXCINT_CLOSE();
 780               	.LM78:
 781 0486 0E94 0000 		call UART_RXCINT_CLOSE
 229:main.c        **** 		//开外部中断7(AD转换结束中断)
 230:main.c        **** 			EXTERN_INTERRUPT_OPEN(7);
 783               	.LM79:
 784 048a 87E0      		ldi r24,lo8(7)
 785 048c 0E94 0000 		call EXTERN_INTERRUPT_OPEN
 231:main.c        **** 		//检测采样
 232:main.c        **** 			OPERATION_DETECTION();
 787               	.LM80:
 788 0490 0E94 0000 		call OPERATION_DETECTION
 233:main.c        **** 		//如果检测到有信号变化,向COUNTER发送开始采集命令
 234:main.c        **** 			sbi(UCSR0B,TXB8);//将TXB8置1
 790               	.LM81:
 791 0494 8091 2A00 		lds r24,42
 792 0498 8160      		ori r24,lo8(1)
 793 049a 8093 2A00 		sts 42,r24
 235:main.c        **** 			UART_DATA_BYTE_SEND(0x10);//发送数据采集命令
 795               	.LM82:
 796 049e 80E1      		ldi r24,lo8(16)
 797 04a0 0E94 0000 		call UART_DATA_BYTE_SEND
 236:main.c        **** 		//开始采样
 237:main.c        **** 			SAMPLE();
 799               	.LM83:
 800 04a4 0E94 0000 		call SAMPLE
 238:main.c        **** 		//关外部中断7
 239:main.c        **** 			EXTERN_INTERRUPT_CLOSE(7);
 802               	.LM84:
 803 04a8 87E0      		ldi r24,lo8(7)
 804 04aa 0E94 0000 		call EXTERN_INTERRUPT_CLOSE
 240:main.c        **** 		//开串口接收中断,等待数据包传输命令
 241:main.c        **** 			UART_RXCINT_OPEN();
 806               	.LM85:
 807 04ae 0E94 0000 		call UART_RXCINT_OPEN
 242:main.c        **** 		//向主机发送采集结束命令0x33
 243:main.c        **** 			UART_DATA_BYTE_SEND(0x33);
 809               	.LM86:
 810 04b2 83E3      		ldi r24,lo8(51)
 811 04b4 0E94 0000 		call UART_DATA_BYTE_SEND
 244:main.c        **** 		//自动测试标志复原
 245:main.c        **** 			global_sample_mode_flag=0xFF;
 813               	.LM87:
 814 04b8 8FEF      		ldi r24,lo8(-1)
 815 04ba 8093 0000 		sts global_sample_mode_flag,r24
 816               	.L60:
 246:main.c        **** 		}
 247:main.c        **** 	//如果接收到开始采集命令
 248:main.c        **** 		if(global_start_sample_flag==0x00)
 818               	.LM88:
 819 04be 8091 0000 		lds r24,global_start_sample_flag
 820 04c2 8823      		tst r24
 821 04c4 09F0      		breq .+2
 822 04c6 B3CF      		rjmp .L51
 249:main.c        **** 		{
 250:main.c        **** 		//关串口接收中断
 251:main.c        **** 			UART_RXCINT_CLOSE();
 824               	.LM89:
 825 04c8 0E94 0000 		call UART_RXCINT_CLOSE
 252:main.c        **** 		//开外部中断7(AD转换结束中断)
 253:main.c        **** 			EXTERN_INTERRUPT_OPEN(7);
 827               	.LM90:
 828 04cc 87E0      		ldi r24,lo8(7)
 829 04ce 0E94 0000 		call EXTERN_INTERRUPT_OPEN
 254:main.c        **** 		//采样
 255:main.c        **** 			SAMPLE();
 831               	.LM91:
 832 04d2 0E94 0000 		call SAMPLE
 256:main.c        **** 		//关外部中断7
 257:main.c        **** 			EXTERN_INTERRUPT_CLOSE(7);
 834               	.LM92:
 835 04d6 87E0      		ldi r24,lo8(7)
 836 04d8 0E94 0000 		call EXTERN_INTERRUPT_CLOSE
 258:main.c        **** 		//开串口接收中断,等待数据包传输命令
 259:main.c        **** 			UART_RXCINT_OPEN();
 838               	.LM93:
 839 04dc 0E94 0000 		call UART_RXCINT_OPEN
 260:main.c        **** 		//开始采集标志复原
 261:main.c        **** 			global_start_sample_flag=0xFF;
 841               	.LM94:
 842 04e0 8FEF      		ldi r24,lo8(-1)
 843 04e2 8093 0000 		sts global_start_sample_flag,r24
 844 04e6 A3CF      		rjmp .L51
 262:main.c        **** 		}
 263:main.c        **** 	}
 264:main.c        **** 	
 265:main.c        **** 	for(;;){;}
 266:main.c        **** 	return 0;
 267:main.c        **** }
 846               	.LM95:
 847               	.LBE4:
 848               	/* epilogue: frame size=1 */
 849               	/* epilogue: noreturn */
 850               	/* epilogue end (size=0) */
 851               	/* function main size 146 (142) */
 856               	.Lscope2:
 858               		.comm global_flag_serie,1,1
 859               		.comm global_ad_counter,2,1
 860               		.comm global_start_sample_flag,1,1
 861               		.comm global_sample_mode_flag,1,1
 862               		.comm global_operation_detected_flag,1,1
 863               		.comm global_detect_close,10,1
 864               		.comm global_detect_trip,10,1
 865               		.comm global_channel_flag,1,1
 866               		.comm global_close_counter,2,1
 867               		.comm global_trip_counter,2,1
 868               		.comm global_motor_counter,2,1
 869               		.comm global_voltage_counter,2,1
 870               		.comm global_ad_finish_flag,1,1
 884               		.text
 886               	Letext:
 887               	/* File "main.c": code  634 = 0x027a ( 536), prologues  52, epilogues  46 */
DEFINED SYMBOLS
                            *ABS*:00000000 main.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
C:\DOCUME~1\lu\LOCALS~1\Temp/cc0iaaaa.s:76     .text:00000000 __vector_18
                            *COM*:00000001 global_flag_serie
                            *COM*:00000001 global_start_sample_flag
                            *COM*:00000001 global_sample_mode_flag
C:\DOCUME~1\lu\LOCALS~1\Temp/cc0iaaaa.s:280    .text:0000011e __vector_8
                            *COM*:00000001 global_channel_flag
                            *COM*:00000002 global_close_counter
                            *COM*:00000002 global_trip_counter
                            *COM*:00000002 global_voltage_counter
                            *COM*:00000002 global_ad_counter
                            *COM*:0000000a global_detect_close
                            *COM*:0000000a global_detect_trip
                            *COM*:00000001 global_operation_detected_flag
                            *COM*:00000001 global_ad_finish_flag
C:\DOCUME~1\lu\LOCALS~1\Temp/cc0iaaaa.s:646    .text:000003c6 main
                            *COM*:00000002 global_motor_counter
C:\DOCUME~1\lu\LOCALS~1\Temp/cc0iaaaa.s:886    .text:000004e8 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
SEND_ONE_PACKAGE
AD7891_READ
SRAM_1M_8_WRITE
__stack
INITIATION
UART_RXCINT_OPEN
TIMER_BEGIN
TIMER_STOP
UART_RXCINT_CLOSE
EXTERN_INTERRUPT_OPEN
OPERATION_DETECTION
UART_DATA_BYTE_SEND
SAMPLE
EXTERN_INTERRUPT_CLOSE

⌨️ 快捷键说明

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