📄 main.lss
字号:
1d0: 1f 91 pop r17
1d2: 08 95 ret
000001d4 <BFRead>:
}
unsigned char BFRead(void)
{
1d4: 1f 93 push r17
unsigned char bf;
RS_0;
1d6: 94 98 cbi 0x12, 4 ; 18
RW_1;
1d8: 95 9a sbi 0x12, 5 ; 18
delay_us(100);
1da: 84 e6 ldi r24, 0x64 ; 100
1dc: 90 e0 ldi r25, 0x00 ; 0
1de: 0e 94 70 01 call 0x2e0 <delay_us>
EN_1;
1e2: 97 9a sbi 0x12, 7 ; 18
delay_us(100);
1e4: 84 e6 ldi r24, 0x64 ; 100
1e6: 90 e0 ldi r25, 0x00 ; 0
1e8: 0e 94 70 01 call 0x2e0 <delay_us>
DataIn;
1ec: 1a ba out 0x1a, r1 ; 26
bf = DataLcdIn;
1ee: 19 b3 in r17, 0x19 ; 25
EN_0;
1f0: 97 98 cbi 0x12, 7 ; 18
delay_us(100);
1f2: 84 e6 ldi r24, 0x64 ; 100
1f4: 90 e0 ldi r25, 0x00 ; 0
1f6: 0e 94 70 01 call 0x2e0 <delay_us>
RS_1;
1fa: 94 9a sbi 0x12, 4 ; 18
RW_0;
1fc: 95 98 cbi 0x12, 5 ; 18
return bf;
}
1fe: 81 2f mov r24, r17
200: 99 27 eor r25, r25
202: 1f 91 pop r17
204: 08 95 ret
00000206 <LCDReady>:
void LCDReady(void)
{
unsigned char bf;
do
{bf = BFRead();
206: 0e 94 ea 00 call 0x1d4 <BFRead>
//PORTA = bf; //just for debug
}
20a: 88 23 and r24, r24
20c: e4 f3 brlt .-8 ; 0x206 <LCDReady>
while((bf&0x80)==0x80);
DataOut;
20e: 8f ef ldi r24, 0xFF ; 255
210: 8a bb out 0x1a, r24 ; 26
212: 08 95 ret
00000214 <CharWrite>:
}
void CharWrite(unsigned char data)
{
214: 1f 93 push r17
216: 18 2f mov r17, r24
LCDReady();
218: 0e 94 03 01 call 0x206 <LCDReady>
RS_1;
21c: 94 9a sbi 0x12, 4 ; 18
RW_0;
21e: 95 98 cbi 0x12, 5 ; 18
DataLcd = data; //
220: 1b bb out 0x1b, r17 ; 27
delay_us(100);
222: 84 e6 ldi r24, 0x64 ; 100
224: 90 e0 ldi r25, 0x00 ; 0
226: 0e 94 70 01 call 0x2e0 <delay_us>
EN_1;
22a: 97 9a sbi 0x12, 7 ; 18
delay_us(100);
22c: 84 e6 ldi r24, 0x64 ; 100
22e: 90 e0 ldi r25, 0x00 ; 0
230: 0e 94 70 01 call 0x2e0 <delay_us>
EN_0;
234: 97 98 cbi 0x12, 7 ; 18
delay_us(100);
236: 84 e6 ldi r24, 0x64 ; 100
238: 90 e0 ldi r25, 0x00 ; 0
23a: 0e 94 70 01 call 0x2e0 <delay_us>
RS_0;
23e: 94 98 cbi 0x12, 4 ; 18
RW_1;
240: 95 9a sbi 0x12, 5 ; 18
242: 1f 91 pop r17
244: 08 95 ret
00000246 <LcdInit>:
}
void LcdInit(void)
{
FunctionSet();
246: 0e 94 ad 00 call 0x15a <FunctionSet>
LCDReady();
24a: 0e 94 03 01 call 0x206 <LCDReady>
DdramSet(0);
24e: 80 e0 ldi r24, 0x00 ; 0
250: 0e 94 cd 00 call 0x19a <DdramSet>
LCDReady();
254: 0e 94 03 01 call 0x206 <LCDReady>
VisionSet();
258: 0e 94 90 00 call 0x120 <VisionSet>
LCDReady();
25c: 0e 94 03 01 call 0x206 <LCDReady>
InputSet();
260: 0e 94 7b 00 call 0xf6 <InputSet>
LCDReady();
264: 0e 94 03 01 call 0x206 <LCDReady>
ClearLcd();
268: 0e 94 47 00 call 0x8e <ClearLcd>
LCDReady();
26c: 0e 94 03 01 call 0x206 <LCDReady>
home();
270: 0e 94 66 00 call 0xcc <home>
delay_us(10);
274: 8a e0 ldi r24, 0x0A ; 10
276: 90 e0 ldi r25, 0x00 ; 0
278: 0e 94 70 01 call 0x2e0 <delay_us>
27c: 08 95 ret
0000027e <CharsWrite>:
}
void CharsWrite(unsigned char addrx,unsigned char addry,unsigned char *s)
{
27e: 0f 93 push r16
280: 1f 93 push r17
282: cf 93 push r28
284: 8a 01 movw r16, r20
unsigned char addr;
if (addry==1)
286: 61 30 cpi r22, 0x01 ; 1
288: 11 f4 brne .+4 ; 0x28e <CharsWrite+0x10>
{
addr = addrx;
28a: c8 2f mov r28, r24
28c: 06 c0 rjmp .+12 ; 0x29a <CharsWrite+0x1c>
}
else if (addry==2)
28e: 62 30 cpi r22, 0x02 ; 2
290: 19 f4 brne .+6 ; 0x298 <CharsWrite+0x1a>
{
addr = (addrx+0x40);
292: c8 2f mov r28, r24
294: c0 5c subi r28, 0xC0 ; 192
296: 01 c0 rjmp .+2 ; 0x29a <CharsWrite+0x1c>
}
else
{
addr = 0;
298: c0 e0 ldi r28, 0x00 ; 0
}
DdramSet(0); //初始化ddram地址
29a: 80 e0 ldi r24, 0x00 ; 0
29c: 0e 94 cd 00 call 0x19a <DdramSet>
LCDReady();
2a0: 0e 94 03 01 call 0x206 <LCDReady>
DdramSet(addr); //设定ddram地址
2a4: 8c 2f mov r24, r28
2a6: 0e 94 cd 00 call 0x19a <DdramSet>
delay_us(80);
2aa: 80 e5 ldi r24, 0x50 ; 80
2ac: 90 e0 ldi r25, 0x00 ; 0
2ae: 0e 94 70 01 call 0x2e0 <delay_us>
while(*s)
{
CharWrite(*s);
s++;
delay_us(80); //等待写入操作完成
2b2: f8 01 movw r30, r16
2b4: 80 81 ld r24, Z
2b6: 88 23 and r24, r24
2b8: 69 f0 breq .+26 ; 0x2d4 <CharsWrite+0x56>
2ba: f8 01 movw r30, r16
2bc: 81 91 ld r24, Z+
2be: 8f 01 movw r16, r30
2c0: 0e 94 0a 01 call 0x214 <CharWrite>
2c4: 80 e5 ldi r24, 0x50 ; 80
2c6: 90 e0 ldi r25, 0x00 ; 0
2c8: 0e 94 70 01 call 0x2e0 <delay_us>
2cc: f8 01 movw r30, r16
2ce: 80 81 ld r24, Z
2d0: 88 23 and r24, r24
2d2: 99 f7 brne .-26 ; 0x2ba <CharsWrite+0x3c>
2d4: cf 91 pop r28
2d6: 1f 91 pop r17
2d8: 0f 91 pop r16
2da: 08 95 ret
000002dc <delay_1us>:
/*时钟为8MHZ*/
void delay_1us(void)
{
asm("nop");
2dc: 00 00 nop
2de: 08 95 ret
000002e0 <delay_us>:
}
void delay_us(unsigned int itimes)
{
2e0: 0f 93 push r16
2e2: 1f 93 push r17
2e4: cf 93 push r28
2e6: df 93 push r29
2e8: 8c 01 movw r16, r24
unsigned int itemp;
for (itemp=0;itemp<itimes;itemp++)
2ea: c0 e0 ldi r28, 0x00 ; 0
2ec: d0 e0 ldi r29, 0x00 ; 0
2ee: c8 17 cp r28, r24
2f0: d9 07 cpc r29, r25
2f2: 30 f4 brcc .+12 ; 0x300 <delay_us+0x20>
{
delay_1us();
2f4: 0e 94 6e 01 call 0x2dc <delay_1us>
2f8: 21 96 adiw r28, 0x01 ; 1
2fa: c0 17 cp r28, r16
2fc: d1 07 cpc r29, r17
2fe: d0 f3 brcs .-12 ; 0x2f4 <delay_us+0x14>
300: df 91 pop r29
302: cf 91 pop r28
304: 1f 91 pop r17
306: 0f 91 pop r16
308: 08 95 ret
0000030a <delay_1ms>:
}
}
void delay_1ms(void)
{
30a: 84 e7 ldi r24, 0x74 ; 116
30c: 94 e0 ldi r25, 0x04 ; 4
unsigned int itemp;
for(itemp=1;itemp<1142;itemp++);
30e: 07 97 sbiw r24, 0x07 ; 7
310: 97 ff sbrs r25, 7
312: fd cf rjmp .-6 ; 0x30e <delay_1ms+0x4>
314: 08 95 ret
00000316 <delay_ms>:
}
void delay_ms(unsigned int itimes)
{
316: 0f 93 push r16
318: 1f 93 push r17
31a: cf 93 push r28
31c: df 93 push r29
31e: 8c 01 movw r16, r24
unsigned int itemp;
for (itemp=0;itemp<itimes;itemp++)
320: c0 e0 ldi r28, 0x00 ; 0
322: d0 e0 ldi r29, 0x00 ; 0
324: c8 17 cp r28, r24
326: d9 07 cpc r29, r25
328: 30 f4 brcc .+12 ; 0x336 <delay_ms+0x20>
{
delay_1ms();
32a: 0e 94 85 01 call 0x30a <delay_1ms>
32e: 21 96 adiw r28, 0x01 ; 1
330: c0 17 cp r28, r16
332: d1 07 cpc r29, r17
334: d0 f3 brcs .-12 ; 0x32a <delay_ms+0x14>
336: df 91 pop r29
338: cf 91 pop r28
33a: 1f 91 pop r17
33c: 0f 91 pop r16
33e: 08 95 ret
00000340 <mcu_init>:
void mcu_init(void)
{
DDRD = 0XFF;
340: 8f ef ldi r24, 0xFF ; 255
342: 81 bb out 0x11, r24 ; 17
PORTD = 0XFF;
344: 82 bb out 0x12, r24 ; 18
DDRA = 0XFF;
346: 8a bb out 0x1a, r24 ; 26
PORTA = 0XFF;
348: 8b bb out 0x1b, r24 ; 27
// DDRA = 0XFF;
DDRC = 0XFF;
34a: 84 bb out 0x14, r24 ; 20
34c: 08 95 ret
0000034e <main>:
// PORTA = 0XFF;
// PORTC = 0XFF;
}
void main()
{
34e: cf e5 ldi r28, 0x5F ; 95
350: d4 e0 ldi r29, 0x04 ; 4
352: de bf out 0x3e, r29 ; 62
354: cd bf out 0x3d, r28 ; 61
mcu_init();
356: 0e 94 a0 01 call 0x340 <mcu_init>
LCDReady();
35a: 0e 94 03 01 call 0x206 <LCDReady>
LcdInit();
35e: 0e 94 23 01 call 0x246 <LcdInit>
CharsWrite(3,1,"PassWord");
362: 40 e6 ldi r20, 0x60 ; 96
364: 50 e0 ldi r21, 0x00 ; 0
366: 61 e0 ldi r22, 0x01 ; 1
368: 70 e0 ldi r23, 0x00 ; 0
36a: 83 e0 ldi r24, 0x03 ; 3
36c: 90 e0 ldi r25, 0x00 ; 0
36e: 0e 94 3f 01 call 0x27e <CharsWrite>
CharsWrite(6,2,"V1.0");
372: 49 e6 ldi r20, 0x69 ; 105
374: 50 e0 ldi r21, 0x00 ; 0
376: 62 e0 ldi r22, 0x02 ; 2
378: 70 e0 ldi r23, 0x00 ; 0
37a: 86 e0 ldi r24, 0x06 ; 6
37c: 90 e0 ldi r25, 0x00 ; 0
37e: 0e 94 3f 01 call 0x27e <CharsWrite>
delay_ms(2000);
382: 80 ed ldi r24, 0xD0 ; 208
384: 97 e0 ldi r25, 0x07 ; 7
386: 0e 94 8b 01 call 0x316 <delay_ms>
38a: 0c 94 c7 01 jmp 0x38e <_exit>
0000038e <_exit>:
38e: ff cf rjmp .-2 ; 0x38e <_exit>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -