📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00001c3e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000006 00800060 00001c3e 00001cd2 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000026 00800066 00800066 00001cd8 2**0
ALLOC
3 .noinit 00000000 0080008c 0080008c 00001cd8 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00001cd8 2**0
CONTENTS
5 .stab 000021b4 00000000 00000000 00001cd8 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000b97 00000000 00000000 00003e8c 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 30 00 jmp 0x60
4: 0c 94 4b 00 jmp 0x96
8: 0c 94 46 08 jmp 0x108c
c: 0c 94 4b 00 jmp 0x96
10: 0c 94 51 08 jmp 0x10a2
14: 0c 94 4b 00 jmp 0x96
18: 0c 94 4b 00 jmp 0x96
1c: 0c 94 4b 00 jmp 0x96
20: 0c 94 6a 08 jmp 0x10d4
24: 0c 94 bf 08 jmp 0x117e
28: 0c 94 4b 00 jmp 0x96
2c: 0c 94 4b 00 jmp 0x96
30: 0c 94 4b 00 jmp 0x96
34: 0c 94 4b 00 jmp 0x96
38: 0c 94 f2 08 jmp 0x11e4
3c: 0c 94 4b 00 jmp 0x96
40: 0c 94 4b 00 jmp 0x96
44: 0c 94 4b 00 jmp 0x96
48: 0c 94 4b 00 jmp 0x96
4c: 0c 94 4b 00 jmp 0x96
50: 0c 94 4b 00 jmp 0x96
00000054 <S>:
54: af 06 6d 4f c6 cb eb 0e ef cf 00 00 ..mO........
00000060 <__init>:
60: 11 24 eor r1, r1
62: 1f be out 0x3f, r1 ; 63
64: cf e5 ldi r28, 0x5F ; 95
66: d4 e0 ldi r29, 0x04 ; 4
68: de bf out 0x3e, r29 ; 62
6a: cd bf out 0x3d, r28 ; 61
0000006c <__do_copy_data>:
6c: 10 e0 ldi r17, 0x00 ; 0
6e: a0 e6 ldi r26, 0x60 ; 96
70: b0 e0 ldi r27, 0x00 ; 0
72: ee e3 ldi r30, 0x3E ; 62
74: fc e1 ldi r31, 0x1C ; 28
76: 02 c0 rjmp .+4 ; 0x7c
00000078 <.do_copy_data_loop>:
78: 05 90 lpm r0, Z+
7a: 0d 92 st X+, r0
0000007c <.do_copy_data_start>:
7c: a6 36 cpi r26, 0x66 ; 102
7e: b1 07 cpc r27, r17
80: d9 f7 brne .-10 ; 0x78
00000082 <__do_clear_bss>:
82: 10 e0 ldi r17, 0x00 ; 0
84: a6 e6 ldi r26, 0x66 ; 102
86: b0 e0 ldi r27, 0x00 ; 0
88: 01 c0 rjmp .+2 ; 0x8c
0000008a <.do_clear_bss_loop>:
8a: 1d 92 st X+, r1
0000008c <.do_clear_bss_start>:
8c: ac 38 cpi r26, 0x8C ; 140
8e: b1 07 cpc r27, r17
90: e1 f7 brne .-8 ; 0x8a
92: 0c 94 94 0b jmp 0x1728
00000096 <__bad_interrupt>:
96: 0c 94 00 00 jmp 0x0
0000009a <port_init>:
WORD ADC_rel;
BYTE a,b,c;
void port_init(void)//口方向设置
{
DDRA = 0x00;
9a: 1a ba out 0x1a, r1 ; 26
PORTA = 0x00;
9c: 1b ba out 0x1b, r1 ; 27
DDRB = 0xff;
9e: 8f ef ldi r24, 0xFF ; 255
a0: 87 bb out 0x17, r24 ; 23
DDRC = 0XFC;
a2: 8c ef ldi r24, 0xFC ; 252
a4: 84 bb out 0x14, r24 ; 20
DDRD = 0xF0;
a6: 80 ef ldi r24, 0xF0 ; 240
a8: 81 bb out 0x11, r24 ; 17
aa: 08 95 ret
000000ac <T_init>:
}
void T_init(void)
{
TCCR2=0x00; //停止定时器2
ac: 15 bc out 0x25, r1 ; 37
TCCR1B=0x00; //停止定时器1
ae: 1e bc out 0x2e, r1 ; 46
TCCR0=0x00; //停止定时器0
b0: 13 be out 0x33, r1 ; 51
TCNT2=0X64; //定时~20ms
b2: 84 e6 ldi r24, 0x64 ; 100
b4: 84 bd out 0x24, r24 ; 36
TCNT1H=0xc2;
b6: 82 ec ldi r24, 0xC2 ; 194
b8: 8d bd out 0x2d, r24 ; 45
TCNT1L=0xf7; //定时0.5s
ba: 87 ef ldi r24, 0xF7 ; 247
bc: 8c bd out 0x2c, r24 ; 44
TCNT0=6; //定时32ms
be: 86 e0 ldi r24, 0x06 ; 6
c0: 82 bf out 0x32, r24 ; 50
TCCR2=0x05; //1024分频
c2: 95 e0 ldi r25, 0x05 ; 5
c4: 95 bd out 0x25, r25 ; 37
TCCR1B=0x04; //256分频
c6: 84 e0 ldi r24, 0x04 ; 4
c8: 8e bd out 0x2e, r24 ; 46
TCCR0=0x05; //1024分频
ca: 93 bf out 0x33, r25 ; 51
cc: 08 95 ret
000000ce <Delay>:
}
void Delay(void)
{
unsigned char i;
for(i=0;i<10;i++); /*用于调整CLK 脉冲宽度*/
ce: 80 e0 ldi r24, 0x00 ; 0
d0: 8f 5f subi r24, 0xFF ; 255
d2: 8a 30 cpi r24, 0x0A ; 10
d4: e8 f3 brcs .-6 ; 0xd0
d6: 08 95 ret
000000d8 <SendBit>:
}
void SendBit(unsigned char dat,unsigned char bitcnt)
{
d8: 0f 93 push r16
da: 1f 93 push r17
dc: cf 93 push r28
de: c8 2f mov r28, r24
e0: 06 2f mov r16, r22
unsigned char i;
cli();
e2: f8 94 cli
for(i=0;i<bitcnt;i++)
e4: 10 e0 ldi r17, 0x00 ; 0
e6: 16 17 cp r17, r22
e8: 78 f4 brcc .+30 ; 0x108
{
if(( dat & 0X80 ) == 0)
ea: cc 23 and r28, r28
ec: 14 f0 brlt .+4 ; 0xf2
PORTB &=(~(1<<MOSI));
ee: c5 98 cbi 0x18, 5 ; 24
f0: 01 c0 rjmp .+2 ; 0xf4
else
PORTB |=(1<<MOSI); /*发送数据由高位到低位传送*/
f2: c5 9a sbi 0x18, 5 ; 24
Delay();
f4: 0e 94 67 00 call 0xce
PORTB |=(1<<SCK); /*置时钟线为高通知被控器开始接收数位*/
f8: c7 9a sbi 0x18, 7 ; 24
Delay();
fa: 0e 94 67 00 call 0xce
PORTB &=(~(1<<SCK)); /*钳住总线准备下一个数据位*/
fe: c7 98 cbi 0x18, 7 ; 24
dat=dat<<1; /*发送数据左移一位*/
100: cc 0f add r28, r28
102: 1f 5f subi r17, 0xFF ; 255
104: 10 17 cp r17, r16
106: 88 f3 brcs .-30 ; 0xea
}
sei();
108: 78 94 sei
10a: cf 91 pop r28
10c: 1f 91 pop r17
10e: 0f 91 pop r16
110: 08 95 ret
00000112 <Start_spi>:
}
void Start_spi(void)
{
PORTB |=(1<<SS);
112: c4 9a sbi 0x18, 4 ; 24
PORTB |=(1<<SCK);
114: c7 9a sbi 0x18, 7 ; 24
PORTB |=(1<<MOSI);
116: c5 9a sbi 0x18, 5 ; 24
Delay();
118: 0e 94 67 00 call 0xce
PORTB &=(~(1<<SS));PORTB &=(~(1<<SS));
11c: c4 98 cbi 0x18, 4 ; 24
11e: c4 98 cbi 0x18, 4 ; 24
PORTB &=(~(1<<SCK));PORTB &=(~(1<<SCK));
120: 9f e7 ldi r25, 0x7F ; 127
122: 88 b3 in r24, 0x18 ; 24
124: 89 23 and r24, r25
126: 88 bb out 0x18, r24 ; 24
128: 88 b3 in r24, 0x18 ; 24
12a: 89 23 and r24, r25
12c: 88 bb out 0x18, r24 ; 24
12e: 08 95 ret
00000130 <SendByte>:
}
void SendByte(unsigned char dat)
{
SendBit(dat,8); /*发送字节*/
130: 68 e0 ldi r22, 0x08 ; 8
132: 0e 94 6c 00 call 0xd8
136: 08 95 ret
00000138 <SENDCOMA>:
}
void SENDCOMA(unsigned char com)
{
138: 1f 93 push r17
13a: 18 2f mov r17, r24
Start_spi();
13c: 0e 94 89 00 call 0x112
SendBit(0X80,4); //*发送设置命令ID=100 0*
140: 64 e0 ldi r22, 0x04 ; 4
142: 80 e8 ldi r24, 0x80 ; 128
144: 0e 94 6c 00 call 0xd8
SendByte(com); //*发送命令字*
148: 81 2f mov r24, r17
14a: 0e 94 98 00 call 0x130
14e: 1f 91 pop r17
150: 08 95 ret
00000152 <SENDCOMB>:
}
void SENDCOMB(unsigned char adr)
{
152: 1f 93 push r17
154: 18 2f mov r17, r24
Start_spi();
156: 0e 94 89 00 call 0x112
SendBit(0XA0,3); /*发送写显示RAM 命令ID=101 */
15a: 63 e0 ldi r22, 0x03 ; 3
15c: 80 ea ldi r24, 0xA0 ; 160
15e: 0e 94 6c 00 call 0xd8
SendBit(adr,6); /*指定写入地址*/
162: 66 e0 ldi r22, 0x06 ; 6
164: 81 2f mov r24, r17
166: 0e 94 6c 00 call 0xd8
16a: 1f 91 pop r17
16c: 08 95 ret
0000016e <disp_init>:
}
void disp_init(void)
{
16e: cf 93 push r28
170: df 93 push r29
172: cd b7 in r28, 0x3d ; 61
174: de b7 in r29, 0x3e ; 62
176: 21 97 sbiw r28, 0x01 ; 1
178: 0f b6 in r0, 0x3f ; 63
17a: f8 94 cli
17c: de bf out 0x3e, r29 ; 62
17e: 0f be out 0x3f, r0 ; 63
180: cd bf out 0x3d, r28 ; 61
volatile unsigned char i;
SENDCOMA(0X0a); /*禁止WDT溢出标志输出*/
182: 8a e0 ldi r24, 0x0A ; 10
184: 0e 94 9c 00 call 0x138
SENDCOMA(0X52); //设置偏压,背极数 定义1/3 偏压4背极
188: 82 e5 ldi r24, 0x52 ; 82
18a: 0e 94 9c 00 call 0x138
SENDCOMA(0X30); //*使用内部256KRC 振荡器*
18e: 80 e3 ldi r24, 0x30 ; 48
190: 0e 94 9c 00 call 0x138
SENDCOMA(0X02); //*启动振荡器*
194: 82 e0 ldi r24, 0x02 ; 2
196: 0e 94 9c 00 call 0x138
SENDCOMA(0X06); //LCDON
19a: 86 e0 ldi r24, 0x06 ; 6
19c: 0e 94 9c 00 call 0x138
SENDCOMA(0X08);//timer dis
1a0: 88 e0 ldi r24, 0x08 ; 8
1a2: 0e 94 9c 00 call 0x138
SENDCOMB(0x00); //*把数据指针指回0 接着写入数据*
1a6: 80 e0 ldi r24, 0x00 ; 0
1a8: 0e 94 a9 00 call 0x152
for(i=0;i<15;i++) /*写入16 字节数据*/
1ac: 19 82 std Y+1, r1 ; 0x01
1ae: 89 81 ldd r24, Y+1 ; 0x01
1b0: 8f 30 cpi r24, 0x0F ; 15
1b2: 48 f4 brcc .+18 ; 0x1c6
{
SendByte(0x0); /*写入数据*/
1b4: 80 e0 ldi r24, 0x00 ; 0
1b6: 0e 94 98 00 call 0x130
1ba: 89 81 ldd r24, Y+1 ; 0x01
1bc: 8f 5f subi r24, 0xFF ; 255
1be: 89 83 std Y+1, r24 ; 0x01
1c0: 89 81 ldd r24, Y+1 ; 0x01
1c2: 8f 30 cpi r24, 0x0F ; 15
1c4: b8 f3 brcs .-18 ; 0x1b4
1c6: 21 96 adiw r28, 0x01 ; 1
1c8: 0f b6 in r0, 0x3f ; 63
1ca: f8 94 cli
1cc: de bf out 0x3e, r29 ; 62
1ce: 0f be out 0x3f, r0 ; 63
1d0: cd bf out 0x3d, r28 ; 61
1d2: df 91 pop r29
1d4: cf 91 pop r28
1d6: 08 95 ret
000001d8 <disp_off>:
}
}
void disp_off(void)
{
SENDCOMA(0X04);//lcdoff
1d8: 84 e0 ldi r24, 0x04 ; 4
1da: 0e 94 9c 00 call 0x138
SENDCOMA(0X00);//sys dis
1de: 80 e0 ldi r24, 0x00 ; 0
1e0: 0e 94 9c 00 call 0x138
1e4: 08 95 ret
000001e6 <adc_init>:
//SENDCOMA(0X0c);//timer en
}
void adc_init(void) //ADC初始化
{
ADCSRA=0X00;
1e6: 16 b8 out 0x06, r1 ; 6
ADMUX=(1<<REFS0); //选择外部AVCC为基准
1e8: 80 e4 ldi r24, 0x40 ; 64
1ea: 87 b9 out 0x07, r24 ; 7
ACSR=(1<<ACD); //关闭模拟比较器
1ec: 80 e8 ldi r24, 0x80 ; 128
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -