📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000007d2 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000055c 00800060 000007d2 00000866 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000000c 008005bc 008005bc 00000dc2 2**0
ALLOC
3 .noinit 00000000 008005c8 008005c8 00000dc2 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000dc2 2**0
CONTENTS
5 .stab 00001608 00000000 00000000 00000dc4 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000b3f 00000000 00000000 000023cc 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
24: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
28: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 15 e0 ldi r17, 0x05 ; 5
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: e2 ed ldi r30, 0xD2 ; 210
68: f7 e0 ldi r31, 0x07 ; 7
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: ac 3b cpi r26, 0xBC ; 188
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 15 e0 ldi r17, 0x05 ; 5
78: ac eb ldi r26, 0xBC ; 188
7a: b5 e0 ldi r27, 0x05 ; 5
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a8 3c cpi r26, 0xC8 ; 200
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 53 00 jmp 0xa6 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <delay>:
#include "SPLC051.h"
//宏定义
//延时
void delay(void)
{
8e: e0 e0 ldi r30, 0x00 ; 0
90: f0 e0 ldi r31, 0x00 ; 0
92: 21 e3 ldi r18, 0x31 ; 49
94: 30 e0 ldi r19, 0x00 ; 0
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
96: cf 01 movw r24, r30
98: 01 97 sbiw r24, 0x01 ; 1
9a: f1 f7 brne .-4 ; 0x98 <delay+0xa>
for(int i=0;i<50;i++)
9c: 21 50 subi r18, 0x01 ; 1
9e: 30 40 sbci r19, 0x00 ; 0
a0: 37 ff sbrs r19, 7
a2: f9 cf rjmp .-14 ; 0x96 <delay+0x8>
a4: 08 95 ret
000000a6 <main>:
_delay_ms(250);
}
//主程序
void main(void)
{
a6: cf e5 ldi r28, 0x5F ; 95
a8: d4 e0 ldi r29, 0x04 ; 4
aa: de bf out 0x3e, r29 ; 62
ac: cd bf out 0x3d, r28 ; 61
int j,i;
LCD501_Init(0x01); //初始化LCD端口以及LCD,在SPLC501User.c中定义
ae: 81 e0 ldi r24, 0x01 ; 1
b0: 90 e0 ldi r25, 0x00 ; 0
b2: 0e 94 cd 00 call 0x19a <LCD501_Init>
delay();
b6: 0e 94 47 00 call 0x8e <delay>
LCD501_ClrScreen(0);
ba: 80 e0 ldi r24, 0x00 ; 0
bc: 90 e0 ldi r25, 0x00 ; 0
be: 0e 94 3f 02 call 0x47e <LCD501_ClrScreen>
delay();
c2: 0e 94 47 00 call 0x8e <delay>
LCD501_PutChar(50,16,(unsigned int)'0');
c6: 40 e3 ldi r20, 0x30 ; 48
c8: 50 e0 ldi r21, 0x00 ; 0
ca: 60 e1 ldi r22, 0x10 ; 16
cc: 70 e0 ldi r23, 0x00 ; 0
ce: 82 e3 ldi r24, 0x32 ; 50
d0: 90 e0 ldi r25, 0x00 ; 0
d2: 0e 94 15 03 call 0x62a <LCD501_PutChar>
LCD501_PutChar(119,24,(unsigned int)'a');
d6: 41 e6 ldi r20, 0x61 ; 97
d8: 50 e0 ldi r21, 0x00 ; 0
da: 68 e1 ldi r22, 0x18 ; 24
dc: 70 e0 ldi r23, 0x00 ; 0
de: 87 e7 ldi r24, 0x77 ; 119
e0: 90 e0 ldi r25, 0x00 ; 0
e2: 0e 94 15 03 call 0x62a <LCD501_PutChar>
LCD501_PutChar(125,32,(unsigned int)'A');
e6: 41 e4 ldi r20, 0x41 ; 65
e8: 50 e0 ldi r21, 0x00 ; 0
ea: 60 e2 ldi r22, 0x20 ; 32
ec: 70 e0 ldi r23, 0x00 ; 0
ee: 8d e7 ldi r24, 0x7D ; 125
f0: 90 e0 ldi r25, 0x00 ; 0
f2: 0e 94 15 03 call 0x62a <LCD501_PutChar>
LCD501_PutString(0,0,"abcdefghijklmnopqrstuvwxyz");
f6: 40 e6 ldi r20, 0x60 ; 96
f8: 50 e0 ldi r21, 0x00 ; 0
fa: 60 e0 ldi r22, 0x00 ; 0
fc: 70 e0 ldi r23, 0x00 ; 0
fe: cb 01 movw r24, r22
100: 0e 94 b6 03 call 0x76c <LCD501_PutString>
104: 0c 94 e8 03 jmp 0x7d0 <_exit>
00000108 <LED_test>:
unsigned int CurASCIIFont; //当前ASCII码的字号(8X16/6X8)
//**************
void LED_test(void)
{
108: 4f ef ldi r20, 0xFF ; 255
10a: a0 e0 ldi r26, 0x00 ; 0
10c: b0 e0 ldi r27, 0x00 ; 0
while(1)
{
PORTB=0xff;
10e: 48 bb out 0x18, r20 ; 24
LED1();
110: c1 98 cbi 0x18, 1 ; 24
112: 21 e3 ldi r18, 0x31 ; 49
114: 30 e0 ldi r19, 0x00 ; 0
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
116: cd 01 movw r24, r26
118: 01 97 sbiw r24, 0x01 ; 1
11a: f1 f7 brne .-4 ; 0x118 <LED_test+0x10>
for(int i=0;i<50;i++)
11c: 21 50 subi r18, 0x01 ; 1
11e: 30 40 sbci r19, 0x00 ; 0
120: 37 ff sbrs r19, 7
122: f9 cf rjmp .-14 ; 0x116 <LED_test+0xe>
_delay_ms(250);
LED0();
124: c1 9a sbi 0x18, 1 ; 24
PORTB=0xff;
126: 48 bb out 0x18, r20 ; 24
128: e0 e0 ldi r30, 0x00 ; 0
12a: f0 e0 ldi r31, 0x00 ; 0
12c: 21 e3 ldi r18, 0x31 ; 49
12e: 30 e0 ldi r19, 0x00 ; 0
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
130: cf 01 movw r24, r30
132: 01 97 sbiw r24, 0x01 ; 1
134: f1 f7 brne .-4 ; 0x132 <LED_test+0x2a>
for(int i=0;i<50;i++)
136: 21 50 subi r18, 0x01 ; 1
138: 30 40 sbci r19, 0x00 ; 0
13a: 37 ff sbrs r19, 7
13c: f9 cf rjmp .-14 ; 0x130 <LED_test+0x28>
13e: e7 cf rjmp .-50 ; 0x10e <LED_test+0x6>
00000140 <F_SPLC501_Initial_IO>:
_delay_ms(250);
}
}//***************************************************************************//
//程序:F_SPLC501_Initial_IO()
//描述:SPLC501接口的初始化程序 C语言调用
//参数:无
// 声明: 手心 20070117 AVRGCC
//***************************************************************************//
void F_SPLC501_Initial_IO(void)
{
DDRA=(1<<A0)|(1<<CS1)|(1<<EP)|(1<<RW); //定义为输出口,控制LCD
140: 8d e1 ldi r24, 0x1D ; 29
142: 8a bb out 0x1a, r24 ; 26
PORTA=0xff;
144: 8f ef ldi r24, 0xFF ; 255
146: 8b bb out 0x1b, r24 ; 27
DDRB=0xff; //定义为输出口,数据端口
148: 87 bb out 0x17, r24 ; 23
PORTB=0xff;
14a: 88 bb out 0x18, r24 ; 24
14c: 08 95 ret
0000014e <F_SPLC501_Write_Com>:
}
//***************************************************************************//
//程序:F_SPLC501_Write_Com(unsigned int Command)
//描述:往SPLC501里写一个字节指令 C语言调用
//参数:送入要传送的指令
// 声明: 手心 20070117 AVRGCC
//注意A0=0,EP=1,RW=0,Cs=0
//***************************************************************************//
void F_SPLC501_Write_Com(unsigned int Command)
{
PORTA=(0<<A0)|(1<<EP)|(0<<RW)|(0<<CS1); //片选LCD,使能命令模式
14e: 20 e1 ldi r18, 0x10 ; 16
150: 2b bb out 0x1b, r18 ; 27
DDRB=0xff; //定义为输出口,数据端口
152: 2f ef ldi r18, 0xFF ; 255
154: 27 bb out 0x17, r18 ; 23
PORTB=Command;
156: 88 bb out 0x18, r24 ; 24
PORTA|=(1<<CS1); //取消片选
158: d8 9a sbi 0x1b, 0 ; 27
15a: 08 95 ret
0000015c <F_SPLC501_Write_Data>:
}
//***************************************************************************//
//程序:F_SPLC501_Write_Data(unsigned int SendData)
//描述:往SPLC501里写一个字节数据 C语言调用
//参数:送入要传送的数据
// 声明: 手心 20070117 AVRGCC
//注意A0=1,EP=1,RW=0,Cs=0
//***************************************************************************//
void F_SPLC501_Write_Data(unsigned int SendData)
{
PORTA=(1<<A0)|(1<<EP)|(0<<RW)|(0<<CS1); //片选LCD,使能写数据
15c: 24 e1 ldi r18, 0x14 ; 20
15e: 2b bb out 0x1b, r18 ; 27
DDRB=0xff; //定义为输出口,数据端口
160: 2f ef ldi r18, 0xFF ; 255
162: 27 bb out 0x17, r18 ; 23
PORTB=(SendData);
164: 88 bb out 0x18, r24 ; 24
PORTA|=(1<<CS1); //取消片选
166: d8 9a sbi 0x1b, 0 ; 27
168: 08 95 ret
0000016a <F_SPLC501_Read_Data>:
}
//***************************************************************************//
//程序:F_SPLC501_Read_Data()
//描述:从SPLC501里读一个字节数据 C语言调用
//参数:输出传送的数据
// 声明: 手心 20070117 AVRGCC
//注意A0=1,EP=0,RW=1,Cs=0
//***************************************************************************//
unsigned int F_SPLC501_Read_Data(void)
{
unsigned int temp_data;
PORTA=(1<<A0)|(0<<EP)|(1<<RW)|(0<<CS1); //片选LCD,使能读数据
16a: 8c e0 ldi r24, 0x0C ; 12
16c: 8b bb out 0x1b, r24 ; 27
DDRB=0x00; //定义为输入口,数据端口
16e: 17 ba out 0x17, r1 ; 23
temp_data=PORTB;
170: 88 b3 in r24, 0x18 ; 24
PORTA|=(1<<CS1); //取消片选
172: d8 9a sbi 0x1b, 0 ; 27
return temp_data;
}
174: 99 27 eor r25, r25
176: 08 95 ret
00000178 <F_SPLC501_Read_Status>:
//***************************************************************************//
//程序:F_SPLC501_Read_Status()
//描述:从SPLC501里读状态字数据 C语言调用
//参数:输出传送的数据
// 声明: 手心 20070117 AVRGCC
//注意A0=0,EP=0,RW=1,Cs=0
//***************************************************************************//
unsigned int F_SPLC501_Read_Status(void)
{
unsigned int temp_status;
PORTA=(0<<A0)|(0<<EP)|(1<<RW)|(0<<CS1); //片选LCD,使能读状态
178: 88 e0 ldi r24, 0x08 ; 8
17a: 8b bb out 0x1b, r24 ; 27
DDRB=0x00; //定义为输入口,数据端口
17c: 17 ba out 0x17, r1 ; 23
temp_status=PORTB;
17e: 88 b3 in r24, 0x18 ; 24
PORTA|=(1<<CS1); //取消片选
180: d8 9a sbi 0x1b, 0 ; 27
return temp_status;
}
182: 99 27 eor r25, r25
184: 08 95 ret
00000186 <F_LCD_ONOFF>:
//***************************************************************************//
//程序:F_LCD_ON_OFF(unsigned int SetCom)
//描述:液晶开关函数 C语言调用
//参数:unsigned int SetCom SetCom=0:LCD Off SetCom!=0:LCD On
// 声明: 手心 20070117 AVRGCC
//***************************************************************************//
void F_LCD_ONOFF(unsigned int SetCom)
{
if(SetCom) //ON LCD
186: 89 2b or r24, r25
188: 19 f0 breq .+6 ; 0x190 <F_LCD_ONOFF+0xa>
F_SPLC501_Write_Com(M_LCD_ON);
18a: 8f ea ldi r24, 0xAF ; 175
18c: 90 e0 ldi r25, 0x00 ; 0
18e: 02 c0 rjmp .+4 ; 0x194 <F_LCD_ONOFF+0xe>
else //OFF LCD
F_SPLC501_Write_Com(M_LCD_OFF);
190: 8e ea ldi r24, 0xAE ; 174
192: 90 e0 ldi r25, 0x00 ; 0
194: 0e 94 a7 00 call 0x14e <F_SPLC501_Write_Com>
198: 08 95 ret
0000019a <LCD501_Init>:
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -