📄 main.lst
字号:
\ _A_OCR0A:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x46, root
\ <unnamed> volatile __io _A_TCNT0
\ _A_TCNT0:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x45, root
\ <unnamed> volatile __io _A_TCCR0B
\ _A_TCCR0B:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x44, root
\ <unnamed> volatile __io _A_TCCR0A
\ _A_TCCR0A:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x43, root
\ <unnamed> volatile __io _A_GTCCR
\ _A_GTCCR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x41, root
\ <unnamed> volatile __io _A_EEAR
\ _A_EEAR:
\ 00000000 DS 2
\ In segment ABSOLUTE, at 0x40, root
\ <unnamed> volatile __io _A_EEDR
\ _A_EEDR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x3f, root
\ <unnamed> volatile __io _A_EECR
\ _A_EECR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x3e, root
\ <unnamed> volatile __io _A_GPIOR0
\ _A_GPIOR0:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x3d, root
\ <unnamed> volatile __io _A_EIMSK
\ _A_EIMSK:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x3c, root
\ <unnamed> volatile __io _A_EIFR
\ _A_EIFR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x3b, root
\ <unnamed> volatile __io _A_PCIFR
\ _A_PCIFR:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x37, root
\ <unnamed> volatile __io _A_TIFR2
\ _A_TIFR2:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x36, root
\ <unnamed> volatile __io _A_TIFR1
\ _A_TIFR1:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x35, root
\ <unnamed> volatile __io _A_TIFR0
\ _A_TIFR0:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x2b, root
\ <unnamed> volatile __io _A_PORTD
\ _A_PORTD:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x2a, root
\ <unnamed> volatile __io _A_DDRD
\ _A_DDRD:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x29, root
\ <unnamed> volatile __io _A_PIND
\ _A_PIND:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x28, root
\ <unnamed> volatile __io _A_PORTC
\ _A_PORTC:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x27, root
\ <unnamed> volatile __io _A_DDRC
\ _A_DDRC:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x26, root
\ <unnamed> volatile __io _A_PINC
\ _A_PINC:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x25, root
\ <unnamed> volatile __io _A_PORTB
\ _A_PORTB:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x24, root
\ <unnamed> volatile __io _A_DDRB
\ _A_DDRB:
\ 00000000 DS 1
\ In segment ABSOLUTE, at 0x23, root
\ <unnamed> volatile __io _A_PINB
\ _A_PINB:
\ 00000000 DS 1
12 #include "inAVR.h"
13 #include "stdio.h"
14 #include "stdbool.h"
15
16 #define Max_Axis 3
17 #define X_Channel 0 //PC2
18 #define Y_Channel 1 //PC1
19 #define Z_Channel 2 //PC0
20 #define MMA7361_EN 0x08 //PC3
21
\ In segment NEAR_I, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_I>`
22 const unsigned char Channel_Tbl[Max_Axis]={0x42,0x41,0x40}; //Z,Y,X
\ Channel_Tbl:
\ 00000000 DS 3
\ 00000003 REQUIRE `?<Initializer for Channel_Tbl>`
\ In segment NEAR_I, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_I>`
23 const unsigned char Axis_Name[Max_Axis]={'X','Y','Z'};
\ Axis_Name:
\ 00000000 DS 3
\ 00000003 REQUIRE `?<Initializer for Axis_Name>`
\ In segment NEAR_Z, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
24 unsigned char Temp, Temp1, ADC_Done,ShowDebug_Cnt; //Temporary saving cells
\ Temp:
\ 00000000 DS 1
\ In segment NEAR_Z, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
\ Temp1:
\ 00000000 DS 1
\ In segment NEAR_Z, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
\ ADC_Done:
\ 00000000 DS 1
\ In segment NEAR_Z, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
\ ShowDebug_Cnt:
\ 00000000 DS 1
\ In segment NEAR_Z, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
25 unsigned int Axis_Data[Max_Axis];
\ Axis_Data:
\ 00000000 DS 6
\ In segment NEAR_Z, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
26 unsigned long SumReg = 0; //Storage variable
\ SumReg:
\ 00000000 DS 4
\ In segment NEAR_Z, align 1, keep-with-next, root
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
27 static char SampCnt; //ADC samples counter
\ SampCnt:
\ 00000000 DS 1
28
29 #include "functions.c"
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void Timers_Init()
\ Timers_Init:
\ 00000000 EC03 LDI R16, 195
\ 00000002 BD04 OUT 0x24, R16
\ 00000004 E001 LDI R16, 1
\ 00000006 BD05 OUT 0x25, R16
\ 00000008 E000 LDI R16, 0
\ 0000000A BD07 OUT 0x27, R16
\ 0000000C E000 LDI R16, 0
\ 0000000E 9300006E STS 110, R16
\ 00000012 E000 LDI R16, 0
\ 00000014 93000080 STS 128, R16
\ 00000018 E009 LDI R16, 9
\ 0000001A 93000081 STS 129, R16
\ 0000001E E000 LDI R16, 0
\ 00000020 93000082 STS 130, R16
\ 00000024 E000 LDI R16, 0
\ 00000026 E010 LDI R17, 0
\ 00000028 93100089 STS 137, R17
\ 0000002C 93000088 STS 136, R16
\ 00000030 E000 LDI R16, 0
\ 00000032 9300006F STS 111, R16
\ 00000036 E000 LDI R16, 0
\ 00000038 930000B0 STS 176, R16
\ 0000003C E006 LDI R16, 6
\ 0000003E 930000B1 STS 177, R16
\ 00000042 E001 LDI R16, 1
\ 00000044 93000070 STS 112, R16
\ 00000048 E000 LDI R16, 0
\ 0000004A 930000B6 STS 182, R16
\ 0000004E 9508 RET
\ 00000050 REQUIRE _A_ASSR
\ 00000050 REQUIRE _A_TCCR2B
\ 00000050 REQUIRE _A_TCCR2A
\ 00000050 REQUIRE _A_OCR1A
\ 00000050 REQUIRE _A_TCCR1C
\ 00000050 REQUIRE _A_TCCR1B
\ 00000050 REQUIRE _A_TCCR1A
\ 00000050 REQUIRE _A_TIMSK2
\ 00000050 REQUIRE _A_TIMSK1
\ 00000050 REQUIRE _A_TIMSK0
\ 00000050 REQUIRE _A_OCR0A
\ 00000050 REQUIRE _A_TCCR0B
\ 00000050 REQUIRE _A_TCCR0A
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void IO_Ports_Init()
\ IO_Ports_Init:
\ 00000000 E000 LDI R16, 0
\ 00000002 B905 OUT 0x05, R16
\ 00000004 E30F LDI R16, 63
\ 00000006 B904 OUT 0x04, R16
\ 00000008 E000 LDI R16, 0
\ 0000000A B908 OUT 0x08, R16
\ 0000000C EF08 LDI R16, 248
\ 0000000E B907 OUT 0x07, R16
\ 00000010 E000 LDI R16, 0
\ 00000012 B90B OUT 0x0B, R16
\ 00000014 EF0E LDI R16, 254
\ 00000016 B90A OUT 0x0A, R16
\ 00000018 9A5C SBI 0x0B, 0x04
\ 0000001A 9508 RET
\ 0000001C REQUIRE _A_PORTD
\ 0000001C REQUIRE _A_DDRD
\ 0000001C REQUIRE _A_PORTC
\ 0000001C REQUIRE _A_DDRC
\ 0000001C REQUIRE _A_PORTB
\ 0000001C REQUIRE _A_DDRB
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void ADC_Init()
\ ADC_Init:
\ 00000000 E10F LDI R16, 31
\ 00000002 9300007E STS 126, R16
\ 00000006 E800 LDI R16, 128
\ 00000008 BF00 OUT 0x30, R16
\ 0000000A E803 LDI R16, 131
\ 0000000C 9300007A STS 122, R16
\ 00000010 E000 LDI R16, 0
\ 00000012 9300007B STS 123, R16
\ 00000016 E402 LDI R16, 66
\ 00000018 9300007C STS 124, R16
\ 0000001C 9508 RET
\ 0000001E REQUIRE _A_DIDR0
\ 0000001E REQUIRE _A_ADMUX
\ 0000001E REQUIRE _A_ADCSRB
\ 0000001E REQUIRE _A_ADCSRA
\ 0000001E REQUIRE _A_ACSR
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 void MMA7361_Init()
\ MMA7361_Init:
\ 00000000 9A43 SBI 0x08, 0x03
\ 00000002 9508 RET
\ 00000004 REQUIRE _A_PORTC
\ In segment CODE, align 2, keep-with-next
\ __nearfunc __version_3 unsigned int Get_ADC(unsigned char, unsigned char)
\ Get_ADC:
\ 00000000 ........ CALL ?PROLOGUE5_L09
\ 00000004 REQUIRE ?Register_R4_is_cg_reg
\ 00000004 2F80 MOV R24, R16
\ 00000006 2E41 MOV R4, R17
\ 00000008 E090 LDI R25, 0
\ 0000000A 01FC MOVW R31:R30, R25:R24
\ 0000000C .... SUBI R30, LOW((-(Channel_Tbl) & 0xFFFF))
\ 0000000E .... SBCI R31, (-(Channel_Tbl) & 0xFFFF) >> 8
\ 00000010 8100 LD R16, Z
\ 00000012 9300007C STS 124, R16
\ 00000016 E000 LDI R16, 0
\ 00000018 9300.... STS Temp1, R16
\ ??Get_ADC_0:
\ 0000001C 9100.... LDS R16, Temp1
\ 00000020 3302 CPI R16, 50
\ 00000022 F430 BRCC ??Get_ADC_1
\ 00000024 .... LDI R30, LOW(Temp1)
\ 00000026 .... LDI R31, (Temp1) >> 8
\ 00000028 8100 LD R16, Z
\ 0000002A 9503 INC R16
\ 0000002C 8300 ST Z, R16
\ 0000002E CFF6 RJMP ??Get_ADC_0
\ ??Get_ADC_1:
\ 00000030 E000 LDI R16, 0
\ 00000032 E010 LDI R17, 0
\ 00000034 E020 LDI R18, 0
\ 00000036 E030 LDI R19, 0
\ 00000038 .... LDI R30, LOW(SumReg)
\ 0000003A .... LDI R31, (SumReg) >> 8
\ 0000003C 8300 ST Z, R16
\ 0000003E 8311 STD Z+1, R17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -