📄 megalcd.lss
字号:
megalcd.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 0000008a 00800100 00000264 000002f8 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 00000264 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000000 0080018a 000002ee 00000382 2**0
ALLOC
3 .noinit 00000000 0080018a 0080018a 00000382 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000382 2**0
CONTENTS
5 .stab 00000408 00000000 00000000 00000384 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 0000078c 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 00000810 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 0000007d 00000000 00000000 00000824 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 0000038c 00000000 00000000 000008a1 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 0000012a 00000000 00000000 00000c2d 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 000001df 00000000 00000000 00000d57 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000000fe 00000000 00000000 00000f36 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 46 00 jmp 0x8c <__ctors_end>
4: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
8: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
c: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
10: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
14: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
18: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
1c: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
20: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
24: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
28: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
2c: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
30: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
34: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
38: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
3c: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
40: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
44: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
48: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
4c: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
50: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
54: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
58: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
5c: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
60: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
64: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
68: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
6c: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
70: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
74: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
78: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
7c: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
80: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
84: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
88: 0c 94 63 00 jmp 0xc6 <__bad_interrupt>
0000008c <__ctors_end>:
8c: 11 24 eor r1, r1
8e: 1f be out 0x3f, r1 ; 63
90: cf ef ldi r28, 0xFF ; 255
92: d0 e1 ldi r29, 0x10 ; 16
94: de bf out 0x3e, r29 ; 62
96: cd bf out 0x3d, r28 ; 61
00000098 <__do_copy_data>:
98: 11 e0 ldi r17, 0x01 ; 1
9a: a0 e0 ldi r26, 0x00 ; 0
9c: b1 e0 ldi r27, 0x01 ; 1
9e: e4 e6 ldi r30, 0x64 ; 100
a0: f2 e0 ldi r31, 0x02 ; 2
a2: 00 e0 ldi r16, 0x00 ; 0
a4: 0b bf out 0x3b, r16 ; 59
a6: 02 c0 rjmp .+4 ; 0xac <__do_copy_data+0x14>
a8: 07 90 elpm r0, Z+
aa: 0d 92 st X+, r0
ac: aa 38 cpi r26, 0x8A ; 138
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10>
000000b2 <__do_clear_bss>:
b2: 11 e0 ldi r17, 0x01 ; 1
b4: aa e8 ldi r26, 0x8A ; 138
b6: b1 e0 ldi r27, 0x01 ; 1
b8: 01 c0 rjmp .+2 ; 0xbc <.do_clear_bss_start>
000000ba <.do_clear_bss_loop>:
ba: 1d 92 st X+, r1
000000bc <.do_clear_bss_start>:
bc: aa 38 cpi r26, 0x8A ; 138
be: b1 07 cpc r27, r17
c0: e1 f7 brne .-8 ; 0xba <.do_clear_bss_loop>
c2: 0c 94 15 01 jmp 0x22a <main>
000000c6 <__bad_interrupt>:
c6: 0c 94 00 00 jmp 0x0 <__vectors>
000000ca <delay>:
/*---------------延时子程序----------------*/
void delay (uint us)
{
while(us--);
ca: 01 97 sbiw r24, 0x01 ; 1
cc: 2f ef ldi r18, 0xFF ; 255
ce: 8f 3f cpi r24, 0xFF ; 255
d0: 92 07 cpc r25, r18
d2: d9 f7 brne .-10 ; 0xca <delay>
d4: 08 95 ret
000000d6 <delay1>:
}
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
d6: 40 e0 ldi r20, 0x00 ; 0
d8: 50 e0 ldi r21, 0x00 ; 0
da: 48 17 cp r20, r24
dc: 59 07 cpc r21, r25
de: 48 f4 brcc .+18 ; 0xf2 <delay1+0x1c>
e0: 27 ee ldi r18, 0xE7 ; 231
e2: 33 e0 ldi r19, 0x03 ; 3
for(j=0;j<1000;j++)
e4: 22 53 subi r18, 0x32 ; 50
e6: 30 40 sbci r19, 0x00 ; 0
e8: 37 ff sbrs r19, 7
ea: fc cf rjmp .-8 ; 0xe4 <delay1+0xe>
ec: 4f 5f subi r20, 0xFF ; 255
ee: 5f 4f sbci r21, 0xFF ; 255
f0: f4 cf rjmp .-24 ; 0xda <delay1+0x4>
f2: 08 95 ret
000000f4 <send>:
;
}
/*------------写命令或数据到LCD--------------*/
void wr_zb (uchar comm,uchar addr_x,uchar addr_y)
{
send(comm);
send(addr_x);
send(addr_y);
}
void send (uchar dat) //写命令或数据
{
// while(busy);
while(ask);
f4: 0e 99 sbic 0x01, 6 ; 1
f6: fe cf rjmp .-4 ; 0xf4 <send>
data_port=dat;
f8: 8b bb out 0x1b, r24 ; 27
set_answer;
fa: 1f 9a sbi 0x03, 7 ; 3
// while(busy==0);
while((ask)==0);
fc: 0e 9b sbis 0x01, 6 ; 1
fe: fe cf rjmp .-4 ; 0xfc <send+0x8>
clr_answer;
100: 1f 98 cbi 0x03, 7 ; 3
102: 08 95 ret
00000104 <wr_zb>:
104: 0f 93 push r16
106: 1f 93 push r17
108: 16 2f mov r17, r22
10a: 04 2f mov r16, r20
10c: 0e 94 7a 00 call 0xf4 <send>
110: 81 2f mov r24, r17
112: 0e 94 7a 00 call 0xf4 <send>
116: 80 2f mov r24, r16
118: 0e 94 7a 00 call 0xf4 <send>
11c: 1f 91 pop r17
11e: 0f 91 pop r16
120: 08 95 ret
00000122 <disp_chn>:
}
/*--------------显示中文------------------*/
void disp_chn (uchar *chn)
{
122: cf 92 push r12
124: df 92 push r13
126: ef 92 push r14
128: ff 92 push r15
12a: 0f 93 push r16
12c: 1f 93 push r17
12e: cf 93 push r28
130: df 93 push r29
132: 6c 01 movw r12, r24
uchar i,j;
for(j=0;j<4;j++)
134: ff 24 eor r15, r15
{
for(i=2;i<10;i++)
136: 92 e0 ldi r25, 0x02 ; 2
138: e9 2e mov r14, r25
13a: c2 e0 ldi r28, 0x02 ; 2
13c: d0 e0 ldi r29, 0x00 ; 0
{
wr_zb(0xf0,i,j);
13e: 4f 2d mov r20, r15
140: 6e 2d mov r22, r14
142: 80 ef ldi r24, 0xF0 ; 240
144: 0e 94 82 00 call 0x104 <wr_zb>
send(chn[j*16+(i-2)*2]);//chn[0],chn[1]是一个汉字的区位码 。chn[2],chn[3]是一个汉字的区位码
148: 0f 2d mov r16, r15
14a: 11 27 eor r17, r17
14c: 83 e0 ldi r24, 0x03 ; 3
14e: 00 0f add r16, r16
150: 11 1f adc r17, r17
152: 8a 95 dec r24
154: e1 f7 brne .-8 ; 0x14e <disp_chn+0x2c>
156: 0c 0f add r16, r28
158: 1d 1f adc r17, r29
15a: 00 0f add r16, r16
15c: 11 1f adc r17, r17
15e: 0c 0d add r16, r12
160: 1d 1d adc r17, r13
162: 04 50 subi r16, 0x04 ; 4
164: 10 40 sbci r17, 0x00 ; 0
166: f8 01 movw r30, r16
168: 81 91 ld r24, Z+
16a: 8f 01 movw r16, r30
16c: 0e 94 7a 00 call 0xf4 <send>
send(chn[j*16+(i-2)*2+1]);
170: f8 01 movw r30, r16
172: 80 81 ld r24, Z
174: 0e 94 7a 00 call 0xf4 <send>
178: e3 94 inc r14
17a: 21 96 adiw r28, 0x01 ; 1
17c: f9 e0 ldi r31, 0x09 ; 9
17e: fe 15 cp r31, r14
180: f0 f6 brcc .-68 ; 0x13e <disp_chn+0x1c>
182: f3 94 inc r15
184: 83 e0 ldi r24, 0x03 ; 3
186: 8f 15 cp r24, r15
188: b0 f6 brcc .-84 ; 0x136 <disp_chn+0x14>
18a: df 91 pop r29
18c: cf 91 pop r28
18e: 1f 91 pop r17
190: 0f 91 pop r16
192: ff 90 pop r15
194: ef 90 pop r14
196: df 90 pop r13
198: cf 90 pop r12
19a: 08 95 ret
0000019c <disp_eng>:
}
}
}
/*--------------显示字符------------------*/
void disp_eng (uchar *eng) //英文字符可以从任意点阵行开始。汉字只能在以16个点阵对齐的边界开始。
{
19c: cf 92 push r12
19e: df 92 push r13
1a0: ef 92 push r14
1a2: ff 92 push r15
1a4: 0f 93 push r16
1a6: 1f 93 push r17
1a8: cf 93 push r28
1aa: df 93 push r29
1ac: 6c 01 movw r12, r24
uchar i,j;
for(j=0;j<4;j++)
1ae: ee 24 eor r14, r14
{
for(i=4;i<20;i++)
1b0: 34 e0 ldi r19, 0x04 ; 4
1b2: f3 2e mov r15, r19
1b4: c4 e0 ldi r28, 0x04 ; 4
1b6: d0 e0 ldi r29, 0x00 ; 0
{
wr_zb(0xf9,i,j*16);
1b8: 0e 2d mov r16, r14
1ba: 11 27 eor r17, r17
1bc: 24 e0 ldi r18, 0x04 ; 4
1be: 00 0f add r16, r16
1c0: 11 1f adc r17, r17
1c2: 2a 95 dec r18
1c4: e1 f7 brne .-8 ; 0x1be <disp_eng+0x22>
1c6: 40 2f mov r20, r16
1c8: 6f 2d mov r22, r15
1ca: 89 ef ldi r24, 0xF9 ; 249
1cc: 0e 94 82 00 call 0x104 <wr_zb>
send(eng[j*16+i-4]);
1d0: f8 01 movw r30, r16
1d2: ec 0d add r30, r12
1d4: fd 1d adc r31, r13
1d6: ec 0f add r30, r28
1d8: fd 1f adc r31, r29
1da: 34 97 sbiw r30, 0x04 ; 4
1dc: 80 81 ld r24, Z
1de: 0e 94 7a 00 call 0xf4 <send>
1e2: f3 94 inc r15
1e4: 21 96 adiw r28, 0x01 ; 1
1e6: 83 e1 ldi r24, 0x13 ; 19
1e8: 8f 15 cp r24, r15
1ea: 30 f7 brcc .-52 ; 0x1b8 <disp_eng+0x1c>
1ec: e3 94 inc r14
1ee: 83 e0 ldi r24, 0x03 ; 3
1f0: 8e 15 cp r24, r14
1f2: f0 f6 brcc .-68 ; 0x1b0 <disp_eng+0x14>
1f4: df 91 pop r29
1f6: cf 91 pop r28
1f8: 1f 91 pop r17
1fa: 0f 91 pop r16
1fc: ff 90 pop r15
1fe: ef 90 pop r14
200: df 90 pop r13
202: cf 90 pop r12
204: 08 95 ret
00000206 <ocmj_init>:
}
}
}
/* OCMJ4X8LCD初始化 */
void ocmj_init(void)
{
MCUCR=0;
206: 15 be out 0x35, r1 ; 53
DDRA=0xff;
208: 9f ef ldi r25, 0xFF ; 255
20a: 9a bb out 0x1a, r25 ; 26
PORTA=0xff;
20c: 9b bb out 0x1b, r25 ; 27
DDRE=0b10000000;
20e: 80 e8 ldi r24, 0x80 ; 128
210: 82 b9 out 0x02, r24 ; 2
PORTE=0xff;
212: 93 b9 out 0x03, r25 ; 3
clr_reset;//LCD复位
214: ab 98 cbi 0x15, 3 ; 21
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
216: 84 ec ldi r24, 0xC4 ; 196
218: 99 e0 ldi r25, 0x09 ; 9
21a: fc 01 movw r30, r24
21c: 31 97 sbiw r30, 0x01 ; 1
21e: f1 f7 brne .-4 ; 0x21c <ocmj_init+0x16>
_delay_ms(10);
set_reset;
220: ab 9a sbi 0x15, 3 ; 21
clr_answer;
222: 1f 98 cbi 0x03, 7 ; 3
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
224: 01 97 sbiw r24, 0x01 ; 1
226: f1 f7 brne .-4 ; 0x224 <ocmj_init+0x1e>
228: 08 95 ret
0000022a <main>:
_delay_ms(10);
}
/*------------------主程序--------------------*/
int main ()
{
22a: cf ef ldi r28, 0xFF ; 255
22c: d0 e1 ldi r29, 0x10 ; 16
22e: de bf out 0x3e, r29 ; 62
230: cd bf out 0x3d, r28 ; 61
ocmj_init();//初始化
232: 0e 94 03 01 call 0x206 <ocmj_init>
// PORTC|=0X10 ; //PC4输入上拉
while(1){
//send(0xf4); //清屏
// disp_lat(0xff,0xff);
// delay1(800);
send(0xf4);
236: 84 ef ldi r24, 0xF4 ; 244
238: 0e 94 7a 00 call 0xf4 <send>
disp_chn(tab2); //用命令F0输出国标汉字
23c: 81 e4 ldi r24, 0x41 ; 65
23e: 91 e0 ldi r25, 0x01 ; 1
240: 0e 94 91 00 call 0x122 <disp_chn>
double __tmp = ((F_CPU) / 4e3) * __ms;
if (__tmp < 1.0)
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
244: 00 e0 ldi r16, 0x00 ; 0
246: 10 e0 ldi r17, 0x00 ; 0
248: c8 01 movw r24, r16
24a: 01 97 sbiw r24, 0x01 ; 1
24c: f1 f7 brne .-4 ; 0x24a <main+0x20>
_delay_ms(1000);
//delay1(800);
// send(0xf4);
//disp_lat(0xff,0x00);
//delay1(800);
send(0xf4);
24e: 84 ef ldi r24, 0xF4 ; 244
250: 0e 94 7a 00 call 0xf4 <send>
disp_eng(tab4);//??
254: 80 e0 ldi r24, 0x00 ; 0
256: 91 e0 ldi r25, 0x01 ; 1
258: 0e 94 ce 00 call 0x19c <disp_eng>
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
25c: c8 01 movw r24, r16
25e: 01 97 sbiw r24, 0x01 ; 1
260: f1 f7 brne .-4 ; 0x25e <main+0x34>
262: e9 cf rjmp .-46 ; 0x236 <main+0xc>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -