📄 lcd1602.lis
字号:
006C ; LCD_write_com(0x01);
006C 01E0 ldi R16,1
006E E2DF xcall _LCD_write_com
0070 .dbline 70
0070 ; delay_ms(5);
0070 05E0 ldi R16,5
0072 D1DF xcall _delay_ms
0074 .dbline -2
0074 L18:
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbend
0076 .dbfunc e LCD_write_str _LCD_write_str fV
0076 ; s -> R20,R21
0076 ; y -> R10
0076 ; x -> R22
.even
0076 _LCD_write_str::
0076 0E940000 xcall push_gset3
007A A22E mov R10,R18
007C 602F mov R22,R16
007E 4E81 ldd R20,y+6
0080 5F81 ldd R21,y+7
0082 .dbline -1
0082 .dbline 74
0082 ; }
0082 ;
0082 ; /*显示屏字符串写入函数*/
0082 ; void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) {
0082 .dbline 76
0082 ;
0082 ; if (y == 0) {
0082 AA20 tst R10
0084 21F4 brne L20
0086 .dbline 76
0086 .dbline 77
0086 ; LCD_write_com(0x80 + x);
0086 062F mov R16,R22
0088 0058 subi R16,128 ; addi 128
008A D4DF xcall _LCD_write_com
008C .dbline 78
008C ; }
008C 09C0 xjmp L23
008E L20:
008E .dbline 79
008E ; else {
008E .dbline 80
008E ; LCD_write_com(0xC0 + x);
008E 062F mov R16,R22
0090 0054 subi R16,64 ; addi 192
0092 D0DF xcall _LCD_write_com
0094 .dbline 81
0094 ; }
0094 05C0 xjmp L23
0096 L22:
0096 .dbline 83
0096 .dbline 84
0096 FA01 movw R30,R20
0098 0081 ldd R16,z+0
009A DADF xcall _LCD_write_data
009C .dbline 85
009C 4F5F subi R20,255 ; offset = 1
009E 5F4F sbci R21,255
00A0 .dbline 86
00A0 L23:
00A0 .dbline 83
00A0 ;
00A0 ; while (*s) {
00A0 FA01 movw R30,R20
00A2 2080 ldd R2,z+0
00A4 2220 tst R2
00A6 B9F7 brne L22
00A8 .dbline -2
00A8 L19:
00A8 0E940000 xcall pop_gset3
00AC .dbline 0 ; func end
00AC 0895 ret
00AE .dbsym r s 20 pc
00AE .dbsym r y 10 c
00AE .dbsym r x 22 c
00AE .dbend
00AE .dbfunc e LCD_write_char _LCD_write_char fV
00AE ; data -> y+4
00AE ; y -> R22
00AE ; x -> R20
.even
00AE _LCD_write_char::
00AE 0E940000 xcall push_gset2
00B2 622F mov R22,R18
00B4 402F mov R20,R16
00B6 .dbline -1
00B6 .dbline 90
00B6 ; LCD_write_data( *s);
00B6 ; s ++;
00B6 ; }
00B6 ; }
00B6 ;
00B6 ; /*显示屏单字符写入函数*/
00B6 ; void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) {
00B6 .dbline 92
00B6 ;
00B6 ; if (y == 0) {
00B6 6623 tst R22
00B8 21F4 brne L26
00BA .dbline 92
00BA .dbline 93
00BA ; LCD_write_com(0x80 + x);
00BA 042F mov R16,R20
00BC 0058 subi R16,128 ; addi 128
00BE BADF xcall _LCD_write_com
00C0 .dbline 94
00C0 ; }
00C0 03C0 xjmp L27
00C2 L26:
00C2 .dbline 95
00C2 ; else {
00C2 .dbline 96
00C2 ; LCD_write_com(0xC0 + x);
00C2 042F mov R16,R20
00C4 0054 subi R16,64 ; addi 192
00C6 B6DF xcall _LCD_write_com
00C8 .dbline 97
00C8 ; }
00C8 L27:
00C8 .dbline 99
00C8 ;
00C8 ; LCD_write_data( data);
00C8 0C81 ldd R16,y+4
00CA C2DF xcall _LCD_write_data
00CC .dbline -2
00CC L25:
00CC 0E940000 xcall pop_gset2
00D0 .dbline 0 ; func end
00D0 0895 ret
00D2 .dbsym l data 4 c
00D2 .dbsym r y 22 c
00D2 .dbsym r x 20 c
00D2 .dbend
00D2 .dbfunc e LCD_init _LCD_init fV
.even
00D2 _LCD_init::
00D2 .dbline -1
00D2 .dbline 103
00D2 ; }
00D2 ;
00D2 ; /*显示屏初始化函数*/
00D2 ; void LCD_init(void) {
00D2 .dbline 105
00D2 ;
00D2 ; DDRA = 0xFF; /*I/O口方向设置*/
00D2 8FEF ldi R24,255
00D4 8ABB out 0x1a,R24
00D6 .dbline 106
00D6 ; DDRC = 0xFF;
00D6 84BB out 0x14,R24
00D8 .dbline 107
00D8 ; LCD_write_com(0x38); /*显示模式设置*/
00D8 08E3 ldi R16,56
00DA ACDF xcall _LCD_write_com
00DC .dbline 108
00DC ; delay_ms(5);
00DC 05E0 ldi R16,5
00DE 9BDF xcall _delay_ms
00E0 .dbline 109
00E0 ; LCD_write_com(0x38);
00E0 08E3 ldi R16,56
00E2 A8DF xcall _LCD_write_com
00E4 .dbline 110
00E4 ; delay_ms(5);
00E4 05E0 ldi R16,5
00E6 97DF xcall _delay_ms
00E8 .dbline 111
00E8 ; LCD_write_com(0x38);
00E8 08E3 ldi R16,56
00EA A4DF xcall _LCD_write_com
00EC .dbline 112
00EC ; delay_ms(5);
00EC 05E0 ldi R16,5
00EE 93DF xcall _delay_ms
00F0 .dbline 113
00F0 ; LCD_write_com(0x38);
00F0 08E3 ldi R16,56
00F2 A0DF xcall _LCD_write_com
00F4 .dbline 115
00F4 ;
00F4 ; LCD_write_com(0x08); /*显示关闭*/
00F4 08E0 ldi R16,8
00F6 9EDF xcall _LCD_write_com
00F8 .dbline 116
00F8 ; LCD_write_com(0x01); /*显示清屏*/
00F8 01E0 ldi R16,1
00FA 9CDF xcall _LCD_write_com
00FC .dbline 117
00FC ; LCD_write_com(0x06); /*显示光标移动设置*/
00FC 06E0 ldi R16,6
00FE 9ADF xcall _LCD_write_com
0100 .dbline 118
0100 ; delay_ms(5);
0100 05E0 ldi R16,5
0102 89DF xcall _delay_ms
0104 .dbline 119
0104 ; LCD_write_com(0x0C); /*显示开及光标设置*/
0104 0CE0 ldi R16,12
0106 96DF xcall _LCD_write_com
0108 .dbline -2
0108 L28:
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -