📄 ks0108.lss
字号:
57e: 89 23 and r24, r25
580: 80 83 st Z, r24
...
58a: dd cf rjmp .-70 ; 0x546 <LCD_BUSY+0x82>
}
CLEAR_LCD_E;
58c: e0 91 6d 00 lds r30, 0x006D
590: f0 91 6e 00 lds r31, 0x006E
594: 90 91 64 00 lds r25, 0x0064
598: 90 95 com r25
59a: 80 81 ld r24, Z
59c: 89 23 and r24, r25
59e: 80 83 st Z, r24
SET_LCD_WRITE;
5a0: e0 91 67 00 lds r30, 0x0067
5a4: f0 91 68 00 lds r31, 0x0068
5a8: 90 91 61 00 lds r25, 0x0061
5ac: 90 95 com r25
5ae: 80 81 ld r24, Z
5b0: 89 23 and r24, r25
5b2: 80 83 st Z, r24
*LCD_OP_PORT = 0xff;
5b4: e0 91 6f 00 lds r30, 0x006F
5b8: f0 91 70 00 lds r31, 0x0070
5bc: 8f ef ldi r24, 0xFF ; 255
5be: 80 83 st Z, r24
asm("sei");//)asm("sei");
5c0: 78 94 sei
5c2: 08 95 ret
000005c4 <write_LCD>:
}
void write_LCD(unsigned char lr,unsigned char cd,unsigned char data) /*写入指令或数据*/
{
5c4: 1f 93 push r17
5c6: cf 93 push r28
5c8: 16 2f mov r17, r22
5ca: c4 2f mov r28, r20
asm("cli");//)asm("cli");
5cc: f8 94 cli
LCD_BUSY(lr);
5ce: 0e 94 62 02 call 0x4c4 <LCD_BUSY>
5d2: e0 91 65 00 lds r30, 0x0065
5d6: f0 91 66 00 lds r31, 0x0066
5da: 90 91 60 00 lds r25, 0x0060
if(cd==CMD)
5de: 11 23 and r17, r17
5e0: 21 f4 brne .+8 ; 0x5ea <write_LCD+0x26>
{
SET_LCD_CMD;
5e2: 90 95 com r25
5e4: 80 81 ld r24, Z
5e6: 89 23 and r24, r25
5e8: 02 c0 rjmp .+4 ; 0x5ee <write_LCD+0x2a>
}
else
{
SET_LCD_DATA;
5ea: 80 81 ld r24, Z
5ec: 89 2b or r24, r25
5ee: 80 83 st Z, r24
}
SET_LCD_WRITE;
5f0: e0 91 67 00 lds r30, 0x0067
5f4: f0 91 68 00 lds r31, 0x0068
5f8: 90 91 61 00 lds r25, 0x0061
5fc: 90 95 com r25
5fe: 80 81 ld r24, Z
600: 89 23 and r24, r25
602: 80 83 st Z, r24
SET_LCD_E;
604: e0 91 6d 00 lds r30, 0x006D
608: f0 91 6e 00 lds r31, 0x006E
60c: 80 81 ld r24, Z
60e: 90 91 64 00 lds r25, 0x0064
612: 89 2b or r24, r25
614: 80 83 st Z, r24
*LCD_DIR_PORT = 0xff;
616: e0 91 73 00 lds r30, 0x0073
61a: f0 91 74 00 lds r31, 0x0074
61e: 2f ef ldi r18, 0xFF ; 255
620: 20 83 st Z, r18
*LCD_OP_PORT = data;
622: e0 91 6f 00 lds r30, 0x006F
626: f0 91 70 00 lds r31, 0x0070
62a: c0 83 st Z, r28
...
asm("nop");
asm("nop");
asm("nop");
asm("nop");
CLEAR_LCD_E;
634: e0 91 6d 00 lds r30, 0x006D
638: f0 91 6e 00 lds r31, 0x006E
63c: 90 91 64 00 lds r25, 0x0064
640: 90 95 com r25
642: 80 81 ld r24, Z
644: 89 23 and r24, r25
646: 80 83 st Z, r24
*LCD_OP_PORT = 0xff;
648: e0 91 6f 00 lds r30, 0x006F
64c: f0 91 70 00 lds r31, 0x0070
650: 20 83 st Z, r18
asm("sei");
652: 78 94 sei
654: cf 91 pop r28
656: 1f 91 pop r17
658: 08 95 ret
0000065a <read_LCD>:
}
unsigned char read_LCD(unsigned char lr) /* 读显示数据 */
{
65a: 0f 93 push r16
65c: 1f 93 push r17
65e: 08 2f mov r16, r24
unsigned char data;
asm("cli");
660: f8 94 cli
LCD_BUSY(lr);
662: 0e 94 62 02 call 0x4c4 <LCD_BUSY>
SET_LCD_DATA;
666: e0 91 65 00 lds r30, 0x0065
66a: f0 91 66 00 lds r31, 0x0066
66e: 80 81 ld r24, Z
670: 90 91 60 00 lds r25, 0x0060
674: 89 2b or r24, r25
676: 80 83 st Z, r24
*LCD_DIR_PORT = 0x00;
678: e0 91 73 00 lds r30, 0x0073
67c: f0 91 74 00 lds r31, 0x0074
680: 10 82 st Z, r1
*LCD_OP_PORT = 0xff;
682: e0 91 6f 00 lds r30, 0x006F
686: f0 91 70 00 lds r31, 0x0070
68a: 1f ef ldi r17, 0xFF ; 255
68c: 10 83 st Z, r17
SET_LCD_READ;
68e: e0 91 67 00 lds r30, 0x0067
692: f0 91 68 00 lds r31, 0x0068
696: 80 81 ld r24, Z
698: 90 91 61 00 lds r25, 0x0061
69c: 89 2b or r24, r25
69e: 80 83 st Z, r24
SET_LCD_E;
6a0: e0 91 6d 00 lds r30, 0x006D
6a4: f0 91 6e 00 lds r31, 0x006E
6a8: 80 81 ld r24, Z
6aa: 90 91 64 00 lds r25, 0x0064
6ae: 89 2b or r24, r25
6b0: 80 83 st Z, r24
...
asm("nop");
asm("nop");
asm("nop");
asm("nop");
data=*LCD_IP_PORT;
6ba: e0 91 71 00 lds r30, 0x0071
6be: f0 91 72 00 lds r31, 0x0072
6c2: 20 81 ld r18, Z
CLEAR_LCD_E;
6c4: e0 91 6d 00 lds r30, 0x006D
6c8: f0 91 6e 00 lds r31, 0x006E
6cc: 90 91 64 00 lds r25, 0x0064
6d0: 90 95 com r25
6d2: 80 81 ld r24, Z
6d4: 89 23 and r24, r25
6d6: 80 83 st Z, r24
SET_LCD_WRITE;
6d8: e0 91 67 00 lds r30, 0x0067
6dc: f0 91 68 00 lds r31, 0x0068
6e0: 90 91 61 00 lds r25, 0x0061
6e4: 90 95 com r25
6e6: 80 81 ld r24, Z
6e8: 89 23 and r24, r25
6ea: 80 83 st Z, r24
LCD_BUSY(lr);
6ec: 80 2f mov r24, r16
6ee: 0e 94 62 02 call 0x4c4 <LCD_BUSY>
SET_LCD_DATA;
6f2: e0 91 65 00 lds r30, 0x0065
6f6: f0 91 66 00 lds r31, 0x0066
6fa: 80 81 ld r24, Z
6fc: 90 91 60 00 lds r25, 0x0060
700: 89 2b or r24, r25
702: 80 83 st Z, r24
*LCD_DIR_PORT = 0x00;
704: e0 91 73 00 lds r30, 0x0073
708: f0 91 74 00 lds r31, 0x0074
70c: 10 82 st Z, r1
*LCD_OP_PORT = 0xff;
70e: e0 91 6f 00 lds r30, 0x006F
712: f0 91 70 00 lds r31, 0x0070
716: 10 83 st Z, r17
SET_LCD_READ;
718: e0 91 67 00 lds r30, 0x0067
71c: f0 91 68 00 lds r31, 0x0068
720: 80 81 ld r24, Z
722: 90 91 61 00 lds r25, 0x0061
726: 89 2b or r24, r25
728: 80 83 st Z, r24
SET_LCD_E;
72a: e0 91 6d 00 lds r30, 0x006D
72e: f0 91 6e 00 lds r31, 0x006E
732: 80 81 ld r24, Z
734: 90 91 64 00 lds r25, 0x0064
738: 89 2b or r24, r25
73a: 80 83 st Z, r24
...
asm("nop");
asm("nop");
asm("nop");
asm("nop");
data=*LCD_IP_PORT;
744: e0 91 71 00 lds r30, 0x0071
748: f0 91 72 00 lds r31, 0x0072
74c: 20 81 ld r18, Z
CLEAR_LCD_E;
74e: e0 91 6d 00 lds r30, 0x006D
752: f0 91 6e 00 lds r31, 0x006E
756: 90 91 64 00 lds r25, 0x0064
75a: 90 95 com r25
75c: 80 81 ld r24, Z
75e: 89 23 and r24, r25
760: 80 83 st Z, r24
SET_LCD_WRITE;
762: e0 91 67 00 lds r30, 0x0067
766: f0 91 68 00 lds r31, 0x0068
76a: 90 91 61 00 lds r25, 0x0061
76e: 90 95 com r25
770: 80 81 ld r24, Z
772: 89 23 and r24, r25
774: 80 83 st Z, r24
asm("sei");
776: 78 94 sei
return data;
}
778: 82 2f mov r24, r18
77a: 99 27 eor r25, r25
77c: 1f 91 pop r17
77e: 0f 91 pop r16
780: 08 95 ret
00000782 <set_start_line_L>:
void set_start_line_L(unsigned char line) /*设置显示起始行*/ //0-63
{
write_LCD(LEFT,CMD,0xc0|line);
782: 80 6c ori r24, 0xC0 ; 192
784: 48 2f mov r20, r24
786: 60 e0 ldi r22, 0x00 ; 0
788: 86 2f mov r24, r22
78a: 0e 94 e2 02 call 0x5c4 <write_LCD>
78e: 08 95 ret
00000790 <set_start_line_R>:
}
void set_start_line_R(unsigned char line) /*设置显示起始行*/ //0-63
{
write_LCD(RIGHT,CMD,0xc0|line);
790: 80 6c ori r24, 0xC0 ; 192
792: 48 2f mov r20, r24
794: 60 e0 ldi r22, 0x00 ; 0
796: 81 e0 ldi r24, 0x01 ; 1
798: 0e 94 e2 02 call 0x5c4 <write_LCD>
79c: 08 95 ret
0000079e <set_page_L>:
}
void set_page_L(unsigned char page) /*设置X地址 设置页*/ //0-7
{
write_LCD(LEFT,CMD,0xb8|page);
79e: 88 6b ori r24, 0xB8 ; 184
7a0: 48 2f mov r20, r24
7a2: 60 e0 ldi r22, 0x00 ; 0
7a4: 86 2f mov r24, r22
7a6: 0e 94 e2 02 call 0x5c4 <write_LCD>
7aa: 08 95 ret
000007ac <set_page_R>:
}
void set_page_R(unsigned char page) /*设置X地址 设置页*/ //0-7
{
write_LCD(RIGHT,CMD,0xb8|page);
7ac: 88 6b ori r24, 0xB8 ; 184
7ae: 48 2f mov r20, r24
7b0: 60 e0 ldi r22, 0x00 ; 0
7b2: 81 e0 ldi r24, 0x01 ; 1
7b4: 0e 94 e2 02 call 0x5c4 <write_LCD>
7b8: 08 95 ret
000007ba <set_col_addr_L>:
}
void set_col_addr_L(unsigned char col) /*设置Y地址*/ //0-63
{
write_LCD(LEFT,CMD,0x40|col);
7ba: 80 64 ori r24, 0x40 ; 64
7bc: 48 2f mov r20, r24
7be: 60 e0 ldi r22, 0x00 ; 0
7c0: 86 2f mov r24, r22
7c2: 0e 94 e2 02 call 0x5c4 <write_LCD>
7c6: 08 95 ret
000007c8 <set_col_addr_R>:
}
void set_col_addr_R(unsigned char col) /*设置Y地址*/ //0-63
{
write_LCD(RIGHT,CMD,0x40|col);
7c8: 80 64 ori r24, 0x40 ; 64
7ca: 48 2f mov r20, r24
7cc: 60 e0 ldi r22, 0x00 ; 0
7ce: 81 e0 ldi r24, 0x01 ; 1
7d0: 0e 94 e2 02 call 0x5c4 <write_LCD>
7d4: 08 95 ret
000007d6 <init_lcd>:
}
void init_lcd(void) /*初始化函数*/
{
set_start_line_L(0); /*显示起始行为0*/
7d6: 80 e0 ldi r24, 0x00 ; 0
7d8: 0e 94 c1 03 call 0x782 <set_start_line_L>
set_start_line_R(0); /*显示起始行为0*/
7dc: 80 e0 ldi r24, 0x00 ; 0
7de: 0e 94 c8 03 call 0x790 <set_start_line_R>
write_LCD(LEFT,CMD,DISPLAY_ON); /* 开显示 */
7e2: 4f e3 ldi r20, 0x3F ; 63
7e4: 60 e0 ldi r22, 0x00 ; 0
7e6: 86 2f mov r24, r22
7e8: 0e 94 e2 02 call 0x5c4 <write_LCD>
write_LCD(RIGHT,CMD,DISPLAY_ON); /* 开显示 */
7ec: 4f e3 ldi r20, 0x3F ; 63
7ee: 60 e0 ldi r22, 0x00 ; 0
7f0: 81 e0 ldi r24, 0x01 ; 1
7f2: 0e 94 e2 02 call 0x5c4 <write_LCD>
7f6: 08 95 ret
000007f8 <clr_lcd>:
}
void clr_lcd(void) /*清屏函数*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -