📄 main.lss
字号:
/* 全局变量:无 */
/* 返回值: 无 */
//************************************/
void sentbyte_12864(uchar sentbyte)
{
uint i;
CLK_12864_0();
462: a6 9a sbi 0x14, 6 ; 20
464: 00 00 nop
466: ae 98 cbi 0x15, 6 ; 21
468: 27 e0 ldi r18, 0x07 ; 7
46a: 30 e0 ldi r19, 0x00 ; 0
for(i=0;i<8;i++)
{
if(sentbyte&0x80){SID_12864_1();}
46c: 87 ff sbrs r24, 7
46e: 04 c0 rjmp .+8 ; 0x478 <sentbyte_12864+0x16>
470: a5 9a sbi 0x14, 5 ; 20
472: 00 00 nop
474: ad 9a sbi 0x15, 5 ; 21
476: 03 c0 rjmp .+6 ; 0x47e <sentbyte_12864+0x1c>
else {SID_12864_0();}
478: a5 9a sbi 0x14, 5 ; 20
47a: 00 00 nop
47c: ad 98 cbi 0x15, 5 ; 21
asm("nop");
47e: 00 00 nop
CLK_12864_1();
480: a6 9a sbi 0x14, 6 ; 20
482: 00 00 nop
484: ae 9a sbi 0x15, 6 ; 21
sentbyte<<=1;
486: 88 0f add r24, r24
CLK_12864_0();
488: a6 9a sbi 0x14, 6 ; 20
48a: 00 00 nop
48c: ae 98 cbi 0x15, 6 ; 21
asm("nop");
48e: 00 00 nop
490: 21 50 subi r18, 0x01 ; 1
492: 30 40 sbci r19, 0x00 ; 0
494: 37 ff sbrs r19, 7
496: ea cf rjmp .-44 ; 0x46c <sentbyte_12864+0xa>
498: 08 95 ret
0000049a <readbyte_12864>:
}
}
//*************函数部分***************/
/* 名字:readbyte_12864() */
/* 功能:读RT12864M */
/* 局部变量:readtype */
/* 全局变量:无 */
/* 返回值: temp */
//************************************/
uchar readbyte_12864(uchar readtype)
{
49a: cf 93 push r28
49c: df 93 push r29
49e: cd b7 in r28, 0x3d ; 61
4a0: de b7 in r29, 0x3e ; 62
4a2: 22 97 sbiw r28, 0x02 ; 2
4a4: 0f b6 in r0, 0x3f ; 63
4a6: f8 94 cli
4a8: de bf out 0x3e, r29 ; 62
4aa: 0f be out 0x3f, r0 ; 63
4ac: cd bf out 0x3d, r28 ; 61
uchar tmp1=0,tmp2=0,temp=0;
4ae: 90 e0 ldi r25, 0x00 ; 0
4b0: 9a 83 std Y+2, r25 ; 0x02
uint i;
sentbyte_12864(readtype);
4b2: 99 83 std Y+1, r25 ; 0x01
4b4: 0e 94 31 02 call 0x462 <sentbyte_12864>
SID_12864_io=0;
4b8: a5 98 cbi 0x14, 5 ; 20
CLK_12864_0();
4ba: a6 9a sbi 0x14, 6 ; 20
4bc: 00 00 nop
4be: ae 98 cbi 0x15, 6 ; 21
4c0: 27 e0 ldi r18, 0x07 ; 7
4c2: 30 e0 ldi r19, 0x00 ; 0
4c4: 99 81 ldd r25, Y+1 ; 0x01
for(i=0;i<8;i++)
{
asm("nop");
4c6: 00 00 nop
CLK_12864_1();
4c8: a6 9a sbi 0x14, 6 ; 20
4ca: 00 00 nop
4cc: ae 9a sbi 0x15, 6 ; 21
if(SID_12864_r)tmp1|=0x01;
4ce: 83 b3 in r24, 0x13 ; 19
4d0: 82 95 swap r24
4d2: 86 95 lsr r24
4d4: 87 70 andi r24, 0x07 ; 7
4d6: 80 ff sbrs r24, 0
4d8: 03 c0 rjmp .+6 ; 0x4e0 <readbyte_12864+0x46>
4da: 8a 81 ldd r24, Y+2 ; 0x02
4dc: 81 60 ori r24, 0x01 ; 1
4de: 8a 83 std Y+2, r24 ; 0x02
tmp1<<=1;
4e0: ea 81 ldd r30, Y+2 ; 0x02
4e2: ee 0f add r30, r30
4e4: ea 83 std Y+2, r30 ; 0x02
CLK_12864_0();
4e6: a6 9a sbi 0x14, 6 ; 20
4e8: 00 00 nop
4ea: ae 98 cbi 0x15, 6 ; 21
4ec: 21 50 subi r18, 0x01 ; 1
4ee: 30 40 sbci r19, 0x00 ; 0
4f0: 37 ff sbrs r19, 7
4f2: e9 cf rjmp .-46 ; 0x4c6 <readbyte_12864+0x2c>
4f4: 27 e0 ldi r18, 0x07 ; 7
4f6: 30 e0 ldi r19, 0x00 ; 0
}
for(i=0;i<8;i++)
{
asm("nop");
4f8: 00 00 nop
CLK_12864_1();
4fa: a6 9a sbi 0x14, 6 ; 20
4fc: 00 00 nop
4fe: ae 9a sbi 0x15, 6 ; 21
if(SID_12864_r)tmp2|=0x01;
500: 83 b3 in r24, 0x13 ; 19
502: 82 95 swap r24
504: 86 95 lsr r24
506: 87 70 andi r24, 0x07 ; 7
508: 80 fd sbrc r24, 0
50a: 91 60 ori r25, 0x01 ; 1
tmp2<<=1;
50c: 99 0f add r25, r25
CLK_12864_0();
50e: a6 9a sbi 0x14, 6 ; 20
510: 00 00 nop
512: ae 98 cbi 0x15, 6 ; 21
514: 21 50 subi r18, 0x01 ; 1
516: 30 40 sbci r19, 0x00 ; 0
518: 37 ff sbrs r19, 7
51a: ee cf rjmp .-36 ; 0x4f8 <readbyte_12864+0x5e>
}
temp=(tmp1&0xf0)|((tmp2&0xf0)>>4);
51c: fa 81 ldd r31, Y+2 ; 0x02
51e: f0 7f andi r31, 0xF0 ; 240
520: 89 2f mov r24, r25
522: 99 27 eor r25, r25
524: e4 e0 ldi r30, 0x04 ; 4
526: 96 95 lsr r25
528: 87 95 ror r24
52a: ea 95 dec r30
52c: e1 f7 brne .-8 ; 0x526 <readbyte_12864+0x8c>
52e: f8 2b or r31, r24
return (temp);
}
530: 8f 2f mov r24, r31
532: 99 27 eor r25, r25
534: 22 96 adiw r28, 0x02 ; 2
536: 0f b6 in r0, 0x3f ; 63
538: f8 94 cli
53a: de bf out 0x3e, r29 ; 62
53c: 0f be out 0x3f, r0 ; 63
53e: cd bf out 0x3d, r28 ; 61
540: df 91 pop r29
542: cf 91 pop r28
544: 08 95 ret
00000546 <busywait_12864>:
//*************函数部分***************/
/* 名字:busywait_12864() */
/* 功能:检测RT12864M是否忙 */
/* 局部变量:无 */
/* 全局变量:无 */
/* 返回值: 无 */
//************************************/
void busywait_12864(void)
{
uchar bf;
loop:
bf=readbyte_12864(CM_rcomm);
546: 8c ef ldi r24, 0xFC ; 252
548: 0e 94 4d 02 call 0x49a <readbyte_12864>
if(bf&0x80)goto loop;
54c: 88 23 and r24, r24
54e: dc f3 brlt .-10 ; 0x546 <busywait_12864>
550: 08 95 ret
00000552 <writecomm_12864>:
}
//*************函数部分***************/
/* 名字:writecomm_12864() */
/* 功能:写命令进RT12864M */
/* 局部变量:command */
/* 全局变量:无 */
/* 返回值: 无 */
//************************************/
void writecomm_12864(uchar command)
{
552: cf 93 push r28
554: c8 2f mov r28, r24
busywait_12864();
556: 0e 94 a3 02 call 0x546 <busywait_12864>
CS_12864_1();
55a: a4 9a sbi 0x14, 4 ; 20
55c: 00 00 nop
55e: ac 9a sbi 0x15, 4 ; 21
sentbyte_12864(CM_wcomm);
560: 88 ef ldi r24, 0xF8 ; 248
562: 0e 94 31 02 call 0x462 <sentbyte_12864>
sentbyte_12864(command&0xf0);
566: 8c 2f mov r24, r28
568: 80 7f andi r24, 0xF0 ; 240
56a: 0e 94 31 02 call 0x462 <sentbyte_12864>
sentbyte_12864((command<<4)&0xf0);
56e: 8c 2f mov r24, r28
570: 99 27 eor r25, r25
572: f4 e0 ldi r31, 0x04 ; 4
574: 88 0f add r24, r24
576: 99 1f adc r25, r25
578: fa 95 dec r31
57a: e1 f7 brne .-8 ; 0x574 <writecomm_12864+0x22>
57c: 80 7f andi r24, 0xF0 ; 240
57e: 0e 94 31 02 call 0x462 <sentbyte_12864>
582: cf 91 pop r28
584: 08 95 ret
00000586 <writedata_12864>:
}
//*************函数部分***************/
/* 名字:writedata_12864() */
/* 功能:写数据写进RT12864M */
/* 局部变量:wrdata */
/* 全局变量:无 */
/* 返回值: 无 */
//************************************/
void writedata_12864(uchar wrdata)
{
586: cf 93 push r28
588: c8 2f mov r28, r24
busywait_12864();
58a: 0e 94 a3 02 call 0x546 <busywait_12864>
CS_12864_1();
58e: a4 9a sbi 0x14, 4 ; 20
590: 00 00 nop
592: ac 9a sbi 0x15, 4 ; 21
sentbyte_12864(CM_wdata);
594: 8a ef ldi r24, 0xFA ; 250
596: 0e 94 31 02 call 0x462 <sentbyte_12864>
sentbyte_12864(wrdata&0xf0);
59a: 8c 2f mov r24, r28
59c: 80 7f andi r24, 0xF0 ; 240
59e: 0e 94 31 02 call 0x462 <sentbyte_12864>
sentbyte_12864((wrdata<<4)&0xf0);
5a2: 8c 2f mov r24, r28
5a4: 99 27 eor r25, r25
5a6: a4 e0 ldi r26, 0x04 ; 4
5a8: 88 0f add r24, r24
5aa: 99 1f adc r25, r25
5ac: aa 95 dec r26
5ae: e1 f7 brne .-8 ; 0x5a8 <writedata_12864+0x22>
5b0: 80 7f andi r24, 0xF0 ; 240
5b2: 0e 94 31 02 call 0x462 <sentbyte_12864>
5b6: cf 91 pop r28
5b8: 08 95 ret
000005ba <Init_12864>:
}
//*************函数部分***************/
/* 名字:Init_12864() */
/* 功能:初始化RT12864M */
/* 局部变量:无 */
/* 全局变量:无 */
/* 返回值: 无 */
//************************************/
void Init_12864(void)
{
PSB_12864_0(); //选择串口通信
5ba: a7 9a sbi 0x14, 7 ; 20
5bc: 00 00 nop
5be: af 98 cbi 0x15, 7 ; 21
CLK_12864_0();
5c0: a6 9a sbi 0x14, 6 ; 20
5c2: 00 00 nop
5c4: ae 98 cbi 0x15, 6 ; 21
writecomm_12864(0x30);//功能设置 8位数据,基本指令
5c6: 80 e3 ldi r24, 0x30 ; 48
5c8: 0e 94 a9 02 call 0x552 <writecomm_12864>
RT12864delay_ms(10);
5cc: 8a e0 ldi r24, 0x0A ; 10
5ce: 90 e0 ldi r25, 0x00 ; 0
5d0: 0e 94 22 02 call 0x444 <RT12864delay_ms>
writecomm_12864(0x0c);//显示状态 ON,游标OFF,反白OFF
5d4: 8c e0 ldi r24, 0x0C ; 12
5d6: 0e 94 a9 02 call 0x552 <writecomm_12864>
RT12864delay_ms(10);
5da: 8a e0 ldi r24, 0x0A ; 10
5dc: 90 e0 ldi r25, 0x00 ; 0
5de: 0e 94 22 02 call 0x444 <RT12864delay_ms>
writecomm_12864(0x01);//清除显示
5e2: 81 e0 ldi r24, 0x01 ; 1
5e4: 0e 94 a9 02 call 0x552 <writecomm_12864>
RT12864delay_ms(10);
5e8: 8a e0 ldi r24, 0x0A ; 10
5ea: 90 e0 ldi r25, 0x00 ; 0
5ec: 0e 94 22 02 call 0x444 <RT12864delay_ms>
writecomm_12864(0x02);//地址归位
5f0: 82 e0 ldi r24, 0x02 ; 2
5f2: 0e 94 a9 02 call 0x552 <writecomm_12864>
5f6: 08 95 ret
000005f8 <locatexy_12864>:
}
//*************函数部分***************/
/* 名字:locatexy_12864() */
/* 功能:定位显示地址 */
/* 局部变量:x,y */
/* 全局变量:无 */
/* 返回值: 无 */
//************************************/
void locatexy_12864(uchar x,uchar y)
{
5f8: 28 2f mov r18, r24
5fa: 86 2f mov r24, r22
uchar addr=0;
5fc: 30 e0 ldi r19, 0x00 ; 0
switch(y)
5fe: 99 27 eor r25, r25
600: 81 30 cpi r24, 0x01 ; 1
602: 91 05 cpc r25, r1
604: 79 f0 breq .+30 ; 0x624 <locatexy_12864+0x2c>
606: 82 30 cpi r24, 0x02 ; 2
608: 91 05 cpc r25, r1
60a: 1c f4 brge .+6 ; 0x612 <locatexy_12864+0x1a>
60c: 89 2b or r24, r25
60e: 39 f0 breq .+14 ; 0x61e <locatexy_12864+0x26>
610: 11 c0 rjmp .+34 ; 0x634 <locatexy_12864+0x3c>
612: 82 30 cpi r24, 0x02 ; 2
614: 91 05 cpc r25, r1
616: 49 f0 breq .+18 ; 0x62a <locatexy_12864+0x32>
618: 03 97 sbiw r24, 0x03 ; 3
61a: 51 f0 breq .+20 ; 0x630 <locatexy_12864+0x38>
61c: 0b c0 rjmp .+22 ; 0x634 <locatexy_12864+0x3c>
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -