📄 display.lis
字号:
0118 ; lcd_write_data(data/10%10+0x30);
0118 2AE0 ldi R18,10
011A 30E0 ldi R19,0
011C 042F mov R16,R20
011E 1127 clr R17
0120 00D0 rcall div16s
0122 2AE0 ldi R18,10
0124 30E0 ldi R19,0
0126 00D0 rcall mod16s
0128 005D subi R16,208 ; offset = 48
012A 1F4F sbci R17,255
012C 00D0 rcall _lcd_write_data
012E .dbline 41
012E ; lcd_write_data(data%10+0x30);
012E 2AE0 ldi R18,10
0130 30E0 ldi R19,0
0132 042F mov R16,R20
0134 1127 clr R17
0136 00D0 rcall mod16s
0138 005D subi R16,208 ; offset = 48
013A 1F4F sbci R17,255
013C 00D0 rcall _lcd_write_data
013E .dbline -2
013E L15:
013E 00D0 rcall pop_gset1
0140 .dbline 0 ; func end
0140 0895 ret
0142 .dbsym r data 20 c
0142 .dbend
0142 .dbfunc e displayint _displayint fV
0142 ; data -> R20
0142 ; address -> R22
.even
0142 _displayint::
0142 00D0 rcall push_gset2
0144 422F mov R20,R18
0146 602F mov R22,R16
0148 .dbline -1
0148 .dbline 44
0148 ; }
0148 ; void displayint(unsigned char address,unsigned char data)
0148 ; { lcd_write_comm(0x30);
0148 .dbline 44
0148 00E3 ldi R16,48
014A 10E0 ldi R17,0
014C 00D0 rcall _lcd_write_comm
014E .dbline 45
014E ; lcd_write_comm(address);
014E 062F mov R16,R22
0150 1127 clr R17
0152 00D0 rcall _lcd_write_comm
0154 .dbline 46
0154 ; displaybyte(data);
0154 042F mov R16,R20
0156 D3DF rcall _displaybyte
0158 .dbline -2
0158 L16:
0158 00D0 rcall pop_gset2
015A .dbline 0 ; func end
015A 0895 ret
015C .dbsym r data 20 c
015C .dbsym r address 22 c
015C .dbend
015C .dbfunc e displaybyte2 _displaybyte2 fV
015C ; data -> R20
.even
015C _displaybyte2::
015C 00D0 rcall push_gset1
015E 402F mov R20,R16
0160 .dbline -1
0160 .dbline 50
0160 ; }
0160 ;
0160 ; void displaybyte2(unsigned char data)
0160 ; {
0160 .dbline 51
0160 ; lcd_write_data(data/10%10+0x30);
0160 2AE0 ldi R18,10
0162 30E0 ldi R19,0
0164 042F mov R16,R20
0166 1127 clr R17
0168 00D0 rcall div16s
016A 2AE0 ldi R18,10
016C 30E0 ldi R19,0
016E 00D0 rcall mod16s
0170 005D subi R16,208 ; offset = 48
0172 1F4F sbci R17,255
0174 00D0 rcall _lcd_write_data
0176 .dbline 52
0176 ; lcd_write_data(data%10+0x30);
0176 2AE0 ldi R18,10
0178 30E0 ldi R19,0
017A 042F mov R16,R20
017C 1127 clr R17
017E 00D0 rcall mod16s
0180 005D subi R16,208 ; offset = 48
0182 1F4F sbci R17,255
0184 00D0 rcall _lcd_write_data
0186 .dbline -2
0186 L17:
0186 00D0 rcall pop_gset1
0188 .dbline 0 ; func end
0188 0895 ret
018A .dbsym r data 20 c
018A .dbend
018A .dbfunc e display_char _display_char fV
018A ; i -> R20
018A ; len -> R22
018A ; address -> R20
018A ; Ptr -> R10,R11
.even
018A _display_char::
018A 00D0 rcall push_gset3
018C 422F mov R20,R18
018E A02E mov R10,R16
0190 B12E mov R11,R17
0192 6E81 ldd R22,y+6
0194 .dbline -1
0194 .dbline 60
0194 ; }
0194 ; //////////////////////////////////////////////////////////////////////
0194 ; //*Ptr 字符串的首地址
0194 ; //address 液晶屏的地址0x80-0x8f,0x90-0x9f之间
0194 ; //len 显示的数据的长度,如果不够后面补空格
0194 ; /////////////////////////////////////////////////////////////////////
0194 ; void display_char(unsigned char *Ptr ,unsigned char address,unsigned char len)
0194 ; { unsigned char i;
0194 .dbline 62
0194 ;
0194 ; lcd_write_comm(0x30);
0194 00E3 ldi R16,48
0196 10E0 ldi R17,0
0198 00D0 rcall _lcd_write_comm
019A .dbline 63
019A ; lcd_write_comm(address);
019A 042F mov R16,R20
019C 1127 clr R17
019E 00D0 rcall _lcd_write_comm
01A0 .dbline 64
01A0 ; lcd_write_comm(0x0c);
01A0 0CE0 ldi R16,12
01A2 10E0 ldi R17,0
01A4 00D0 rcall _lcd_write_comm
01A6 .dbline 65
01A6 ; for(i=0;i<len;i++)
01A6 4427 clr R20
01A8 0FC0 rjmp L22
01AA L19:
01AA .dbline 66
01AA ; {
01AA .dbline 67
01AA ; if(*Ptr!='/0')
01AA EA2D mov R30,R10
01AC FB2D mov R31,R11
01AE 8081 ldd R24,z+0
01B0 8F32 cpi R24,47
01B2 31F0 breq L23
01B4 .dbline 68
01B4 ; lcd_write_data(*Ptr++);
01B4 0191 ld R16,Z+
01B6 AE2E mov R10,R30
01B8 BF2E mov R11,R31
01BA 1127 clr R17
01BC 00D0 rcall _lcd_write_data
01BE 03C0 rjmp L24
01C0 L23:
01C0 .dbline 70
01C0 ; else
01C0 ; lcd_write_data(' ');
01C0 00E2 ldi R16,32
01C2 10E0 ldi R17,0
01C4 00D0 rcall _lcd_write_data
01C6 L24:
01C6 .dbline 71
01C6 L20:
01C6 .dbline 65
01C6 4395 inc R20
01C8 L22:
01C8 .dbline 65
01C8 4617 cp R20,R22
01CA 78F3 brlo L19
01CC .dbline -2
01CC L18:
01CC 00D0 rcall pop_gset3
01CE .dbline 0 ; func end
01CE 0895 ret
01D0 .dbsym r i 20 c
01D0 .dbsym r len 22 c
01D0 .dbsym r address 20 c
01D0 .dbsym r Ptr 10 pc
01D0 .dbend
01D0 .dbfunc e display_int _display_int fV
01D0 ; i -> R20
01D0 ; len -> R22
01D0 ; address -> R20
01D0 ; Ptr -> R10,R11
.even
01D0 _display_int::
01D0 00D0 rcall push_gset3
01D2 422F mov R20,R18
01D4 A02E mov R10,R16
01D6 B12E mov R11,R17
01D8 6E81 ldd R22,y+6
01DA .dbline -1
01DA .dbline 80
01DA ; }
01DA ; }
01DA ;
01DA ; //////////////////////////////////////////////////////////////////////
01DA ; //*Ptr 字符串的首地址
01DA ; //address 液晶屏的地址0x80-0x8f,0x90-0x9f之间
01DA ; //len 显示的数据的长度,如果不够后面补空格
01DA ; /////////////////////////////////////////////////////////////////////
01DA ; void display_int(unsigned char *Ptr ,unsigned char address,unsigned char len)
01DA ; { unsigned char i;
01DA .dbline 82
01DA ;
01DA ; lcd_write_comm(0x30);
01DA 00E3 ldi R16,48
01DC 10E0 ldi R17,0
01DE 00D0 rcall _lcd_write_comm
01E0 .dbline 83
01E0 ; lcd_write_comm(address);
01E0 042F mov R16,R20
01E2 1127 clr R17
01E4 00D0 rcall _lcd_write_comm
01E6 .dbline 84
01E6 ; lcd_write_comm(0x0c);
01E6 0CE0 ldi R16,12
01E8 10E0 ldi R17,0
01EA 00D0 rcall _lcd_write_comm
01EC .dbline 85
01EC ; for(i=0;i<len;i++)
01EC 4427 clr R20
01EE 0DC0 rjmp L29
01F0 L26:
01F0 .dbline 86
01F0 .dbline 89
01F0 .dbline 90
01F0 EA2D mov R30,R10
01F2 FB2D mov R31,R11
01F4 0081 ldd R16,z+0
01F6 83DF rcall _displaybyte
01F8 .dbline 91
01F8 8A2D mov R24,R10
01FA 9B2D mov R25,R11
01FC 0196 adiw R24,1
01FE A82E mov R10,R24
0200 B92E mov R11,R25
0202 .dbline 92
0202 00E2 ldi R16,32
0204 10E0 ldi R17,0
0206 00D0 rcall _lcd_write_data
0208 .dbline 93
0208 .dbline 97
0208 L27:
0208 .dbline 85
0208 4395 inc R20
020A L29:
020A .dbline 85
020A 4617 cp R20,R22
020C 88F3 brlo L26
020E .dbline -2
020E L25:
020E 00D0 rcall pop_gset3
0210 .dbline 0 ; func end
0210 0895 ret
0212 .dbsym r i 20 c
0212 .dbsym r len 22 c
0212 .dbsym r address 20 c
0212 .dbsym r Ptr 10 pc
0212 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -