📄 gps.lis
字号:
00C2 .dbline 258
00C2 ; send_8bit(command<<4);
00C2 042F mov R16,R20
00C4 0F70 andi R16,#0x0F
00C6 0295 swap R16
00C8 C5DF xcall _send_8bit
00CA .dbline 259
00CA ; clearRS;
00CA D998 cbi 0x1b,1
00CC .dbline -2
00CC L25:
00CC 0E940000 xcall pop_gset1
00D0 .dbline 0 ; func end
00D0 0895 ret
00D2 .dbsym r command 20 c
00D2 .dbend
00D2 .dbfunc e guangbiao _guangbiao fV
00D2 ; x -> R20
.even
00D2 _guangbiao::
00D2 0E940000 xcall push_gset1
00D6 402F mov R20,R16
00D8 .dbline -1
00D8 .dbline 263
00D8 ; }
00D8 ; //光标开关,1开,0关
00D8 ; void guangbiao(uchar x) //
00D8 ; {
00D8 .dbline 264
00D8 ; if(x==1) WriteCommand(0x0c|0x03);
00D8 4130 cpi R20,1
00DA 19F4 brne L27
00DC .dbline 264
00DC 0FE0 ldi R16,15
00DE E8DF xcall _WriteCommand
00E0 02C0 xjmp L28
00E2 L27:
00E2 .dbline 265
00E2 0CE0 ldi R16,12
00E4 E5DF xcall _WriteCommand
00E6 L28:
00E6 .dbline -2
00E6 L26:
00E6 0E940000 xcall pop_gset1
00EA .dbline 0 ; func end
00EA 0895 ret
00EC .dbsym r x 20 c
00EC .dbend
00EC .dbfunc e Set_display_Adress _Set_display_Adress fV
00EC ; address -> R20
00EC ; x -> R22
00EC ; y -> R20
.even
00EC _Set_display_Adress::
00EC 0E940000 xcall push_gset2
00F0 622F mov R22,R18
00F2 402F mov R20,R16
00F4 .dbline -1
00F4 .dbline 270
00F4 ; else WriteCommand(0x0c);
00F4 ; }
00F4 ;
00F4 ; // 设置显示坐标:y行,x列
00F4 ; void Set_display_Adress(uchar y,uchar x)//
00F4 ; {
00F4 .dbline 272
00F4 ; uchar address;
00F4 ; switch(y)
00F4 5527 clr R21
00F6 4030 cpi R20,0
00F8 4507 cpc R20,R21
00FA 69F0 breq L33
00FC X0:
00FC 4130 cpi R20,1
00FE E0E0 ldi R30,0
0100 5E07 cpc R21,R30
0102 61F0 breq L34
0104 4230 cpi R20,2
0106 E0E0 ldi R30,0
0108 5E07 cpc R21,R30
010A 59F0 breq L35
010C 4330 cpi R20,3
010E E0E0 ldi R30,0
0110 5E07 cpc R21,R30
0112 51F0 breq L36
0114 0BC0 xjmp L30
0116 X1:
0116 .dbline 273
0116 ; {
0116 L33:
0116 .dbline 275
0116 ; case 0:
0116 ; address=0x80+x;
0116 462F mov R20,R22
0118 4058 subi R20,128 ; addi 128
011A .dbline 276
011A ; break;
011A 08C0 xjmp L31
011C L34:
011C .dbline 278
011C ; case 1:
011C ; address=0x90+x;
011C 462F mov R20,R22
011E 4057 subi R20,112 ; addi 144
0120 .dbline 279
0120 ; break;
0120 05C0 xjmp L31
0122 L35:
0122 .dbline 281
0122 ; case 2:
0122 ; address=0x88+x;
0122 462F mov R20,R22
0124 4857 subi R20,120 ; addi 136
0126 .dbline 282
0126 ; break;
0126 02C0 xjmp L31
0128 L36:
0128 .dbline 284
0128 ; case 3:
0128 ; address=0x98+x;
0128 462F mov R20,R22
012A 4856 subi R20,104 ; addi 152
012C .dbline 285
012C ; break;
012C L30:
012C L31:
012C .dbline 287
012C ; }
012C ; WriteCommand(address);
012C 042F mov R16,R20
012E C0DF xcall _WriteCommand
0130 .dbline -2
0130 L29:
0130 0E940000 xcall pop_gset2
0134 .dbline 0 ; func end
0134 0895 ret
0136 .dbsym r address 20 c
0136 .dbsym r x 22 c
0136 .dbsym r y 20 c
0136 .dbend
0136 .dbfunc e display_String _display_String fV
0136 ; i -> R20
0136 ; s -> R22,R23
0136 ; x -> R10
0136 ; y -> R12
.even
0136 _display_String::
0136 0E940000 xcall push_gset5
013A A22E mov R10,R18
013C C02E mov R12,R16
013E 6A85 ldd R22,y+10
0140 7B85 ldd R23,y+11
0142 .dbline -1
0142 .dbline 291
0142 ; }
0142 ; //显示字符串
0142 ; void display_String(uchar y,uchar x,uchar *s) //
0142 ; {
0142 .dbline 292
0142 ; uchar i=0;
0142 4427 clr R20
0144 .dbline 293
0144 ; if(*s=='\0')return;
0144 FB01 movw R30,R22
0146 2080 ldd R2,z+0
0148 2220 tst R2
014A 09F4 brne L38
014C .dbline 293
014C 30C0 xjmp L37
014E L38:
014E .dbline 294
014E ; for(i=0;;i++)
014E 4427 clr R20
0150 L40:
0150 .dbline 295
0150 ; {
0150 .dbline 296
0150 ; if(*(s+i)=='\0')break;
0150 E42F mov R30,R20
0152 FF27 clr R31
0154 E60F add R30,R22
0156 F71F adc R31,R23
0158 2080 ldd R2,z+0
015A 2220 tst R2
015C 09F4 brne L44
015E .dbline 296
015E 27C0 xjmp L42
0160 L44:
0160 .dbline 297
0160 ; if(!i%2)
0160 4423 tst R20
0162 21F4 brne L48
0164 81E0 ldi R24,1
0166 90E0 ldi R25,0
0168 7C01 movw R14,R24
016A 02C0 xjmp L49
016C L48:
016C EE24 clr R14
016E FF24 clr R15
0170 L49:
0170 22E0 ldi R18,2
0172 30E0 ldi R19,0
0174 8701 movw R16,R14
0176 0E940000 xcall mod16s
017A 0030 cpi R16,0
017C 0107 cpc R16,R17
017E 19F0 breq L46
0180 X2:
0180 .dbline 298
0180 ; Set_display_Adress(y,x);
0180 2A2D mov R18,R10
0182 0C2D mov R16,R12
0184 B3DF xcall _Set_display_Adress
0186 L46:
0186 .dbline 299
0186 ; WriteData(*(s+i));
0186 E42F mov R30,R20
0188 FF27 clr R31
018A E60F add R30,R22
018C F71F adc R31,R23
018E 0081 ldd R16,z+0
0190 7EDF xcall _WriteData
0192 .dbline 300
0192 ; if(i%2)x++;
0192 12E0 ldi R17,2
0194 042F mov R16,R20
0196 0E940000 xcall mod8u
019A 0023 tst R16
019C 09F0 breq L50
019E .dbline 300
019E A394 inc R10
01A0 L50:
01A0 .dbline 301
01A0 ; if(x>7){y++,x=0;}
01A0 87E0 ldi R24,7
01A2 8A15 cp R24,R10
01A4 10F4 brsh L52
01A6 .dbline 301
01A6 .dbline 301
01A6 C394 inc R12
01A8 AA24 clr R10
01AA .dbline 301
01AA L52:
01AA .dbline 302
01AA L41:
01AA .dbline 294
01AA 4395 inc R20
01AC .dbline 294
01AC D1CF xjmp L40
01AE L42:
01AE .dbline -2
01AE L37:
01AE 0E940000 xcall pop_gset5
01B2 .dbline 0 ; func end
01B2 0895 ret
01B4 .dbsym r i 20 c
01B4 .dbsym r s 22 pc
01B4 .dbsym r x 10 c
01B4 .dbsym r y 12 c
01B4 .dbend
01B4 .dbfunc e display_Char _display_Char fV
01B4 ; ch -> y+4
01B4 ; x -> R22
01B4 ; y -> R20
.even
01B4 _display_Char::
01B4 0E940000 xcall push_gset2
01B8 622F mov R22,R18
01BA 402F mov R20,R16
01BC .dbline -1
01BC .dbline 306
01BC ; }
01BC ; }
01BC ; //显示单个字符
01BC ; void display_Char(uchar y,uchar x,char ch)
01BC ; {
01BC .dbline 307
01BC ; Set_display_Adress(y,x);
01BC 262F mov R18,R22
01BE 042F mov R16,R20
01C0 95DF xcall _Set_display_Adress
01C2 .dbline 308
01C2 ; WriteData(ch);
01C2 0C81 ldd R16,y+4
01C4 64DF xcall _WriteData
01C6 .dbline -2
01C6 L54:
01C6 0E940000 xcall pop_gset2
01CA .dbline 0 ; func end
01CA 0895 ret
01CC .dbsym l ch 4 c
01CC .dbsym r x 22 c
01CC .dbsym r y 20 c
01CC .dbend
01CC .dbfunc e display_Num _display_Num fV
01CC ; tmp -> y+0
01CC ; i -> R20
01CC ; N -> R22
01CC ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -