📄 splc501.lss
字号:
30a: bf 90 pop r11
30c: af 90 pop r10
30e: 08 95 ret
00000310 <Timer2Init>:
}
}
//系统时钟:11059200Hz 分频:1024
//CTC TOP值:0x35
//误差:0.000000个系统周期
//Timer2初始化
volatile unsigned int sign_5ms=0;
void Timer2Init(void)
{
310: 14 bc out 0x24, r1 ; 36
TCNT2=0x00;
OCR2=0x35;
312: 85 e3 ldi r24, 0x35 ; 53
314: 83 bd out 0x23, r24 ; 35
TCCR2=(1<<WGM21)|(1<<CS22)|(1<<CS21)|(1<<CS22);
316: 8e e0 ldi r24, 0x0E ; 14
318: 85 bd out 0x25, r24 ; 37
//TCNT2=0xcb;
TIMSK|=1<<OCIE2;
31a: 89 b7 in r24, 0x39 ; 57
31c: 80 68 ori r24, 0x80 ; 128
31e: 89 bf out 0x39, r24 ; 57
320: 08 95 ret
00000322 <__vector_3>:
}
//Timer2 CTC中断,此中断发生周期是:5毫秒
ISR(TIMER2_COMP_vect)
{
322: 1f 92 push r1
324: 0f 92 push r0
326: 0f b6 in r0, 0x3f ; 63
328: 0f 92 push r0
32a: 11 24 eor r1, r1
32c: 8f 93 push r24
32e: 9f 93 push r25
sign_5ms+=1;
330: 80 91 60 00 lds r24, 0x0060
334: 90 91 61 00 lds r25, 0x0061
338: 01 96 adiw r24, 0x01 ; 1
33a: 90 93 61 00 sts 0x0061, r25
33e: 80 93 60 00 sts 0x0060, r24
342: 9f 91 pop r25
344: 8f 91 pop r24
346: 0f 90 pop r0
348: 0f be out 0x3f, r0 ; 63
34a: 0f 90 pop r0
34c: 1f 90 pop r1
34e: 18 95 reti
00000350 <Timer1Init>:
}
//系统时钟:11059200Hz 分频:256
//CTC TOP值:0xA8C0
//误差:0.000000个系统周期
//Timer1初始化
volatile unsigned char sign_1s=0;
void Timer1Init(void)
{
350: 1f bc out 0x2f, r1 ; 47
TCCR1A=0;
TCCR1B=(1<<WGM12)|(1<<CS12);
352: 8c e0 ldi r24, 0x0C ; 12
354: 8e bd out 0x2e, r24 ; 46
OCR1A=0xA8C0;
356: 80 ec ldi r24, 0xC0 ; 192
358: 98 ea ldi r25, 0xA8 ; 168
35a: 9b bd out 0x2b, r25 ; 43
35c: 8a bd out 0x2a, r24 ; 42
TIMSK|=1<<OCIE1A;
35e: 89 b7 in r24, 0x39 ; 57
360: 80 61 ori r24, 0x10 ; 16
362: 89 bf out 0x39, r24 ; 57
364: 08 95 ret
00000366 <__vector_6>:
}
//Timer1 CTC中断,此中断发生周期是:1000毫秒
ISR(TIMER1_COMPA_vect)
{
366: 1f 92 push r1
368: 0f 92 push r0
36a: 0f b6 in r0, 0x3f ; 63
36c: 0f 92 push r0
36e: 11 24 eor r1, r1
370: 8f 93 push r24
sign_1s++;
372: 80 91 62 00 lds r24, 0x0062
376: 8f 5f subi r24, 0xFF ; 255
378: 80 93 62 00 sts 0x0062, r24
37c: 8f 91 pop r24
37e: 0f 90 pop r0
380: 0f be out 0x3f, r0 ; 63
382: 0f 90 pop r0
384: 1f 90 pop r1
386: 18 95 reti
00000388 <MCU_Init>:
}
void MCU_Init(void)
{
388: d0 9a sbi 0x1a, 0 ; 26
SPLC501_CLK_DDR|=SPLC501_CLK;
SPLC501_DIN_DDR|=SPLC501_DIN;
38a: d1 9a sbi 0x1a, 1 ; 26
SPLC501_A0_DDR|=SPLC501_A0;
38c: d2 9a sbi 0x1a, 2 ; 26
SPLC501_CS_DDR|=SPLC501_CS;
38e: d4 9a sbi 0x1a, 4 ; 26
SPLC501_RES_DDR|=SPLC501_RES;
390: d3 9a sbi 0x1a, 3 ; 26
392: 08 95 ret
00000394 <main>:
}
int main(void)
{
394: 0f 93 push r16
unsigned char i=32;
unsigned char j=0;
unsigned char lie=16;
unsigned char n=0;
unsigned char hang=0;
unsigned char line=0;
MCU_Init();
396: 0e 94 c4 01 call 0x388 ; 0x388 <MCU_Init>
LCD_Init();
39a: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <LCD_Init>
Timer1Init();
39e: 0e 94 a8 01 call 0x350 ; 0x350 <Timer1Init>
Timer2Init();
3a2: 0e 94 88 01 call 0x310 ; 0x310 <Timer2Init>
asm("sei");
3a6: 78 94 sei
//Test(0xaa,0x55); //全屏测试
Test(0x00,0x00); //数据清0
3a8: 60 e0 ldi r22, 0x00 ; 0
3aa: 80 e0 ldi r24, 0x00 ; 0
3ac: 0e 94 10 01 call 0x220 ; 0x220 <Test>
DisplayWords((unsigned int)HZK+(j++)*i ,hang,2,(n++)*lie,16);
3b0: 00 e1 ldi r16, 0x10 ; 16
3b2: 20 e0 ldi r18, 0x00 ; 0
3b4: 42 e0 ldi r20, 0x02 ; 2
3b6: 60 e0 ldi r22, 0x00 ; 0
3b8: 84 e5 ldi r24, 0x54 ; 84
3ba: 90 e0 ldi r25, 0x00 ; 0
3bc: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+j*i ,hang,2,(n++)*lie,16);
3c0: 20 e1 ldi r18, 0x10 ; 16
3c2: 42 e0 ldi r20, 0x02 ; 2
3c4: 60 e0 ldi r22, 0x00 ; 0
3c6: 84 e7 ldi r24, 0x74 ; 116
3c8: 90 e0 ldi r25, 0x00 ; 0
3ca: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+(j++)*i ,hang,2,(n++)*lie,16);
3ce: 20 e2 ldi r18, 0x20 ; 32
3d0: 42 e0 ldi r20, 0x02 ; 2
3d2: 60 e0 ldi r22, 0x00 ; 0
3d4: 84 e7 ldi r24, 0x74 ; 116
3d6: 90 e0 ldi r25, 0x00 ; 0
3d8: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+j*i ,hang,2,(n++)*lie,16);
3dc: 20 e3 ldi r18, 0x30 ; 48
3de: 42 e0 ldi r20, 0x02 ; 2
3e0: 60 e0 ldi r22, 0x00 ; 0
3e2: 84 e9 ldi r24, 0x94 ; 148
3e4: 90 e0 ldi r25, 0x00 ; 0
3e6: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+(j++)*i ,hang,2,(n++)*lie,16);
3ea: 20 e4 ldi r18, 0x40 ; 64
3ec: 42 e0 ldi r20, 0x02 ; 2
3ee: 60 e0 ldi r22, 0x00 ; 0
3f0: 84 e9 ldi r24, 0x94 ; 148
3f2: 90 e0 ldi r25, 0x00 ; 0
3f4: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
n=0;
hang+=2;
DisplayWords((unsigned int)HZK+(j++)*i ,hang,2,(n++)*lie,16);
3f8: 20 e0 ldi r18, 0x00 ; 0
3fa: 42 e0 ldi r20, 0x02 ; 2
3fc: 62 e0 ldi r22, 0x02 ; 2
3fe: 84 eb ldi r24, 0xB4 ; 180
400: 90 e0 ldi r25, 0x00 ; 0
402: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+(j++)*i ,hang,2,(n++)*lie,16);
406: 20 e1 ldi r18, 0x10 ; 16
408: 42 e0 ldi r20, 0x02 ; 2
40a: 62 e0 ldi r22, 0x02 ; 2
40c: 84 ed ldi r24, 0xD4 ; 212
40e: 90 e0 ldi r25, 0x00 ; 0
410: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+(j++)*i ,hang,2,(n++)*lie,16);
414: 20 e2 ldi r18, 0x20 ; 32
416: 42 e0 ldi r20, 0x02 ; 2
418: 62 e0 ldi r22, 0x02 ; 2
41a: 84 ef ldi r24, 0xF4 ; 244
41c: 90 e0 ldi r25, 0x00 ; 0
41e: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+(j++)*i ,hang,2,(n++)*lie,16);
422: 20 e3 ldi r18, 0x30 ; 48
424: 42 e0 ldi r20, 0x02 ; 2
426: 62 e0 ldi r22, 0x02 ; 2
428: 84 e1 ldi r24, 0x14 ; 20
42a: 91 e0 ldi r25, 0x01 ; 1
42c: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+j*i ,hang,2,(n++)*lie,16);
430: 20 e4 ldi r18, 0x40 ; 64
432: 42 e0 ldi r20, 0x02 ; 2
434: 62 e0 ldi r22, 0x02 ; 2
436: 84 e3 ldi r24, 0x34 ; 52
438: 91 e0 ldi r25, 0x01 ; 1
43a: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+(j++)*i ,hang,2,(n++)*lie,16);
43e: 20 e5 ldi r18, 0x50 ; 80
440: 42 e0 ldi r20, 0x02 ; 2
442: 62 e0 ldi r22, 0x02 ; 2
444: 84 e3 ldi r24, 0x34 ; 52
446: 91 e0 ldi r25, 0x01 ; 1
448: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+2*i ,hang,2,(n++)*lie,16);
44c: 20 e6 ldi r18, 0x60 ; 96
44e: 42 e0 ldi r20, 0x02 ; 2
450: 62 e0 ldi r22, 0x02 ; 2
452: 84 e9 ldi r24, 0x94 ; 148
454: 90 e0 ldi r25, 0x00 ; 0
456: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
DisplayWords((unsigned int)HZK+2*i ,hang,2,(n++)*lie,16);
45a: 20 e7 ldi r18, 0x70 ; 112
45c: 42 e0 ldi r20, 0x02 ; 2
45e: 62 e0 ldi r22, 0x02 ; 2
460: 84 e9 ldi r24, 0x94 ; 148
462: 90 e0 ldi r25, 0x00 ; 0
464: 0e 94 40 01 call 0x280 ; 0x280 <DisplayWords>
468: 00 e0 ldi r16, 0x00 ; 0
while(1)
{
//if(sign_5ms>=200)
if(sign_1s)
46a: 80 91 62 00 lds r24, 0x0062
46e: 88 23 and r24, r24
470: e1 f3 breq .-8 ; 0x46a <__stack+0xb>
{
//sign_5ms=0;
sign_1s=0;
472: 10 92 62 00 sts 0x0062, r1
line&=0x3f; //line=0~63
476: 80 2f mov r24, r16
478: 8f 73 andi r24, 0x3F ; 63
SPLC501LineRun(line--); //滚屏
47a: 08 2f mov r16, r24
47c: 01 50 subi r16, 0x01 ; 1
47e: 0e 94 de 00 call 0x1bc ; 0x1bc <SPLC501LineRun>
482: f3 cf rjmp .-26 ; 0x46a <__stack+0xb>
00000484 <Frame_dis>:
}
}
}
void Frame_dis(unsigned char *p)//显示128×64图像函数,指针p指向图片数组首地址
{ //frame 帧
484: ef 92 push r14
486: ff 92 push r15
488: 0f 93 push r16
48a: 1f 93 push r17
48c: cf 93 push r28
48e: df 93 push r29
490: ec 01 movw r28, r24
492: 80 eb ldi r24, 0xB0 ; 176
494: 7e 01 movw r14, r28
unsigned char i,j;
unsigned char page=0xb0; //指向首页命令
for(i=0;i<8;i++) //共8页
{
SPLC501SPIWrite(page++,0);
496: 08 2f mov r16, r24
498: 0f 5f subi r16, 0xFF ; 255
49a: 60 e0 ldi r22, 0x00 ; 0
49c: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x10,0); //设定列地址高4位为0
4a0: 60 e0 ldi r22, 0x00 ; 0
4a2: 80 e1 ldi r24, 0x10 ; 16
4a4: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x04,0); //设定列地址低4位为0
4a8: 60 e0 ldi r22, 0x00 ; 0
4aa: 84 e0 ldi r24, 0x04 ; 4
4ac: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
4b0: 10 e0 ldi r17, 0x00 ; 0
for(j=0;j<128;j++)SPLC501SPIWrite(*p++,1);//共128列
4b2: 61 e0 ldi r22, 0x01 ; 1
4b4: f7 01 movw r30, r14
4b6: 81 91 ld r24, Z+
4b8: 7f 01 movw r14, r30
4ba: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
4be: 1f 5f subi r17, 0xFF ; 255
4c0: 10 38 cpi r17, 0x80 ; 128
4c2: b9 f7 brne .-18 ; 0x4b2 <Frame_dis+0x2e>
4c4: c0 58 subi r28, 0x80 ; 128
4c6: df 4f sbci r29, 0xFF ; 255
4c8: 08 3b cpi r16, 0xB8 ; 184
4ca: 11 f0 breq .+4 ; 0x4d0 <Frame_dis+0x4c>
4cc: 80 2f mov r24, r16
4ce: e2 cf rjmp .-60 ; 0x494 <Frame_dis+0x10>
4d0: df 91 pop r29
4d2: cf 91 pop r28
4d4: 1f 91 pop r17
4d6: 0f 91 pop r16
4d8: ff 90 pop r15
4da: ef 90 pop r14
4dc: 08 95 ret
000004de <Plot>:
}
}
void Plot(unsigned char *P) //p指向曲线数组首地址
{
4de: af 92 push r10
4e0: bf 92 push r11
4e2: cf 92 push r12
4e4: df 92 push r13
4e6: ef 92 push r14
4e8: ff 92 push r15
4ea: 0f 93 push r16
4ec: 1f 93 push r17
4ee: cf 93 push r28
4f0: df 93 push r29
4f2: 5c 01 movw r10, r24
unsigned char i,j;
unsigned char x,x1;
unsigned int d;
SPLC501SPIWrite(0x10,0); //SET COLUMN ADDRESS MSB
4f4: 60 e0 ldi r22, 0x00 ; 0
4f6: 80 e1 ldi r24, 0x10 ; 16
4f8: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
SPLC501SPIWrite(0x04,0); //SET COLUMN ADDRESS LSB,
4fc: 60 e0 ldi r22, 0x00 ; 0
4fe: 84 e0 ldi r24, 0x04 ; 4
500: 0e 94 c9 00 call 0x192 ; 0x192 <SPLC501SPIWrite>
504: ee 24 eor r14, r14
506: ff 24 eor r15, r15
508: ce 2c mov r12, r14
for(i=0;i<128;i++)
{
d=*P;
50a: f5 01 movw r30, r10
50c: 80 81 ld r24, Z
50e: 28 2f mov r18, r24
510: 33 27 eor r19, r19
512: 20 34 cpi r18, 0x40 ; 64
514: 31 05 cpc r19, r1
516: 10 f0 brcs .+4 ; 0x51c <Plot+0x3e>
518: 2f e3 ldi r18, 0x3F ; 63
51a: 30 e0 ldi r19, 0x00 ; 0
if(d>63)d=63;
x=7-d/8;
51c: c9 01 movw r24, r18
51e: 33 e0 ldi r19, 0x03 ; 3
520: 96 95 lsr r25
522: 87 95 ror r24
524: 3a 95 dec r19
526: e1 f7 brne .-8 ; 0x520 <Plot+0x42>
528: 97 e0 ldi r25, 0x07 ; 7
52a: d9 2e mov r13, r25
52c: d8 1a sub r13, r24
x1=7-(d&7);
52e: 02 2f mov r16, r18
530: 00 95 com r16
532: 07 70 andi r16, 0x07 ; 7
534: c0 e0 ldi r28, 0x00 ; 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -