📄 led.lis
字号:
00FA .dbline 109
00FA ; }
00FA L20:
00FA .dbline 110
00FA ; }
00FA L19:
00FA .dbline 112
00FA ; //十位
00FA ; if(data>=10)
00FA 6A30 cpi R22,10
00FC E0E0 ldi R30,0
00FE 7E07 cpc R23,R30
0100 90F0 brlo L22
0102 .dbline 113
0102 ; {
0102 .dbline 114
0102 ; temp=(data%100)/10;
0102 24E6 ldi R18,100
0104 30E0 ldi R19,0
0106 8B01 movw R16,R22
0108 0E940000 xcall mod16u
010C 2AE0 ldi R18,10
010E 30E0 ldi R19,0
0110 0E940000 xcall div16u
0114 402F mov R20,R16
0116 .dbline 115
0116 ; display_one(5,temp);
0116 242F mov R18,R20
0118 05E0 ldi R16,5
011A 94DF xcall _display_one
011C .dbline 116
011C ; delay_ms(6);
011C 06E0 ldi R16,6
011E 10E0 ldi R17,0
0120 78DF xcall _delay_ms
0122 .dbline 117
0122 ; led_contrl_port |= (1<<5);
0122 959A sbi 0x12,5
0124 .dbline 118
0124 ; }
0124 0AC0 xjmp L23
0126 L22:
0126 .dbline 120
0126 ; else
0126 ; {
0126 .dbline 121
0126 ; if(mode==1)
0126 8A2D mov R24,R10
0128 8130 cpi R24,1
012A 39F4 brne L24
012C .dbline 122
012C ; {
012C .dbline 123
012C ; display_one(5,0);
012C 2227 clr R18
012E 05E0 ldi R16,5
0130 89DF xcall _display_one
0132 .dbline 124
0132 ; delay_ms(6);
0132 06E0 ldi R16,6
0134 10E0 ldi R17,0
0136 6DDF xcall _delay_ms
0138 .dbline 125
0138 ; led_contrl_port |= (1<<5);
0138 959A sbi 0x12,5
013A .dbline 126
013A ; }
013A L24:
013A .dbline 127
013A ; }
013A L23:
013A .dbline 129
013A ; //个位
013A ; temp=data%10;
013A 2AE0 ldi R18,10
013C 30E0 ldi R19,0
013E 8B01 movw R16,R22
0140 0E940000 xcall mod16u
0144 402F mov R20,R16
0146 .dbline 130
0146 ; display_one(4,temp);
0146 242F mov R18,R20
0148 04E0 ldi R16,4
014A 7CDF xcall _display_one
014C .dbline 131
014C ; delay_ms(6);
014C 06E0 ldi R16,6
014E 10E0 ldi R17,0
0150 60DF xcall _delay_ms
0152 .dbline 132
0152 ; led_contrl_port |= (1<<4);
0152 949A sbi 0x12,4
0154 .dbline -2
0154 L13:
0154 0E940000 xcall pop_gset3
0158 .dbline 0 ; func end
0158 0895 ret
015A .dbsym r temp 20 c
015A .dbsym r mode 10 c
015A .dbsym r data 22 s
015A .dbend
015A .dbfunc e display_float _display_float fV
015A ; temp2 -> R22,R23
015A ; temp -> R20
015A ; data -> y+22
.even
015A _display_float::
015A 0E940000 xcall push_arg4
015E 0E940000 xcall push_gset3
0162 6097 sbiw R28,16
0164 .dbline -1
0164 .dbline 142
0164 ; }
0164 ;
0164 ; /***********************
0164 ; ** 显示四位浮点数 本函数占用 mega16 的空间 19%
0164 ; ** 输入:要显示的四位数
0164 ; ** 说明:可以小于四位数,自动补零
0164 ; ************************/
0164 ;
0164 ; void display_float(float data)
0164 ; {
0164 .dbline 146
0164 ; UNS8 temp;
0164 ; UNS16 temp2; //用于把浮点数变为整形
0164 ; // 人为保证data的值,可以不要错误处理。
0164 ; if (data>=1000)
0164 FE01 movw R30,R28
0166 2688 ldd R2,z+22
0168 3788 ldd R3,z+23
016A 408C ldd R4,z+24
016C 518C ldd R5,z+25
016E 5A92 st -y,R5
0170 4A92 st -y,R4
0172 3A92 st -y,R3
0174 2A92 st -y,R2
0176 00E0 ldi R16,<L29
0178 10E0 ldi R17,>L29
017A 0E940000 xcall lpm32
017E 3A93 st -y,R19
0180 2A93 st -y,R18
0182 1A93 st -y,R17
0184 0A93 st -y,R16
0186 0E940000 xcall cmp32f
018A 0CF0 brlt L27
018C .dbline 147
018C ; {
018C .dbline 148
018C ; led_error();
018C 1ED7 xcall _led_error
018E .dbline 149
018E ; }
018E L27:
018E .dbline 150
018E ; if (data<=0)
018E 00E0 ldi R16,<L32
0190 10E0 ldi R17,>L32
0192 0E940000 xcall lpm32
0196 3A93 st -y,R19
0198 2A93 st -y,R18
019A 1A93 st -y,R17
019C 0A93 st -y,R16
019E FE01 movw R30,R28
01A0 ; stack offset 4
01A0 228C ldd R2,z+26
01A2 338C ldd R3,z+27
01A4 448C ldd R4,z+28
01A6 558C ldd R5,z+29
01A8 5A92 st -y,R5
01AA 4A92 st -y,R4
01AC 3A92 st -y,R3
01AE 2A92 st -y,R2
01B0 0E940000 xcall cmp32f
01B4 0CF0 brlt L30
01B6 .dbline 151
01B6 ; {
01B6 .dbline 152
01B6 ; led_error();
01B6 09D7 xcall _led_error
01B8 .dbline 153
01B8 ; }
01B8 L30:
01B8 .dbline 155
01B8 ; //
01B8 ; if(data<1) //比如 0.123
01B8 FE01 movw R30,R28
01BA 2688 ldd R2,z+22
01BC 3788 ldd R3,z+23
01BE 408C ldd R4,z+24
01C0 518C ldd R5,z+25
01C2 5A92 st -y,R5
01C4 4A92 st -y,R4
01C6 3A92 st -y,R3
01C8 2A92 st -y,R2
01CA 00E0 ldi R16,<L35
01CC 10E0 ldi R17,>L35
01CE 0E940000 xcall lpm32
01D2 3A93 st -y,R19
01D4 2A93 st -y,R18
01D6 1A93 st -y,R17
01D8 0A93 st -y,R16
01DA 0E940000 xcall cmp32f
01DE 0CF0 brlt X2
01E0 17C1 xjmp L33
01E2 X2:
01E2 .dbline 156
01E2 ; {
01E2 .dbline 157
01E2 ; display_one(7,0); //显示0.
01E2 2227 clr R18
01E4 07E0 ldi R16,7
01E6 2EDF xcall _display_one
01E8 .dbline 158
01E8 ; led_port &= 0x7F; //点亮对应小数点
01E8 8BB3 in R24,0x1b
01EA 8F77 andi R24,127
01EC 8BBB out 0x1b,R24
01EE .dbline 159
01EE ; delay_ms(6);
01EE 06E0 ldi R16,6
01F0 10E0 ldi R17,0
01F2 0FDF xcall _delay_ms
01F4 .dbline 160
01F4 ; led_contrl_port |= (1<<7);
01F4 979A sbi 0x12,7
01F6 .dbline 162
01F6 ;
01F6 ; temp=(data*10); // 0.123*10 = 1
01F6 00E0 ldi R16,<L38
01F8 10E0 ldi R17,>L38
01FA 0E940000 xcall lpm32
01FE 3A93 st -y,R19
0200 2A93 st -y,R18
0202 1A93 st -y,R17
0204 0A93 st -y,R16
0206 FE01 movw R30,R28
0208 ; stack offset 4
0208 228C ldd R2,z+26
020A 338C ldd R3,z+27
020C 448C ldd R4,z+28
020E 558C ldd R5,z+29
0210 5A92 st -y,R5
0212 4A92 st -y,R4
0214 3A92 st -y,R3
0216 2A92 st -y,R2
0218 0E940000 xcall empy32f
021C FE01 movw R30,R28
021E 0083 std z+0,R16
0220 1183 std z+1,R17
0222 2283 std z+2,R18
0224 3383 std z+3,R19
0226 FE01 movw R30,R28
0228 2080 ldd R2,z+0
022A 3180 ldd R3,z+1
022C 4280 ldd R4,z+2
022E 5380 ldd R5,z+3
0230 5A92 st -y,R5
0232 4A92 st -y,R4
0234 3A92 st -y,R3
0236 2A92 st -y,R2
0238 00E0 ldi R16,<L39
023A 10E0 ldi R17,>L39
023C 0E940000 xcall lpm32
0240 3A93 st -y,R19
0242 2A93 st -y,R18
0244 1A93 st -y,R17
0246 0A93 st -y,R16
0248 0E940000 xcall cmp32f
024C CCF0 brlt L36
024E FE01 movw R30,R28
0250 2080 ldd R2,z+0
0252 3180 ldd R3,z+1
0254 4280 ldd R4,z+2
0256 5380 ldd R5,z+3
0258 5A92 st -y,R5
025A 4A92 st -y,R4
025C 3A92 st -y,R3
025E 2A92 st -y,R2
0260 00E0 ldi R16,<L39
0262 10E0 ldi R17,>L39
0264 0E940000 xcall lpm32
0268 3A93 st -y,R19
026A 2A93 st -y,R18
026C 1A93 st -y,R17
026E 0A93 st -y,R16
0270 0E940000 xcall sub32f
0274 0E940000 xcall fp2int
0278 A801 movw R20,R16
027A 4050 subi R20,0 ; offset = 32768
027C 5048 sbci R21,128
027E 08C0 xjmp L37
0280 L36:
0280 FE01 movw R30,R28
0282 0081 ldd R16,z+0
0284 1181 ldd R17,z+1
0286 2281 ldd R18,z+2
0288 3381 ldd R19,z+3
028A 0E940000 xcall fp2int
028E A801 movw R20,R16
0290 L37:
0290 .dbline 163
0290 ; display_one(6,temp);
0290 242F mov R18,R20
0292 06E0 ldi R16,6
0294 D7DE xcall _display_one
0296 .dbline 164
0296 ; delay_ms(6);
0296 06E0 ldi R16,6
0298 10E0 ldi R17,0
029A BBDE xcall _delay_ms
029C .dbline 165
029C ; led_contrl_port |= (1<<6);
029C 969A sbi 0x12,6
029E .dbline 167
029E ;
029E ; temp2=(data*100);
029E 00E0 ldi R16,<L42
02A0 10E0 ldi R17,>L42
02A2 0E940000 xcall lpm32
02A6 3A93 st -y,R19
02A8 2A93 st -y,R18
02AA 1A93 st -y,R17
02AC 0A93 st -y,R16
02AE FE01 movw R30,R28
02B0 ; stack offset 4
02B0 228C ldd R2,z+26
02B2 338C ldd R3,z+27
02B4 448C ldd R4,z+28
02B6 558C ldd R5,z+29
02B8 5A92 st -y,R5
02BA 4A92 st -y,R4
02BC 3A92 st -y,R3
02BE 2A92 st -y,R2
02C0 0E940000 xcall empy32f
02C4 FE01 movw R30,R28
02C6 0483 std z+4,R16
02C8 1583 std z+5,R17
02CA 2683 std z+6,R18
02CC 3783 std z+7,R19
02CE FE01 movw R30,R28
02D0 2480 ldd R2,z+4
02D2 3580 ldd R3,z+5
02D4 4680 ldd R4,z+6
02D6 5780 ldd R5,z+7
02D8 5A92 st -y,R5
02DA 4A92 st -y,R4
02DC 3A92 st -y,R3
02DE 2A92 st -y,R2
02E0 00E0 ldi R16,<L39
02E2 10E0 ldi R17,>L39
02E4 0E940000 xcall lpm32
02E8 3A93 st -y,R19
02EA 2A93 st -y,R18
02EC 1A93 st -y,R17
02EE 0A93 st -y,R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -