📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00001450 00800100 000009dc 00000a50 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 000009dc 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .stab 00000414 00000000 00000000 00001ea0 2**2
CONTENTS, READONLY, DEBUGGING
3 .stabstr 00000071 00000000 00000000 000022b4 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_aranges 00000040 00000000 00000000 00002325 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_pubnames 000000d1 00000000 00000000 00002365 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_info 00001586 00000000 00000000 00002436 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 000002ee 00000000 00000000 000039bc 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 00000b00 00000000 00000000 00003caa 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 00000080 00000000 00000000 000047ac 2**2
CONTENTS, READONLY, DEBUGGING
10 .debug_str 000001ee 00000000 00000000 0000482c 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 00000f5c 00000000 00000000 00004a1a 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 46 00 jmp 0x8c ; 0x8c <__ctors_end>
4: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
8: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
10: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
14: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
18: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
1c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
20: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
24: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
28: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
2c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
30: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
34: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
38: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
3c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
40: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
44: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
48: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
4c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
50: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
54: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
58: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
5c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
60: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
64: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
68: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
6c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
70: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
74: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
78: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
7c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
80: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
84: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
88: 0c 94 65 00 jmp 0xca ; 0xca <__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: 15 e1 ldi r17, 0x15 ; 21
9a: a0 e0 ldi r26, 0x00 ; 0
9c: b1 e0 ldi r27, 0x01 ; 1
9e: ec ed ldi r30, 0xDC ; 220
a0: f9 e0 ldi r31, 0x09 ; 9
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: a0 35 cpi r26, 0x50 ; 80
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10>
000000b2 <__do_clear_bss>:
b2: 15 e1 ldi r17, 0x15 ; 21
b4: a0 e5 ldi r26, 0x50 ; 80
b6: b5 e1 ldi r27, 0x15 ; 21
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: a0 35 cpi r26, 0x50 ; 80
be: b1 07 cpc r27, r17
c0: e1 f7 brne .-8 ; 0xba <.do_clear_bss_loop>
c2: 0e 94 67 00 call 0xce ; 0xce <main>
c6: 0c 94 ed 04 jmp 0x9da ; 0x9da <_exit>
000000ca <__bad_interrupt>:
ca: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000ce <main>:
#include"type.h"
int main(void)
{
ce: ef 92 push r14
d0: 0f 93 push r16
d2: 1f 93 push r17
d4: cf 93 push r28
d6: df 93 push r29
UINT j=0;
LCD12864_DataPort_DIR=0XFF;
d8: 8f ef ldi r24, 0xFF ; 255
da: 81 bb out 0x11, r24 ; 17
LCD12864_CONPort_DIR=0XFF;
dc: 84 bb out 0x14, r24 ; 20
Lcd12864_Init();
de: 0e 94 09 01 call 0x212 ; 0x212 <Lcd12864_Init>
//Write_lcd12864_Data( /*字号设置*/12 /*X*/,16,/*页设置*/0,/*列设置*/0,/*显示内容设置*/"激情创造",/*左右半屏设置*/0);
//Write_lcd12864_Data( /*字号设置*/12 /*X*/,16,/*页设置*/0,/*列设置*/0,/*显示内容设置*/"精彩无限",/*左右半屏设置*/1);
//Write_lcd12864_Data( /*字号设置*/16 /*X*/,16,/*页设置*/0,/*列设置*/0,/*显示内容设置*/"星雨天空",/*左右半屏设置*/0);
// Write_lcd12864_Data( /*字号设置*/8 /*X*/,16,/*页设置*/4,/*列设置*/0,/*显示内容设置*/"01234567",/*左右半屏设置*/1);
// Write_lcd12864_Data( /*字号设置*/8 /*X*/,16,/*页设置*/6,/*列设置*/0,/*显示内容设置*/"(89ABC)",/*左右半屏设置*/0);
//Write_lcd12864_Data( /*字号设置*/5 /*X*/,8,/*页设置*/2,/*列设置*/0,/*显示内容设置*/"0234567",/*左右半屏设置*/0);
// Write_lcd12864_Data( /*字号设置*/100 /*X*/,48,/*页设置*/1,/*列设置*/8,/*显示内容设置*/"图",/*左右半屏设置*/0);
Write_lcd12864_Data( /*字号设置*/128 /*X*/,64,/*页设置*/0,/*列设置*/0,/*显示内容设置*/"竞",/*左右半屏设置*/0);
e2: ee 24 eor r14, r14
e4: 00 e0 ldi r16, 0x00 ; 0
e6: 11 e0 ldi r17, 0x01 ; 1
e8: 20 e0 ldi r18, 0x00 ; 0
ea: 40 e0 ldi r20, 0x00 ; 0
ec: 60 e4 ldi r22, 0x40 ; 64
ee: 80 e8 ldi r24, 0x80 ; 128
f0: 0e 94 40 01 call 0x280 ; 0x280 <Write_lcd12864_Data>
f4: c0 e0 ldi r28, 0x00 ; 0
f6: d0 e0 ldi r29, 0x00 ; 0
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
f8: 80 e0 ldi r24, 0x00 ; 0
fa: 90 e0 ldi r25, 0x00 ; 0
fc: fc 01 movw r30, r24
fe: 31 97 sbiw r30, 0x01 ; 1
100: f1 f7 brne .-4 ; 0xfe <main+0x30>
//Write_lcd12864_Data( /*字号设置*/128 /*X*/,64,/*页设置*/0,/*列设置*/0,/*显示内容设置*/ "单", /*左右半屏设置*/0);
//while(1);
while(1)
{
_delay_ms(1000);
_delay_ms(1000);
Write_lcd12864_Order(j|0xc0,0);
102: 01 97 sbiw r24, 0x01 ; 1
104: f1 f7 brne .-4 ; 0x102 <main+0x34>
106: ce 01 movw r24, r28
108: 80 6c ori r24, 0xC0 ; 192
10a: 18 2f mov r17, r24
10c: 60 e0 ldi r22, 0x00 ; 0
10e: 0e 94 b5 00 call 0x16a ; 0x16a <Write_lcd12864_Order>
Write_lcd12864_Order(j|0xc0,1);
112: 61 e0 ldi r22, 0x01 ; 1
114: 81 2f mov r24, r17
116: 0e 94 b5 00 call 0x16a ; 0x16a <Write_lcd12864_Order>
j++;
11a: 21 96 adiw r28, 0x01 ; 1
if(j==64)
11c: c0 34 cpi r28, 0x40 ; 64
11e: d1 05 cpc r29, r1
120: 59 f7 brne .-42 ; 0xf8 <main+0x2a>
122: e8 cf rjmp .-48 ; 0xf4 <main+0x26>
00000124 <Is_lcd12864_busy>:
//读状态:输入:D/I=L,CS1或CS2=H,R/W=H,E=H 输出:D0--D7=状态字
//********************************************************
void Is_lcd12864_busy(UCHAR right)
{
124: 11 ba out 0x11, r1 ; 17
LCD12864_DataPort_DIR=0X00;
LCD12864_DataPort=0xff;
126: 9f ef ldi r25, 0xFF ; 255
128: 92 bb out 0x12, r25 ; 18
CLR_LCD_EN;
12a: aa 98 cbi 0x15, 2 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
12c: 94 e0 ldi r25, 0x04 ; 4
12e: 9a 95 dec r25
130: f1 f7 brne .-4 ; 0x12e <Is_lcd12864_busy+0xa>
_delay_us(2);
CLR_LCD_DI;
132: a8 98 cbi 0x15, 0 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
134: 92 e0 ldi r25, 0x02 ; 2
136: 9a 95 dec r25
138: f1 f7 brne .-4 ; 0x136 <Is_lcd12864_busy+0x12>
_delay_us(1);
if(1==right)
13a: 81 30 cpi r24, 0x01 ; 1
13c: 19 f4 brne .+6 ; 0x144 <Is_lcd12864_busy+0x20>
{
CLR_LCD_CS1;
13e: ab 98 cbi 0x15, 3 ; 21
SET_LCD_CS2;
140: ac 9a sbi 0x15, 4 ; 21
142: 02 c0 rjmp .+4 ; 0x148 <Is_lcd12864_busy+0x24>
}
else //左半平面
{
SET_LCD_CS1;
144: ab 9a sbi 0x15, 3 ; 21
CLR_LCD_CS2;
146: ac 98 cbi 0x15, 4 ; 21
}
SET_LCD_RW;
148: a9 9a sbi 0x15, 1 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
14a: 82 e0 ldi r24, 0x02 ; 2
14c: 8a 95 dec r24
14e: f1 f7 brne .-4 ; 0x14c <Is_lcd12864_busy+0x28>
_delay_us(1);
SET_LCD_EN;
150: aa 9a sbi 0x15, 2 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
152: 84 e0 ldi r24, 0x04 ; 4
154: 8a 95 dec r24
156: f1 f7 brne .-4 ; 0x154 <Is_lcd12864_busy+0x30>
_delay_us(2);
while(LCD12864_IP_DataPort & BUSY);
158: 87 99 sbic 0x10, 7 ; 16
15a: fe cf rjmp .-4 ; 0x158 <Is_lcd12864_busy+0x34>
// {
// DDRA=0XFF;
// PORTA=0XFF;
// }
CLR_LCD_EN;
15c: aa 98 cbi 0x15, 2 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
15e: 85 ef ldi r24, 0xF5 ; 245
160: 8a 95 dec r24
162: f1 f7 brne .-4 ; 0x160 <Is_lcd12864_busy+0x3c>
_delay_us(100);
// PORTA=0X00;
LCD12864_DataPort_DIR=0XFF;
164: 8f ef ldi r24, 0xFF ; 255
166: 81 bb out 0x11, r24 ; 17
168: 08 95 ret
0000016a <Write_lcd12864_Order>:
}
//********************************************************
// 写控制志
//写控制志:输入:D/I=L,CS1或CS2=H,R/W=L,E=H D0--D7=指令码,E=L
//********************************************************
void Write_lcd12864_Order(UCHAR order,UCHAR right)
{
16a: 1f 93 push r17
16c: 18 2f mov r17, r24
16e: 86 2f mov r24, r22
Is_lcd12864_busy(right);
170: 0e 94 92 00 call 0x124 ; 0x124 <Is_lcd12864_busy>
CLR_LCD_EN;
174: aa 98 cbi 0x15, 2 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
176: 94 e0 ldi r25, 0x04 ; 4
178: 89 2f mov r24, r25
17a: 8a 95 dec r24
17c: f1 f7 brne .-4 ; 0x17a <Write_lcd12864_Order+0x10>
_delay_us(2);
CLR_LCD_DI;
17e: a8 98 cbi 0x15, 0 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
180: 82 e0 ldi r24, 0x02 ; 2
182: 28 2f mov r18, r24
184: 2a 95 dec r18
186: f1 f7 brne .-4 ; 0x184 <Write_lcd12864_Order+0x1a>
_delay_us(1);
CLR_LCD_RW;
188: a9 98 cbi 0x15, 1 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
18a: 8a 95 dec r24
18c: f1 f7 brne .-4 ; 0x18a <Write_lcd12864_Order+0x20>
_delay_us(1);
LCD12864_DataPort=order;
18e: 12 bb out 0x12, r17 ; 18
SET_LCD_EN;
190: aa 9a sbi 0x15, 2 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
192: 89 2f mov r24, r25
194: 8a 95 dec r24
196: f1 f7 brne .-4 ; 0x194 <Write_lcd12864_Order+0x2a>
_delay_us(2);
CLR_LCD_EN;
198: aa 98 cbi 0x15, 2 ; 21
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
19a: 9a 95 dec r25
19c: f1 f7 brne .-4 ; 0x19a <Write_lcd12864_Order+0x30>
19e: 1f 91 pop r17
1a0: 08 95 ret
000001a2 <Clearscreen>:
_delay_us(2);
//order=
//0x3e//显示开/关 //on=on|3e (0——1)
//0xc0//起始行地址为0//x=x|c0 (0——63)
//0xb8//起始页地址为0//ye=ye|b8 (0——7)
//0x40//起始列地址为0//y=y|40 (0——63)
}
//********************************************************
// 写数据
//写数据:输入:D/I=H,CS1或CS2=H,R/W=L,E=H D0--D7=数据,E=L
//********************************************************
void Write_lcd12864_Data(/*字号设置*/UCHAR H /*X*/,UCHAR L,/*页设置*/UCHAR page,/*列设置*/UCHAR y,/*显示内容设置*/char hz[],/*左右半屏设置*/UCHAR right)
{
UCHAR i,ki,j;
UCHAR len;
UINT k;
char *p1;
//**************************************************************
len=strlen(hz); //取输入字符串的长度
if(8>=H) //判断字体大小
for(ki=0;ki<len;ki++)
{
p1=&hz[ki]; //取出传送的字符(一个一个的取)
//*************************************************************
switch(H)
{
//*************************************************************
case 5: //5*8
{
for(k=0;k<sizeof(ASC_5)/sizeof(ASC_5[0]);k++) //取出字库的长度
{
//找出对应字符
if(p1[0] == ASC_5[k].Index[0] )
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -