📄 mian.lis
字号:
00E8 ; }
00E8 CADF xcall _LCD_en_write
00EA .dbline 102
00EA ;
00EA 842F mov R24,R20
00EC 8F70 andi R24,#0x0F
00EE 8295 swap R24
00F0 482F mov R20,R24
00F2 .dbline 103
00F2 ;
00F2 8BB3 in R24,0x1b
00F4 8F70 andi R24,15
00F6 8BBB out 0x1b,R24
00F8 .dbline 104
00F8 ;
00F8 842F mov R24,R20
00FA 807F andi R24,240
00FC 2BB2 in R2,0x1b
00FE 282A or R2,R24
0100 2BBA out 0x1b,R2
0102 .dbline 105
0102 ; void process_data(void)//数字处理函数
0102 BDDF xcall _LCD_en_write
0104 .dbline -2
0104 L20:
0104 0E940000 xcall pop_gset1
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbsym r data 20 c
010A .dbend
010A .dbfunc e LCD_set_xy _LCD_set_xy fV
010A ; address -> R20
010A ; y -> R20
010A ; x -> R22
.even
010A _LCD_set_xy::
010A 0E940000 xcall push_gset2
010E 422F mov R20,R18
0110 602F mov R22,R16
0112 .dbline -1
0112 .dbline 124
0112 ; {if(a1[3]!=32){data1=(a1[0]-48)*1000+(a1[1]-48)*100+(a1[2]-48)*10+(a1[3]-48);}
0112 ; else if(a1[2]!=32){data1=(a1[0]-48)*100+(a1[1]-48)*10+(a1[2]-48);}
0112 ; else if(a1[1]!=32){data1=(a1[0]-48)*10+(a1[1]-48);}
0112 ; else if(a1[0]!=32){data1=a1[0]-48;}
0112 ; else data1=0;//ASCII-48才是对应的数字
0112 ;
0112 ; if(a2[3]!=32){data2=(a2[0]-48)*1000+(a2[1]-48)*100+(a2[2]-48)*10+(a2[3]-48);}
0112 ; else if(a2[2]!=32){data2=(a2[0]-48)*100+(a2[1]-48)*10+(a2[2]-48);}
0112 ; else if(a2[1]!=32){data2=(a2[0]-48)*10+(a2[1]-48);}
0112 ; else if(a2[0]!=32){data2=a2[0]-48;}
0112 ; else data2=0;
0112 ;
0112 ; process_count();//数据处理完毕调用运算函数
0112 ; }
0112 ;
0112 ; void process_count(void)//运算函数
0112 ; {if(flag_count=='+')result=data1+data2;
0112 ; if(flag_count=='-')result=data1-data2;
0112 ; if(flag_count=='*')result=data1*data2;
0112 .dbline 126
0112 ; if(flag_count=='/')result=data1/data2;
0112 ; display_result();//运算完毕调用结果处理函数
0112 4423 tst R20
0114 19F4 brne L22
0116 .dbline 126
0116 462F mov R20,R22
0118 4058 subi R20,128 ; addi 128
011A 02C0 xjmp L23
011C L22:
011C .dbline 127
011C ; }
011C 462F mov R20,R22
011E 4054 subi R20,64 ; addi 192
0120 L23:
0120 .dbline 128
0120 ;
0120 042F mov R16,R20
0122 B3DF xcall _LCD_write_command
0124 .dbline -2
0124 L21:
0124 0E940000 xcall pop_gset2
0128 .dbline 0 ; func end
0128 0895 ret
012A .dbsym r address 20 c
012A .dbsym r y 20 c
012A .dbsym r x 22 c
012A .dbend
012A .dbfunc e LCD_write_string _LCD_write_string fV
012A ; s -> R20,R21
012A ; Y -> R10
012A ; X -> R22
.even
012A _LCD_write_string::
012A 0E940000 xcall push_gset3
012E A22E mov R10,R18
0130 602F mov R22,R16
0132 4E81 ldd R20,y+6
0134 5F81 ldd R21,y+7
0136 .dbline -1
0136 .dbline 132
0136 ; void display_result(void)//结果处理函数
0136 ; {if(result>9999)error=1;//溢出
0136 ; if(result<0&&flag_count=='-'){result_dp[0]='-';result=result*(-1);}//符号处理
0136 ; if(result<0&&flag_count!='-')error=1; //只有减法有可能出现负数
0136 .dbline 133
0136 ; if(flag_count=='/'&&data2==0)error=1;//除法时除数不能为0
0136 2A2D mov R18,R10
0138 062F mov R16,R22
013A E7DF xcall _LCD_set_xy
013C 05C0 xjmp L26
013E L25:
013E .dbline 135
013E .dbline 136
013E FA01 movw R30,R20
0140 0081 ldd R16,z+0
0142 C3DF xcall _LCD_write_data
0144 .dbline 137
0144 4F5F subi R20,255 ; offset = 1
0146 5F4F sbci R21,255
0148 .dbline 138
0148 L26:
0148 .dbline 134
0148 ;
0148 FA01 movw R30,R20
014A 2080 ldd R2,z+0
014C 2220 tst R2
014E B9F7 brne L25
0150 .dbline -2
0150 L24:
0150 0E940000 xcall pop_gset3
0154 .dbline 0 ; func end
0154 0895 ret
0156 .dbsym r s 20 pc
0156 .dbsym r Y 10 c
0156 .dbsym r X 22 c
0156 .dbend
0156 .dbfunc e LCD_write_char _LCD_write_char fV
0156 ; data -> y+4
0156 ; Y -> R22
0156 ; X -> R20
.even
0156 _LCD_write_char::
0156 0E940000 xcall push_gset2
015A 622F mov R22,R18
015C 402F mov R20,R16
015E .dbline -1
015E .dbline 143
015E ;
015E ; result_dp[1]=result/10000+48;//显示处理
015E ; result_dp[2]=result/1000%10+48;
015E ; result_dp[3]=result/100%10+48;
015E ; result_dp[4]=result/10%10+48;
015E ; result_dp[5]=result%10+48;
015E ; if(result_dp[1]==48)//显示修正,首位不能显示0
015E ; {result_dp[1]=32;
015E ; if(result_dp[2]==48)
015E .dbline 144
015E ; {result_dp[2]=32;
015E 262F mov R18,R22
0160 042F mov R16,R20
0162 D3DF xcall _LCD_set_xy
0164 .dbline 145
0164 ; if(result_dp[3]==48)
0164 0C81 ldd R16,y+4
0166 B1DF xcall _LCD_write_data
0168 .dbline -2
0168 L28:
0168 0E940000 xcall pop_gset2
016C .dbline 0 ; func end
016C 0895 ret
016E .dbsym l data 4 c
016E .dbsym r Y 22 c
016E .dbsym r X 20 c
016E .dbend
016E .dbfile D:\avr\+++精华+++\计算器/key.h
016E .dbfunc e key_read _key_read fc
016E ; i -> R20
.even
016E _key_read::
016E 0E940000 xcall push_gset1
0172 .dbline -1
0172 .dbline 7
0172 .dbline 10
0172 80EF ldi R24,240
0174 87BB out 0x17,R24
0176 .dbline 11
0176 8FE0 ldi R24,15
0178 88BB out 0x18,R24
017A .dbline 12
017A 01E0 ldi R16,1
017C 10E0 ldi R17,0
017E 5BDF xcall _delay_nms
0180 .dbline 14
0180 46B3 in R20,0x16
0182 4F70 andi R20,15
0184 .dbline 17
0184 8FE0 ldi R24,15
0186 87BB out 0x17,R24
0188 .dbline 18
0188 80EF ldi R24,240
018A 88BB out 0x18,R24
018C .dbline 19
018C 01E0 ldi R16,1
018E 10E0 ldi R17,0
0190 52DF xcall _delay_nms
0192 .dbline 21
0192 86B3 in R24,0x16
0194 807F andi R24,240
0196 482B or R20,R24
0198 .dbline 23
0198 5527 clr R21
019A 473D cpi R20,215
019C E0E0 ldi R30,0
019E 5E07 cpc R21,R30
01A0 09F4 brne X1
01A2 75C0 xjmp L47
01A4 X1:
01A4 4B3D cpi R20,219
01A6 E0E0 ldi R30,0
01A8 5E07 cpc R21,R30
01AA 09F4 brne X2
01AC 68C0 xjmp L43
01AE X2:
01AE 4D3D cpi R20,221
01B0 E0E0 ldi R30,0
01B2 5E07 cpc R21,R30
01B4 09F4 brne X3
01B6 5BC0 xjmp L39
01B8 X3:
01B8 4E3D cpi R20,222
01BA E0E0 ldi R30,0
01BC 5E07 cpc R21,R30
01BE 09F4 brne X4
01C0 4EC0 xjmp L35
01C2 X4:
01C2 8EED ldi R24,222
01C4 90E0 ldi R25,0
01C6 8417 cp R24,R20
01C8 9507 cpc R25,R21
01CA 64F1 brlt L51
01CC L50:
01CC 4737 cpi R20,119
01CE E0E0 ldi R30,0
01D0 5E07 cpc R21,R30
01D2 09F4 brne X5
01D4 60C0 xjmp L49
01D6 X5:
01D6 4B37 cpi R20,123
01D8 E0E0 ldi R30,0
01DA 5E07 cpc R21,R30
01DC 09F4 brne X6
01DE 53C0 xjmp L45
01E0 X6:
01E0 4D37 cpi R20,125
01E2 E0E0 ldi R30,0
01E4 5E07 cpc R21,R30
01E6 09F4 brne X7
01E8 46C0 xjmp L41
01EA X7:
01EA 4E37 cpi R20,126
01EC E0E0 ldi R30,0
01EE 5E07 cpc R21,R30
01F0 09F4 brne X8
01F2 39C0 xjmp L37
01F4 X8:
01F4 4737 cpi R20,119
01F6 E0E0 ldi R30,0
01F8 5E07 cpc R21,R30
01FA 0CF4 brge X9
01FC 4EC0 xjmp L30
01FE X9:
01FE L52:
01FE 473B cpi R20,183
0200 E0E0 ldi R30,0
0202 5E07 cpc R21,R30
0204 09F4 brne X10
0206 45C0 xjmp L48
0208 X10:
0208 4B3B cpi R20,187
020A E0E0 ldi R30,0
020C 5E07 cpc R21,R30
020E 09F4 brne X11
0210 38C0 xjmp L44
0212 X11:
0212 4D3B cpi R20,189
0214 E0E0 ldi R30,0
0216 5E07 cpc R21,R30
0218 61F1 breq L40
021A 4E3B cpi R20,190
021C E0E0 ldi R30,0
021E 5E07 cpc R21,R30
0220 01F1 breq L36
0222 3BC0 xjmp L30
0224 L51:
0224 473E cpi R20,231
0226 E0E0 ldi R30,0
0228 5E07 cpc R21,R30
022A 79F1 breq L46
022C 4B3E cpi R20,235
022E E0E0 ldi R30,0
0230 5E07 cpc R21,R30
0232 19F1 breq L42
0234 4D3E cpi R20,237
0236 E0E0 ldi R30,0
0238 5E07 cpc R21,R30
023A B9F0 breq L38
023C 4E3E cpi R20,238
023E E0E0 ldi R30,0
0240 5E07 cpc R21,R30
0242 59F0 breq L34
0244 473E cpi R20,231
0246 E0E0 ldi R30,0
0248 5E07 cpc R21,R30
024A 3CF1 brlt L30
024C L53:
024C 4F3F cpi R20,255
024E E0E0 ldi R30,0
0250 5E07 cpc R21,R30
0252 09F0 breq L33
0254 22C0 xjmp L30
0256 X0:
0256 .dbline 24
0256 L33:
0256 .dbline 25
0256 0027 clr R16
0258 21C0 xjmp L29
025A L34:
025A .dbline 26
025A 0FE2 ldi R16,47
025C 1FC0 xjmp L29
025E L35:
025E .dbline 27
025E 0DE3 ldi R16,61
0260 1DC0 xjmp L29
0262 L36:
0262 .dbline 28
0262 00E3 ldi R16,48
0264 1BC0 xjmp L29
0266 L37:
0266 .dbline 29
0266 02E5 ldi R16,82
0268 19C0 xjmp L29
026A L38:
026A .dbline 30
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -