📄 splc501.lss
字号:
SPLC501.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000746 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000003 00800060 00800060 000007ba 2**0
ALLOC
2 .stab 00000378 00000000 00000000 000007bc 2**2
CONTENTS, READONLY, DEBUGGING
3 .stabstr 00000071 00000000 00000000 00000b34 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_aranges 00000020 00000000 00000000 00000ba5 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_pubnames 00000123 00000000 00000000 00000bc5 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_info 00000641 00000000 00000000 00000ce8 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 0000021c 00000000 00000000 00001329 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 000005c8 00000000 00000000 00001545 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 00000110 00000000 00000000 00001b10 2**2
CONTENTS, READONLY, DEBUGGING
10 .debug_str 00000287 00000000 00000000 00001c20 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 00000433 00000000 00000000 00001ea7 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 aa 00 jmp 0x154 ; 0x154 <__ctors_end>
4: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
8: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
c: 0c 94 91 01 jmp 0x322 ; 0x322 <__vector_3>
10: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
14: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
18: 0c 94 b3 01 jmp 0x366 ; 0x366 <__vector_6>
1c: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
20: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
24: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
28: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
2c: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
30: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
34: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
38: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
3c: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
40: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
44: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
48: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
4c: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
50: 0c 94 c7 00 jmp 0x18e ; 0x18e <__bad_interrupt>
00000054 <HZK>:
54: fc 04 04 fc 40 48 48 48 48 ff 48 48 48 48 40 00 ....@HHHH.HHHH@.
64: 0f 02 02 47 40 44 44 44 44 7f 44 44 44 44 40 00 ...G@DDDD.DDDD@.
74: fc 04 04 fc 20 20 50 48 44 43 44 48 58 30 10 00 .... PHDCDHX0..
84: 07 01 01 03 00 00 7f 21 21 21 21 21 7f 00 00 00 .......!!!!!....
94: 00 c0 c0 00 00 00 c0 c0 00 00 00 c0 c0 00 00 00 ................
...
b4: fe 22 22 fe 00 92 f2 92 92 fe 91 91 f1 91 90 00 ."".............
c4: 7f 11 11 3f 00 48 4f 48 48 7f 48 48 4f 48 08 00 ...?.HOHH.HHOH..
d4: 00 18 09 ca 4c 48 49 4a 4e 48 48 cc 0b 1a 00 00 ....LHIJNHH.....
e4: 00 00 80 8f 40 20 10 0f 70 80 80 8f 80 e0 40 00 ....@ ..p.....@.
f4: fc 04 04 fc 08 08 ff 88 08 c8 09 0e 08 e8 08 00 ................
104: 07 02 02 03 22 41 3f 00 20 23 2c 20 2c 23 20 00 ...."A?. #, ,# .
...
124: 00 18 24 24 18 00 00 00 00 00 00 00 00 00 00 00 ..$$............
134: fc 04 04 fc 00 7e 26 3a 22 fe 32 2e 2a 7e 00 00 .....~&:".2.*~..
144: 07 02 02 07 44 35 05 15 65 07 15 65 05 15 64 00 ....D5..e..e..d.
00000154 <__ctors_end>:
154: 11 24 eor r1, r1
156: 1f be out 0x3f, r1 ; 63
158: cf e5 ldi r28, 0x5F ; 95
15a: d4 e0 ldi r29, 0x04 ; 4
15c: de bf out 0x3e, r29 ; 62
15e: cd bf out 0x3d, r28 ; 61
00000160 <__do_copy_data>:
160: 10 e0 ldi r17, 0x00 ; 0
162: a0 e6 ldi r26, 0x60 ; 96
164: b0 e0 ldi r27, 0x00 ; 0
166: e6 e4 ldi r30, 0x46 ; 70
168: f7 e0 ldi r31, 0x07 ; 7
16a: 02 c0 rjmp .+4 ; 0x170 <.do_copy_data_start>
0000016c <.do_copy_data_loop>:
16c: 05 90 lpm r0, Z+
16e: 0d 92 st X+, r0
00000170 <.do_copy_data_start>:
170: a0 36 cpi r26, 0x60 ; 96
172: b1 07 cpc r27, r17
174: d9 f7 brne .-10 ; 0x16c <.do_copy_data_loop>
00000176 <__do_clear_bss>:
176: 10 e0 ldi r17, 0x00 ; 0
178: a0 e6 ldi r26, 0x60 ; 96
17a: b0 e0 ldi r27, 0x00 ; 0
17c: 01 c0 rjmp .+2 ; 0x180 <.do_clear_bss_start>
0000017e <.do_clear_bss_loop>:
17e: 1d 92 st X+, r1
00000180 <.do_clear_bss_start>:
180: a3 36 cpi r26, 0x63 ; 99
182: b1 07 cpc r27, r17
184: e1 f7 brne .-8 ; 0x17e <.do_clear_bss_loop>
186: 0e 94 ca 01 call 0x394 ; 0x394 <main>
18a: 0c 94 a2 03 jmp 0x744 ; 0x744 <_exit>
0000018e <__bad_interrupt>:
18e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000192 <SPLC501SPIWrite>:
#define SPLC501_RES 0x08
#define SPLC501_CS 0x10
void SPLC501SPIWrite(unsigned char data_command,unsigned char a0) //a0=0时表示发送命令,a0=1时表示发送数据
{
192: 66 23 and r22, r22
194: 11 f0 breq .+4 ; 0x19a <SPLC501SPIWrite+0x8>
unsigned char i;
if(a0)SPLC501_A0_PORT|=SPLC501_A0; //SPLC501_A0=a0;
196: da 9a sbi 0x1b, 2 ; 27
198: 01 c0 rjmp .+2 ; 0x19c <SPLC501SPIWrite+0xa>
else SPLC501_A0_PORT&=~SPLC501_A0;
19a: da 98 cbi 0x1b, 2 ; 27
SPLC501_CS_PORT&=~SPLC501_CS; //SPLC501_CS=0;
19c: dc 98 cbi 0x1b, 4 ; 27
19e: 90 e0 ldi r25, 0x00 ; 0
for(i=0;i<8;i++)
{
SPLC501_CLK_PORT&=~SPLC501_CLK; //SPLC501_CLK=0;
1a0: d8 98 cbi 0x1b, 0 ; 27
if((data_command&0x80)==0)SPLC501_DIN_PORT&=~SPLC501_DIN;
1a2: 87 fd sbrc r24, 7
1a4: 02 c0 rjmp .+4 ; 0x1aa <SPLC501SPIWrite+0x18>
1a6: d9 98 cbi 0x1b, 1 ; 27
1a8: 01 c0 rjmp .+2 ; 0x1ac <SPLC501SPIWrite+0x1a>
else SPLC501_DIN_PORT|=SPLC501_DIN; //SPLC501_DIN=(data_command&0x80)==0?0:1;
1aa: d9 9a sbi 0x1b, 1 ; 27
data_command<<=1;
SPLC501_CLK_PORT|=SPLC501_CLK; //SPLC501_CLK=1;
1ac: d8 9a sbi 0x1b, 0 ; 27
1ae: 9f 5f subi r25, 0xFF ; 255
1b0: 98 30 cpi r25, 0x08 ; 8
1b2: 11 f0 breq .+4 ; 0x1b8 <SPLC501SPIWrite+0x26>
1b4: 88 0f add r24, r24
1b6: f4 cf rjmp .-24 ; 0x1a0 <SPLC501SPIWrite+0xe>
}
SPLC501_CS_PORT|=SPLC501_CS; //SPLC501_CS=1;
1b8: dc 9a sbi 0x1b, 4 ; 27
1ba: 08 95 ret
000001bc <SPLC501LineRun>:
}
void SPLC501LineRun(unsigned char line) //起始行设置.滚屏功能用
{
1bc: 60 e0 ldi r22, 0x00 ; 0
1be: 80 5c subi r24, 0xC0 ; 192
1c0: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
1c4: 08 95 ret
000001c6 <LCD_Init>:
//if(line>=0x80)line=0; //line=0~63
SPLC501SPIWrite(0x40+line,0); //设置显示起始行对应RAM
}
void LCD_Init(void) //LCD初始化函数
{
1c6: db 98 cbi 0x1b, 3 ; 27
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
1c8: 80 e0 ldi r24, 0x00 ; 0
1ca: 98 2f mov r25, r24
1cc: 9a 95 dec r25
1ce: f1 f7 brne .-4 ; 0x1cc <LCD_Init+0x6>
SPLC501_RES_PORT&=~SPLC501_RES; //SPLC501_RES=0; //LCD(低电平)复位
_delay_us(100);
SPLC501_RES_PORT|=SPLC501_RES; //SPLC501_RES=1; // RES置高
1d0: db 9a sbi 0x1b, 3 ; 27
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
1d2: 8a 95 dec r24
1d4: f1 f7 brne .-4 ; 0x1d2 <LCD_Init+0xc>
_delay_us(100);
SPLC501SPIWrite(0xa2,0);//LCD偏压设置:5V:0xa2;3.3V:0xa1.
1d6: 60 e0 ldi r22, 0x00 ; 0
1d8: 82 ea ldi r24, 0xA2 ; 162
1da: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0xa1,0);//列地址选择为从右到左对应0~127;0xa1:列地址从左到右;0xa0:列地址从右到左
1de: 60 e0 ldi r22, 0x00 ; 0
1e0: 81 ea ldi r24, 0xA1 ; 161
1e2: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0xc0,0);//行地址从上到下为0~63;0xc0:行地址从上到下;0xc8:行地址从下到上
1e6: 60 e0 ldi r22, 0x00 ; 0
1e8: 80 ec ldi r24, 0xC0 ; 192
1ea: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x25,0);//V5电压内部电阻调整设置 一般在24~27之间
1ee: 60 e0 ldi r22, 0x00 ; 0
1f0: 85 e2 ldi r24, 0x25 ; 37
1f2: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x81,0);//亮度调整命令0~63(暗到亮)
1f6: 60 e0 ldi r22, 0x00 ; 0
1f8: 81 e8 ldi r24, 0x81 ; 129
1fa: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x10,0);//亮度调节为双字节命令,前一个参数控制字的深浅
1fe: 60 e0 ldi r22, 0x00 ; 0
200: 80 e1 ldi r24, 0x10 ; 16
202: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x2f,0);//上电控制,打开调压器、稳压器和电压跟随
206: 60 e0 ldi r22, 0x00 ; 0
208: 8f e2 ldi r24, 0x2F ; 47
20a: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0xa6,0);//正相反相显示控制指令,RAM中数据不变.0xa6:白底黑字;0xa7:黑底白字.
20e: 60 e0 ldi r22, 0x00 ; 0
210: 86 ea ldi r24, 0xA6 ; 166
212: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0xaf,0);//0xae:set display off.0xaf:set display on
216: 60 e0 ldi r22, 0x00 ; 0
218: 8f ea ldi r24, 0xAF ; 175
21a: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
21e: 08 95 ret
00000220 <Test>:
}
void Test(unsigned char a,unsigned char b)//全屏测试
{
220: ef 92 push r14
222: ff 92 push r15
224: 0f 93 push r16
226: 1f 93 push r17
228: cf 93 push r28
22a: df 93 push r29
22c: e8 2e mov r14, r24
22e: f6 2e mov r15, r22
230: 00 eb ldi r16, 0xB0 ; 176
232: 10 e0 ldi r17, 0x00 ; 0
234: 80 2f mov r24, r16
unsigned int i,j,page=0xb0;//指向首页命令
for(i=0;i<8;i++)
{
SPLC501SPIWrite(page++,0); //指向对应页
236: 0f 5f subi r16, 0xFF ; 255
238: 1f 4f sbci r17, 0xFF ; 255
23a: 60 e0 ldi r22, 0x00 ; 0
23c: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x10,0); //SET COLUMN(列) ADDRESS MSB(高4位)为0
240: 60 e0 ldi r22, 0x00 ; 0
242: 80 e1 ldi r24, 0x10 ; 16
244: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x04,0); //SET COLUMN ADDRESS LSB(低4位)为0
248: 60 e0 ldi r22, 0x00 ; 0
24a: 84 e0 ldi r24, 0x04 ; 4
24c: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
250: c0 e0 ldi r28, 0x00 ; 0
252: d0 e0 ldi r29, 0x00 ; 0
//SPLC501SPIWrite(0xee); //读改写模式结束指令
for(j=0;j<64;j++)
{
SPLC501SPIWrite(a,1);
254: 61 e0 ldi r22, 0x01 ; 1
256: 8e 2d mov r24, r14
258: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(b,1);
25c: 61 e0 ldi r22, 0x01 ; 1
25e: 8f 2d mov r24, r15
260: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
264: 21 96 adiw r28, 0x01 ; 1
266: c0 34 cpi r28, 0x40 ; 64
268: d1 05 cpc r29, r1
26a: a1 f7 brne .-24 ; 0x254 <Test+0x34>
26c: 08 3b cpi r16, 0xB8 ; 184
26e: 11 05 cpc r17, r1
270: 09 f7 brne .-62 ; 0x234 <Test+0x14>
272: df 91 pop r29
274: cf 91 pop r28
276: 1f 91 pop r17
278: 0f 91 pop r16
27a: ff 90 pop r15
27c: ef 90 pop r14
27e: 08 95 ret
00000280 <DisplayWords>:
}
}
}
//显示一个字或多个字函数
void DisplayWords(unsigned int p, //指向图片数组首地址
unsigned char page_f, //起始页
unsigned char page_sum, //占多少页
unsigned char column_f, //起始列
unsigned char column_sum) //占多少列
{
280: af 92 push r10
282: bf 92 push r11
284: cf 92 push r12
286: df 92 push r13
288: ef 92 push r14
28a: ff 92 push r15
28c: 0f 93 push r16
28e: 1f 93 push r17
290: cf 93 push r28
292: df 93 push r29
294: ec 01 movw r28, r24
296: b6 2e mov r11, r22
298: a4 2e mov r10, r20
29a: c2 2e mov r12, r18
29c: d0 2e mov r13, r16
29e: e6 2e mov r14, r22
2a0: 23 c0 rjmp .+70 ; 0x2e8 <DisplayWords+0x68>
unsigned char i,j;
unsigned char page=0xb0; //指向首页命令
for(i=page_f;i<page_sum+page_f;i++)
{
SPLC501SPIWrite(page+i,0);
2a2: 60 e0 ldi r22, 0x00 ; 0
2a4: 8e 2d mov r24, r14
2a6: 80 55 subi r24, 0x50 ; 80
2a8: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x10|(column_f>>4),0); //设定列地址高4位为0
2ac: 8c 2d mov r24, r12
2ae: 82 95 swap r24
2b0: 8f 70 andi r24, 0x0F ; 15
2b2: 60 e0 ldi r22, 0x00 ; 0
2b4: 80 61 ori r24, 0x10 ; 16
2b6: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x04|(0x0f&column_f),0); //设定列地址低4位为0
2ba: 8c 2d mov r24, r12
2bc: 8f 70 andi r24, 0x0F ; 15
2be: 60 e0 ldi r22, 0x00 ; 0
2c0: 84 60 ori r24, 0x04 ; 4
2c2: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
2c6: fe 01 movw r30, r28
2c8: ff 24 eor r15, r15
2ca: 09 c0 rjmp .+18 ; 0x2de <DisplayWords+0x5e>
for(j=0;j<column_sum;j++)SPLC501SPIWrite(pgm_read_byte(p++),1);
2cc: 8f 01 movw r16, r30
2ce: 0f 5f subi r16, 0xFF ; 255
2d0: 1f 4f sbci r17, 0xFF ; 255
2d2: 84 91 lpm r24, Z
2d4: 61 e0 ldi r22, 0x01 ; 1
2d6: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
2da: f3 94 inc r15
2dc: f8 01 movw r30, r16
2de: fd 14 cp r15, r13
2e0: a9 f7 brne .-22 ; 0x2cc <DisplayWords+0x4c>
2e2: cd 0d add r28, r13
2e4: d1 1d adc r29, r1
2e6: e3 94 inc r14
2e8: 2e 2d mov r18, r14
2ea: 33 27 eor r19, r19
2ec: 4a 2d mov r20, r10
2ee: 4b 0d add r20, r11
2f0: 51 2d mov r21, r1
2f2: 51 1d adc r21, r1
2f4: 24 17 cp r18, r20
2f6: 35 07 cpc r19, r21
2f8: a4 f2 brlt .-88 ; 0x2a2 <DisplayWords+0x22>
2fa: df 91 pop r29
2fc: cf 91 pop r28
2fe: 1f 91 pop r17
300: 0f 91 pop r16
302: ff 90 pop r15
304: ef 90 pop r14
306: df 90 pop r13
308: cf 90 pop r12
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -