📄 test.lis
字号:
00B8 ; delay_nus(5);
00B8 05E0 ldi R16,5
00BA 10E0 ldi R17,0
00BC A3DF xcall _delay_nus
00BE .dbline 68
00BE ; LCD_EN_PORT&=~LCD_EN;
00BE AB98 cbi 0x15,3
00C0 .dbline -2
00C0 L19:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbend
00C2 .dbfunc e LCD_write_char _LCD_write_char fV
00C2 ; data_temp -> R22,R23
00C2 ; command_temp -> R20,R21
00C2 ; data -> R12,R13
00C2 ; command -> R10,R11
.even
00C2 _LCD_write_char::
00C2 0E940000 xcall push_xgsetF03C
00C6 6901 movw R12,R18
00C8 5801 movw R10,R16
00CA .dbline -1
00CA .dbline 76
00CA ; }
00CA ; /*------------------------------------------------------------
00CA ; 函数: 写命令或数据到lcd1602
00CA ; 参数:command: 0---写数据, 1---写命令
00CA ; data: 所要写的命令或数据
00CA ; *-------------------------------------------------------------*/
00CA ; void LCD_write_char(unsigned command,unsigned data)
00CA ; {
00CA .dbline 78
00CA ; unsigned command_temp,data_temp;
00CA ; command_temp=command;
00CA A501 movw R20,R10
00CC .dbline 79
00CC ; data_temp=data;
00CC B601 movw R22,R12
00CE .dbline 80
00CE ; delay_nus(25);
00CE 09E1 ldi R16,25
00D0 10E0 ldi R17,0
00D2 98DF xcall _delay_nus
00D4 .dbline 81
00D4 ; if(command==0)
00D4 4030 cpi R20,0
00D6 4507 cpc R20,R21
00D8 11F5 brne L21
00DA X4:
00DA .dbline 82
00DA ; {
00DA .dbline 83
00DA ; LCD_RS_PORT|=LCD_RS; //RS=1
00DA AA9A sbi 0x15,2
00DC .dbline 84
00DC ; LCD_DATA_PORT&=0X0f;
00DC 85B3 in R24,0x15
00DE 8F70 andi R24,15
00E0 85BB out 0x15,R24
00E2 .dbline 85
00E2 ; LCD_DATA_PORT|=data_temp&0xf0; //写高四位
00E2 CB01 movw R24,R22
00E4 807F andi R24,240
00E6 9070 andi R25,0
00E8 25B2 in R2,0x15
00EA 3324 clr R3
00EC 282A or R2,R24
00EE 392A or R3,R25
00F0 25BA out 0x15,R2
00F2 .dbline 86
00F2 ; LCD_en_write();
00F2 E1DF xcall _LCD_en_write
00F4 .dbline 87
00F4 ; data_temp=data_temp<<4;
00F4 660F lsl R22
00F6 771F rol R23
00F8 660F lsl R22
00FA 771F rol R23
00FC 660F lsl R22
00FE 771F rol R23
0100 660F lsl R22
0102 771F rol R23
0104 .dbline 88
0104 ; LCD_DATA_PORT&=0X0f;
0104 85B3 in R24,0x15
0106 8F70 andi R24,15
0108 85BB out 0x15,R24
010A .dbline 89
010A ; LCD_DATA_PORT|=data_temp&0xf0; //写低四位
010A CB01 movw R24,R22
010C 807F andi R24,240
010E 9070 andi R25,0
0110 25B2 in R2,0x15
0112 3324 clr R3
0114 282A or R2,R24
0116 392A or R3,R25
0118 25BA out 0x15,R2
011A .dbline 90
011A ; LCD_en_write();
011A CDDF xcall _LCD_en_write
011C .dbline 91
011C ; }
011C 21C0 xjmp L22
011E L21:
011E .dbline 93
011E ; else
011E ; {
011E .dbline 94
011E ; LCD_RS_PORT&=~LCD_RS; //RS=0
011E AA98 cbi 0x15,2
0120 .dbline 95
0120 ; LCD_DATA_PORT&=0X0f;
0120 85B3 in R24,0x15
0122 8F70 andi R24,15
0124 85BB out 0x15,R24
0126 .dbline 96
0126 ; LCD_DATA_PORT|=command_temp&0xf0; //写高四位
0126 CA01 movw R24,R20
0128 807F andi R24,240
012A 9070 andi R25,0
012C 25B2 in R2,0x15
012E 3324 clr R3
0130 282A or R2,R24
0132 392A or R3,R25
0134 25BA out 0x15,R2
0136 .dbline 97
0136 ; LCD_en_write();
0136 BFDF xcall _LCD_en_write
0138 .dbline 98
0138 ; command_temp=command_temp<<4;
0138 440F lsl R20
013A 551F rol R21
013C 440F lsl R20
013E 551F rol R21
0140 440F lsl R20
0142 551F rol R21
0144 440F lsl R20
0146 551F rol R21
0148 .dbline 99
0148 ; LCD_DATA_PORT&=0x0f;
0148 85B3 in R24,0x15
014A 8F70 andi R24,15
014C 85BB out 0x15,R24
014E .dbline 100
014E ; LCD_DATA_PORT|=command_temp&0xf0; //写低四位
014E CA01 movw R24,R20
0150 807F andi R24,240
0152 9070 andi R25,0
0154 25B2 in R2,0x15
0156 3324 clr R3
0158 282A or R2,R24
015A 392A or R3,R25
015C 25BA out 0x15,R2
015E .dbline 101
015E ; LCD_en_write();
015E ABDF xcall _LCD_en_write
0160 .dbline 102
0160 ; }
0160 L22:
0160 .dbline -2
0160 L20:
0160 .dbline 0 ; func end
0160 0C940000 xjmp pop_xgsetF03C
0164 .dbsym r data_temp 22 i
0164 .dbsym r command_temp 20 i
0164 .dbsym r data 12 i
0164 .dbsym r command 10 i
0164 .dbend
0164 .dbfunc e clear _clear fV
0164 ; i -> R20
.even
0164 _clear::
0164 4A93 st -y,R20
0166 .dbline -1
0166 .dbline 108
0166 ; }
0166 ; /*-------------------------------------------------------------
0166 ; 函数: 清屏lcd1602
0166 ; ---------------------------------------------------------------*/
0166 ; void clear(void)
0166 ; {
0166 .dbline 110
0166 ; unsigned char i;
0166 ; LCD_set_xy(0,0);
0166 2227 clr R18
0168 0027 clr R16
016A 93DF xcall _LCD_set_xy
016C .dbline 111
016C ; for(i=0;i<16;i++)
016C 4427 clr R20
016E 06C0 xjmp L27
0170 L24:
0170 .dbline 112
0170 ; LCD_write_char(0,' ');
0170 20E2 ldi R18,32
0172 30E0 ldi R19,0
0174 0027 clr R16
0176 1127 clr R17
0178 A4DF xcall _LCD_write_char
017A L25:
017A .dbline 111
017A 4395 inc R20
017C L27:
017C .dbline 111
017C 4031 cpi R20,16
017E C0F3 brlo L24
0180 X5:
0180 .dbline 113
0180 ; LCD_set_xy(0,1);
0180 21E0 ldi R18,1
0182 0027 clr R16
0184 86DF xcall _LCD_set_xy
0186 .dbline 114
0186 ; for(i=0;i<16;i++)
0186 4427 clr R20
0188 06C0 xjmp L31
018A L28:
018A .dbline 115
018A ; LCD_write_char(0,' ');
018A 20E2 ldi R18,32
018C 30E0 ldi R19,0
018E 0027 clr R16
0190 1127 clr R17
0192 97DF xcall _LCD_write_char
0194 L29:
0194 .dbline 114
0194 4395 inc R20
0196 L31:
0196 .dbline 114
0196 4031 cpi R20,16
0198 C0F3 brlo L28
019A X6:
019A .dbline -2
019A L23:
019A .dbline 0 ; func end
019A 4991 ld R20,y+
019C 0895 ret
019E .dbsym r i 20 c
019E .dbend
019E .dbfunc e LCD_write_string _LCD_write_string fV
019E ; s -> R20,R21
019E ; Y -> R12
019E ; X -> R10
.even
019E _LCD_write_string::
019E 0E940000 xcall push_xgset303C
01A2 C22E mov R12,R18
01A4 A02E mov R10,R16
01A6 4E81 ldd R20,y+6
01A8 5F81 ldd R21,y+7
01AA .dbline -1
01AA .dbline 123
01AA ; }
01AA ; /*-------------------------------------------------------------
01AA ; 函数: 写字符串
01AA ; 参数:列---X=0~15,行---Y=0~1 写地址
01AA ; s为所要写的字符串
01AA ; ---------------------------------------------------------------*/
01AA ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
01AA ; {
01AA .dbline 124
01AA ; LCD_set_xy(X,Y);
01AA 2C2D mov R18,R12
01AC 0A2D mov R16,R10
01AE 71DF xcall _LCD_set_xy
01B0 08C0 xjmp L34
01B2 L33:
01B2 .dbline 126
01B2 ; while(*s)
01B2 ; {
01B2 .dbline 127
01B2 ; LCD_write_char(0,*s);
01B2 FA01 movw R30,R20
01B4 2081 ldd R18,z+0
01B6 3327 clr R19
01B8 0027 clr R16
01BA 1127 clr R17
01BC 82DF xcall _LCD_write_char
01BE .dbline 128
01BE ; s++;
01BE 4F5F subi R20,255 ; offset = 1
01C0 5F4F sbci R21,255
01C2 .dbline 129
01C2 ; }
01C2 L34:
01C2 .dbline 125
01C2 FA01 movw R30,R20
01C4 2080 ldd R2,z+0
01C6 2220 tst R2
01C8 A1F7 brne L33
01CA X7:
01CA .dbline -2
01CA L32:
01CA .dbline 0 ; func end
01CA 0C940000 xjmp pop_xgset303C
01CE .dbsym r s 20 pc
01CE .dbsym r Y 12 c
01CE .dbsym r X 10 c
01CE .dbend
01CE .dbfunc e LCD_write_data _LCD_write_data fV
01CE ; fuhao -> R22
01CE ; data -> y+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -