📄 main.lis
字号:
00EE .dbfunc e LCD_DisplayCharacter _LCD_DisplayCharacter fV
00EE ; Char -> R10
.even
00EE _LCD_DisplayCharacter::
00EE AA92 st -y,R10
00F0 A02E mov R10,R16
00F2 .dbline -1
00F2 .dbline 103
00F2 ; }
00F2 ; }
00F2 ;
00F2 ; void LCD_DisplayCharacter (char Char)
00F2 ; {
00F2 .dbline 104
00F2 ; LCD_WriteData (Char);
00F2 0A2D mov R16,R10
00F4 C0DF xcall _LCD_WriteData
00F6 .dbline -2
00F6 L12:
00F6 .dbline 0 ; func end
00F6 A990 ld R10,y+
00F8 0895 ret
00FA .dbsym r Char 10 c
00FA .dbend
00FA .dbfunc e LCD_DisplayString _LCD_DisplayString fV
00FA ; string -> R10,R11
00FA ; column -> R14
00FA ; row -> R12
.even
00FA _LCD_DisplayString::
00FA 0E940000 xcall push_xgset00FC
00FE E22E mov R14,R18
0100 C02E mov R12,R16
0102 AE80 ldd R10,y+6
0104 BF80 ldd R11,y+7
0106 .dbline -1
0106 .dbline 108
0106 ; }
0106 ;
0106 ; void LCD_DisplayString (char row, char column ,unsigned char *string)
0106 ; {
0106 .dbline 109
0106 ; LCD_Cursor (row, column);
0106 2E2D mov R18,R14
0108 0C2D mov R16,R12
010A D7DF xcall _LCD_Cursor
010C 04C0 xjmp L15
010E L14:
010E .dbline 111
010E ; while (*string)
010E ; LCD_DisplayCharacter (*string++);
010E F501 movw R30,R10
0110 0191 ld R16,Z+
0112 5F01 movw R10,R30
0114 ECDF xcall _LCD_DisplayCharacter
0116 L15:
0116 .dbline 110
0116 F501 movw R30,R10
0118 2080 ldd R2,z+0
011A 2220 tst R2
011C C1F7 brne L14
011E X2:
011E .dbline -2
011E L13:
011E .dbline 0 ; func end
011E 0C940000 xjmp pop_xgset00FC
0122 .dbsym r string 10 pc
0122 .dbsym r column 14 c
0122 .dbsym r row 12 c
0122 .dbend
0122 .dbfunc e LCD_DisplayInt _LCD_DisplayInt fV
0122 ; n -> R14
0122 ; j -> R14
0122 ; str -> R20,R21
0122 ; a -> y+2
0122 ; i -> R22
0122 ; t -> R14,R15
0122 ; column -> R12
0122 ; row -> R10
.even
0122 _LCD_DisplayInt::
0122 0E940000 xcall push_xgsetF0FC
0126 C22E mov R12,R18
0128 A02E mov R10,R16
012A 2797 sbiw R28,7
012C E988 ldd R14,y+17
012E FA88 ldd R15,y+18
0130 .dbline -1
0130 .dbline 116
0130 ; }
0130 ;
0130 ; unsigned char ch1[6]; //用于存放INT转换成字符串后的数据
0130 ; void LCD_DisplayInt (char row, char column ,unsigned int t)
0130 ; {
0130 .dbline 119
0130 ; unsigned char n;
0130 ; unsigned char a[5]; char i, j;
0130 ; unsigned char *str=ch1;
0130 40E0 ldi R20,<_ch1
0132 50E0 ldi R21,>_ch1
0134 .dbline 120
0134 ; a[0]=(t/10000)%10; //取得整数值到数组
0134 20E1 ldi R18,10000
0136 37E2 ldi R19,39
0138 8701 movw R16,R14
013A 0E940000 xcall div16u
013E 2AE0 ldi R18,10
0140 30E0 ldi R19,0
0142 0E940000 xcall mod16u
0146 0A83 std y+2,R16
0148 .dbline 121
0148 ; a[1]=(t/1000)%10;
0148 28EE ldi R18,1000
014A 33E0 ldi R19,3
014C 8701 movw R16,R14
014E 0E940000 xcall div16u
0152 2AE0 ldi R18,10
0154 30E0 ldi R19,0
0156 0E940000 xcall mod16u
015A 0B83 std y+3,R16
015C .dbline 122
015C ; a[2]=(t/100)%10;
015C 24E6 ldi R18,100
015E 30E0 ldi R19,0
0160 8701 movw R16,R14
0162 0E940000 xcall div16u
0166 2AE0 ldi R18,10
0168 30E0 ldi R19,0
016A 0E940000 xcall mod16u
016E 0C83 std y+4,R16
0170 .dbline 123
0170 ; a[3]=(t/10)%10;
0170 2AE0 ldi R18,10
0172 30E0 ldi R19,0
0174 8701 movw R16,R14
0176 0E940000 xcall div16u
017A 2AE0 ldi R18,10
017C 30E0 ldi R19,0
017E 0E940000 xcall mod16u
0182 0D83 std y+5,R16
0184 .dbline 124
0184 ; a[4]=(t/1)%10;
0184 2AE0 ldi R18,10
0186 30E0 ldi R19,0
0188 8701 movw R16,R14
018A 0E940000 xcall mod16u
018E 0E83 std y+6,R16
0190 .dbline 126
0190 ;
0190 ; for(i=0; i<5; i++) //转成ASCII码
0190 6627 clr R22
0192 0BC0 xjmp L25
0194 L22:
0194 .dbline 127
0194 ; a[i]=a[i]+'0';
0194 CE01 movw R24,R28
0196 0296 adiw R24,2
0198 262E mov R2,R22
019A 3324 clr R3
019C 280E add R2,R24
019E 391E adc R3,R25
01A0 F101 movw R30,R2
01A2 8081 ldd R24,z+0
01A4 805D subi R24,208 ; addi 48
01A6 8083 std z+0,R24
01A8 L23:
01A8 .dbline 126
01A8 6395 inc R22
01AA L25:
01AA .dbline 126
01AA 6530 cpi R22,5
01AC 98F3 brlo L22
01AE X3:
01AE .dbline 128
01AE ; for(i=0; a[i]=='0' && i<=3; i++);
01AE 6627 clr R22
01B0 01C0 xjmp L29
01B2 L26:
01B2 .dbline 128
01B2 L27:
01B2 .dbline 128
01B2 6395 inc R22
01B4 L29:
01B4 .dbline 128
01B4 CE01 movw R24,R28
01B6 0296 adiw R24,2
01B8 E62F mov R30,R22
01BA FF27 clr R31
01BC E80F add R30,R24
01BE F91F adc R31,R25
01C0 8081 ldd R24,z+0
01C2 8033 cpi R24,48
01C4 19F4 brne L30
01C6 X4:
01C6 83E0 ldi R24,3
01C8 8617 cp R24,R22
01CA 98F7 brsh L26
01CC X5:
01CC L30:
01CC .dbline 129
01CC ; n=5-i;
01CC 85E0 ldi R24,5
01CE E82E mov R14,R24
01D0 E61A sub R14,R22
01D2 .dbline 130
01D2 ; for(j=5-n; j<i; j++) //填充空格
01D2 8E19 sub R24,R14
01D4 E82E mov R14,R24
01D6 06C0 xjmp L34
01D8 L31:
01D8 .dbline 131
01D8 ; { *str=' '; str++; }
01D8 .dbline 131
01D8 80E2 ldi R24,32
01DA FA01 movw R30,R20
01DC 8083 std z+0,R24
01DE .dbline 131
01DE 4F5F subi R20,255 ; offset = 1
01E0 5F4F sbci R21,255
01E2 .dbline 131
01E2 L32:
01E2 .dbline 130
01E2 E394 inc R14
01E4 L34:
01E4 .dbline 130
01E4 E616 cp R14,R22
01E6 C0F3 brlo L31
01E8 X6:
01E8 .dbline 132
01E8 ; for(; i<5; i++)
01E8 0CC0 xjmp L38
01EA L35:
01EA .dbline 133
01EA ; { *str=(char)a[i]; str++; } //加入有效的数字
01EA .dbline 133
01EA CE01 movw R24,R28
01EC 0296 adiw R24,2
01EE E62F mov R30,R22
01F0 FF27 clr R31
01F2 E80F add R30,R24
01F4 F91F adc R31,R25
01F6 2080 ldd R2,z+0
01F8 FA01 movw R30,R20
01FA 2082 std z+0,R2
01FC .dbline 133
01FC 4F5F subi R20,255 ; offset = 1
01FE 5F4F sbci R21,255
0200 .dbline 133
0200 L36:
0200 .dbline 132
0200 6395 inc R22
0202 L38:
0202 .dbline 132
0202 6530 cpi R22,5
0204 90F3 brlo L35
0206 X7:
0206 .dbline 134
0206 ; *str='\0';
0206 2224 clr R2
0208 FA01 movw R30,R20
020A 2082 std z+0,R2
020C .dbline 135
020C ; LCD_DisplayString(row,column,ch1);
020C 80E0 ldi R24,<_ch1
020E 90E0 ldi R25,>_ch1
0210 9983 std y+1,R25
0212 8883 std y+0,R24
0214 2C2D mov R18,R12
0216 0A2D mov R16,R10
0218 70DF xcall _LCD_DisplayString
021A .dbline -2
021A L17:
021A .dbline 0 ; func end
021A 2796 adiw R28,7
021C 0C940000 xjmp pop_xgsetF0FC
0220 .dbsym r n 14 c
0220 .dbsym r j 14 c
0220 .dbsym r str 20 pc
0220 .dbsym l a 2 A[5:5]c
0220 .dbsym r i 22 c
0220 .dbsym r t 14 i
0220 .dbsym r column 12 c
0220 .dbsym r row 10 c
0220 .dbend
0220 .dbfunc e LCD_Displayasc _LCD_Displayasc fV
0220 ; temp -> R20
0220 ; ascii -> y+2
0220 ; asc -> y+10
0220 ; column -> R12
0220 ; row -> R10
.even
0220 _LCD_Displayasc::
0220 0E940000 xcall push_xgset303C
0224 C22E mov R12,R18
0226 A02E mov R10,R16
0228 2497 sbiw R28,4
022A .dbline -1
022A .dbline 139
022A ; }
022A ;
022A ; void LCD_Displayasc (char row, char column, char asc)
022A ; {
022A .dbline 141
022A ; unsigned char ascii[2],temp;
022A ; temp=asc;
022A 4A85 ldd R20,y+10
022C .dbline 142
022C ; ascii[0]=temp+'0';
022C 842F mov R24,R20
022E 805D subi R24,208 ; addi 48
0230 8A83 std y+2,R24
0232 .dbline 143
0232 ; ascii[1]='\0';
0232 2224 clr R2
0234 2B82 std y+3,R2
0236 .dbline 144
0236 ; LCD_DisplayString(row,column,ascii);
0236 CE01 movw R24,R28
0238 0296 adiw R24,2
023A 9983 std y+1,R25
023C 8883 std y+0,R24
023E 2C2D mov R18,R12
0240 0A2D mov R16,R10
0242 5BDF xcall _LCD_DisplayString
0244 .dbline -2
0244 L39:
0244 .dbline 0 ; func end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -