📄 main.lst
字号:
\ 00000040 8322 STD Z+2, R18
\ 00000042 8333 STD Z+3, R19
\ 00000044 9240.... STS SampCnt, R4
\ 00000048 E000 LDI R16, 0
\ 0000004A 9300.... STS ADC_Done, R16
\ 0000004E EC0B LDI R16, 203
\ 00000050 9300007A STS 122, R16
\ ??Get_ADC_2:
\ 00000054 9100.... LDS R16, ADC_Done
\ 00000058 2300 TST R16
\ 0000005A F3E1 BREQ ??Get_ADC_2
\ 0000005C 2D44 MOV R20, R4
\ 0000005E E050 LDI R21, 0
\ 00000060 E060 LDI R22, 0
\ 00000062 E070 LDI R23, 0
\ 00000064 .... LDI R30, LOW(SumReg)
\ 00000066 .... LDI R31, (SumReg) >> 8
\ 00000068 8100 LD R16, Z
\ 0000006A 8111 LDD R17, Z+1
\ 0000006C 8122 LDD R18, Z+2
\ 0000006E 8133 LDD R19, Z+3
\ 00000070 ........ CALL ?UL_DIVMOD_L03
\ 00000074 01D8 MOVW R27:R26, R17:R16
\ 00000076 018D MOVW R17:R16, R27:R26
\ 00000078 E0E5 LDI R30, 5
\ 0000007A ........ JMP ?EPILOGUE_B5_L09
\ 0000007E REQUIRE _A_ADMUX
\ 0000007E REQUIRE _A_ADCSRA
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void SW_UART_Tx(unsigned char)
\ SW_UART_Tx:
\ 00000000 2F60 MOV R22, R16
\ 00000002 E070 LDI R23, 0
\ 00000004 01AB MOVW R21:R20, R23:R22
\ 00000006 0F44 LSL R20
\ 00000008 1F55 ROL R21
\ 0000000A 6040 ORI R20, 0x00
\ 0000000C 6052 ORI R21, 0x02
\ 0000000E E021 LDI R18, 1
\ 00000010 E030 LDI R19, 0
\ ??SW_UART_Tx_0:
\ 00000012 3020 CPI R18, 0
\ 00000014 E064 LDI R22, 4
\ 00000016 0736 CPC R19, R22
\ 00000018 F081 BREQ ??SW_UART_Tx_1
\ 0000001A 01BA MOVW R23:R22, R21:R20
\ 0000001C 2362 AND R22, R18
\ 0000001E 2373 AND R23, R19
\ 00000020 2B67 OR R22, R23
\ 00000022 F411 BRNE ??SW_UART_Tx_2
\ 00000024 9859 CBI 0x0B, 0x01
\ 00000026 C001 RJMP ??SW_UART_Tx_3
\ ??SW_UART_Tx_2:
\ 00000028 9A59 SBI 0x0B, 0x01
\ ??SW_UART_Tx_3:
\ 0000002A E010 LDI R17, 0
\ ??SW_UART_Tx_4:
\ 0000002C 301A CPI R17, 10
\ 0000002E F410 BRCC ??SW_UART_Tx_5
\ 00000030 9513 INC R17
\ 00000032 CFFC RJMP ??SW_UART_Tx_4
\ ??SW_UART_Tx_5:
\ 00000034 0F22 LSL R18
\ 00000036 1F33 ROL R19
\ 00000038 CFEC RJMP ??SW_UART_Tx_0
\ ??SW_UART_Tx_1:
\ 0000003A 9508 RET
\ 0000003C REQUIRE _A_PORTD
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void Show_Hex(unsigned int)
\ Show_Hex:
\ 00000000 ........ CALL ?PROLOGUE4_L09
\ 00000004 01D8 MOVW R27:R26, R17:R16
\ 00000006 E180 LDI R24, 16
\ ??Show_Hex_0:
\ 00000008 3081 CPI R24, 1
\ 0000000A F070 BRCS ??Show_Hex_1
\ 0000000C 5084 SUBI R24, 4
\ 0000000E 2F48 MOV R20, R24
\ 00000010 018D MOVW R17:R16, R27:R26
\ 00000012 ........ CALL ?US_SHR_L02
\ 00000016 700F ANDI R16, 0x0F
\ 00000018 2F90 MOV R25, R16
\ 0000001A 309A CPI R25, 10
\ 0000001C F008 BRCS ??Show_Hex_2
\ 0000001E 5F99 SUBI R25, 249
\ ??Show_Hex_2:
\ 00000020 2F09 MOV R16, R25
\ 00000022 5D00 SUBI R16, 208
\ 00000024 .... RCALL SW_UART_Tx
\ 00000026 CFF0 RJMP ??Show_Hex_0
\ ??Show_Hex_1:
\ 00000028 E0E4 LDI R30, 4
\ 0000002A ........ JMP ?EPILOGUE_B4_L09
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void Put_Axis(unsigned int)
\ Put_Axis:
\ 00000000 ........ CALL ?PROLOGUE4_L09
\ 00000004 9724 SBIW R29:R28, 4
\ 00000006 01C8 MOVW R25:R24, R17:R16
\ 00000008 EE48 LDI R20, 232
\ 0000000A E053 LDI R21, 3
\ 0000000C 018C MOVW R17:R16, R25:R24
\ 0000000E ........ CALL ?US_DIVMOD_L02
\ 00000012 8308 ST Y, R16
\ 00000014 EE48 LDI R20, 232
\ 00000016 E053 LDI R21, 3
\ 00000018 018C MOVW R17:R16, R25:R24
\ 0000001A ........ CALL ?US_DIVMOD_L02
\ 0000001E 018A MOVW R17:R16, R21:R20
\ 00000020 E644 LDI R20, 100
\ 00000022 E050 LDI R21, 0
\ 00000024 ........ CALL ?US_DIVMOD_L02
\ 00000028 8309 STD Y+1, R16
\ 0000002A EE48 LDI R20, 232
\ 0000002C E053 LDI R21, 3
\ 0000002E 018C MOVW R17:R16, R25:R24
\ 00000030 ........ CALL ?US_DIVMOD_L02
\ 00000034 018A MOVW R17:R16, R21:R20
\ 00000036 E644 LDI R20, 100
\ 00000038 E050 LDI R21, 0
\ 0000003A ........ CALL ?US_DIVMOD_L02
\ 0000003E 018A MOVW R17:R16, R21:R20
\ 00000040 E04A LDI R20, 10
\ 00000042 E050 LDI R21, 0
\ 00000044 ........ CALL ?US_DIVMOD_L02
\ 00000048 830A STD Y+2, R16
\ 0000004A EE48 LDI R20, 232
\ 0000004C E053 LDI R21, 3
\ 0000004E 018C MOVW R17:R16, R25:R24
\ 00000050 ........ CALL ?US_DIVMOD_L02
\ 00000054 018A MOVW R17:R16, R21:R20
\ 00000056 E644 LDI R20, 100
\ 00000058 E050 LDI R21, 0
\ 0000005A ........ CALL ?US_DIVMOD_L02
\ 0000005E 018A MOVW R17:R16, R21:R20
\ 00000060 E04A LDI R20, 10
\ 00000062 E050 LDI R21, 0
\ 00000064 ........ CALL ?US_DIVMOD_L02
\ 00000068 834B STD Y+3, R20
\ 0000006A E0A0 LDI R26, 0
\ ??Put_Axis_0:
\ 0000006C 30A4 CPI R26, 4
\ 0000006E F448 BRCC ??Put_Axis_1
\ 00000070 01FE MOVW R31:R30, R29:R28
\ 00000072 E0B0 LDI R27, 0
\ 00000074 0FEA ADD R30, R26
\ 00000076 1FFB ADC R31, R27
\ 00000078 8100 LD R16, Z
\ 0000007A 5D00 SUBI R16, 208
\ 0000007C .... RCALL SW_UART_Tx
\ 0000007E 95A3 INC R26
\ 00000080 CFF5 RJMP ??Put_Axis_0
\ ??Put_Axis_1:
\ 00000082 9624 ADIW R29:R28, 4
\ 00000084 E0E4 LDI R30, 4
\ 00000086 ........ JMP ?EPILOGUE_B4_L09
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void UART_Init()
\ UART_Init:
\ 00000000 E000 LDI R16, 0
\ 00000002 930000C1 STS 193, R16
\ 00000006 E002 LDI R16, 2
\ 00000008 930000C0 STS 192, R16
\ 0000000C E006 LDI R16, 6
\ 0000000E 930000C2 STS 194, R16
\ 00000012 E607 LDI R16, 103
\ 00000014 930000C4 STS 196, R16
\ 00000018 E000 LDI R16, 0
\ 0000001A 930000C5 STS 197, R16
\ 0000001E E108 LDI R16, 24
\ 00000020 930000C1 STS 193, R16
\ 00000024 9508 RET
\ 00000026 REQUIRE _A_UCSR0B
\ 00000026 REQUIRE _A_UCSR0A
\ 00000026 REQUIRE _A_UBRR0
\ 00000026 REQUIRE _A_UCSR0C
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void UART_Tx(unsigned char)
\ UART_Tx:
\ ??UART_Tx_0:
\ 00000000 911000C0 LDS R17, 192
\ 00000004 2F21 MOV R18, R17
\ 00000006 FF25 SBRS R18, 5
\ 00000008 CFFB RJMP ??UART_Tx_0
\ 0000000A 930000C6 STS 198, R16
\ 0000000E 9508 RET
\ 00000010 REQUIRE _A_UDR0
\ 00000010 REQUIRE _A_UCSR0A
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 unsigned char UART_Rx()
\ UART_Rx:
\ ??UART_Rx_0:
\ 00000000 910000C0 LDS R16, 192
\ 00000004 2F10 MOV R17, R16
\ 00000006 FF17 SBRS R17, 7
\ 00000008 CFFB RJMP ??UART_Rx_0
\ 0000000A 910000C6 LDS R16, 198
\ 0000000E 9508 RET
\ 00000010 REQUIRE _A_UDR0
\ 00000010 REQUIRE _A_UCSR0A
30
\ In segment CODE, align 2, keep-with-next
31 int main(void)
\ main:
32 {
\ 00000000 939A ST -Y, R25
\ 00000002 938A ST -Y, R24
33 unsigned char i;
34 IO_Ports_Init(); //Initialize IO ports
\ 00000004 .... RCALL IO_Ports_Init
35 Timers_Init(); //Initialize timers
\ 00000006 .... RCALL Timers_Init
36 ADC_Init(); //Initialize ADC
\ 00000008 .... RCALL ADC_Init
37 PRR = 0x82; //Reduce consumption 86 (don't stop SPI)
\ 0000000A E802 LDI R16, 130
\ 0000000C 93000064 STS 100, R16
38 CLKPR = 0x80; //Increase Fcpu
\ 00000010 E800 LDI R16, 128
\ 00000012 93000061 STS 97, R16
39 CLKPR = 0x00;
\ 00000016 E000 LDI R16, 0
\ 00000018 93000061 STS 97, R16
40 TCCR2B = 0x06;
\ 0000001C E006 LDI R16, 6
\ 0000001E 930000B1 STS 177, R16
41
42 __disable_interrupt();
\ 00000022 94F8 CLI
43 __watchdog_reset();
\ 00000024 95A8 WDR
44 WDTCSR = 0x18; //Enable watchdog, timeout 256ms
\ 00000026 E108 LDI R16, 24
\ 00000028 93000060 STS 96, R16
45 WDTCSR = 0x0D;
\ 0000002C E00D LDI R16, 13
\ 0000002E 93000060 STS 96, R16
46 __enable_interrupt(); //Enable interrupts
\ 00000032 9478 SEI
47
48 MMA7361_Init();
\ 00000034 .... RCALL MMA7361_Init
49 while(1)
50 {
51 __watchdog_reset(); //Reset watchdog timer
\ ??main_0:
\ 00000036 95A8 WDR
52
53 if(ShowDebug_Cnt==0)
\ 00000038 9100.... LDS R16, ShowDebug_Cnt
\ 0000003C 2300 TST R16
\ 0000003E F7D9 BRNE ??main_0
54 {
55 ShowDebug_Cnt=30;//13; //Get data periodically
\ 00000040 E10E LDI R16, 30
\ 00000042 9300.... STS ShowDebug_Cnt, R16
56 for(i=0;i<Max_Axis;i++) //Get Axis data
\ 00000046 E080 LDI R24, 0
\ ??main_1:
\ 00000048 3083 CPI R24, 3
\ 0000004A F470 BRCC ??main_2
57 Axis_Data[i]=Get_ADC(i,10);
\ 0000004C E01A LDI R17, 10
\ 0000004E 2F08 MOV R16, R24
\ 00000050 .... RCALL Get_ADC
\ 00000052 2F28 MOV R18, R24
\ 00000054 E030 LDI R19, 0
\ 00000056 0F22 LSL R18
\ 00000058 1F33 ROL R19
\ 0000005A 01F9 MOVW R31:R30, R19:R18
\ 0000005C .... SUBI R30, LOW((-(Axis_Data) & 0xFFFF))
\ 0000005E .... SBCI R31, (-(Axis_Data) & 0xFFFF) >> 8
\ 00000060 8300 ST Z, R16
\ 00000062 8311 STD Z+1, R17
\ 00000064 9583 INC R24
\ 00000066 CFF0 RJMP ??main_1
58 for(i=0;i<Max_Axis;i++) //Show Axis data through UART
\ ??main_2:
\ 00000068 E080 LDI R24, 0
\ ??main_3:
\ 0000006A 3083 CPI R24, 3
\ 0000006C F4A0 BRCC ??main_4
59 {
60 SW_UART_Tx(Axis_Name[i]);
\ 0000006E E090 LDI R25, 0
\ 00000070 01FC MOVW R31:R30, R25:R24
\ 00000072 .... SUBI R30, LOW((-(Axis_Name) & 0xFFFF))
\ 00000074 .... SBCI R31, (-(Axis_Name) & 0xFFFF) >> 8
\ 00000076 8100 LD R16, Z
\ 00000078 .... RCALL SW_UART_Tx
61 Put_Axis(Axis_Data[i]);
\ 0000007A 2F08 MOV R16, R24
\ 0000007C E010 LDI R17, 0
\ 0000007E 0F00 LSL R16
\ 00000080 1F11 ROL R17
\ 00000082 01F8 MOVW R31:R30, R17:R16
\ 00000084 .... SUBI R30, LOW((-(Axis_Data) & 0xFFFF))
\ 00000086 .... SBCI R31, (-(Axis_Data) & 0xFFFF) >> 8
\ 00000088 8100 LD R16, Z
\ 0000008A 8111 LDD R17, Z+1
\ 0000008C .... RCALL Put_Axis
62 SW_UART_Tx(' ');
\ 0000008E E200 LDI R16, 32
\ 00000090 .... RCALL SW_UART_Tx
63 }
\ 00000092 9583 INC R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -