📄 main.lst
字号:
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 + -