📄 led.lis
字号:
012C .dbsym r data 22 i
012C .dbend
012C .dbfunc e display_float _display_float fV
012C ; temp2 -> R22,R23
012C ; temp -> R20
012C ; data -> y+22
.even
012C _display_float::
012C 0E940000 xcall push_arg4
0130 0E940000 xcall push_gset3
0134 6097 sbiw R28,16
0136 .dbline -1
0136 .dbline 113
0136 ; }
0136 ;
0136 ; /***********************
0136 ; ** 显示四位浮点数 本函数占用 mega16 的空间 19%
0136 ; ** 输入:要显示的四位数
0136 ; ** 说明:可以小于四位数,自动补零
0136 ; ************************/
0136 ;
0136 ; void display_float(float data)
0136 ; {
0136 .dbline 117
0136 ; uint8 temp;
0136 ; uint16 temp2; //用于把浮点数变为整形
0136 ; // 人为保证data的值,可以不要错误处理。
0136 ; if (data>=1000)
0136 FE01 movw R30,R28
0138 2688 ldd R2,z+22
013A 3788 ldd R3,z+23
013C 408C ldd R4,z+24
013E 518C ldd R5,z+25
0140 5A92 st -y,R5
0142 4A92 st -y,R4
0144 3A92 st -y,R3
0146 2A92 st -y,R2
0148 00E0 ldi R16,<L19
014A 10E0 ldi R17,>L19
014C 0E940000 xcall lpm32
0150 3A93 st -y,R19
0152 2A93 st -y,R18
0154 1A93 st -y,R17
0156 0A93 st -y,R16
0158 0E940000 xcall cmp32f
015C 0CF0 brlt L17
015E .dbline 118
015E ; {
015E .dbline 119
015E ; led_error();
015E 29D7 xcall _led_error
0160 .dbline 120
0160 ; }
0160 L17:
0160 .dbline 121
0160 ; if (data<=0)
0160 00E0 ldi R16,<L22
0162 10E0 ldi R17,>L22
0164 0E940000 xcall lpm32
0168 3A93 st -y,R19
016A 2A93 st -y,R18
016C 1A93 st -y,R17
016E 0A93 st -y,R16
0170 FE01 movw R30,R28
0172 ; stack offset 4
0172 228C ldd R2,z+26
0174 338C ldd R3,z+27
0176 448C ldd R4,z+28
0178 558C ldd R5,z+29
017A 5A92 st -y,R5
017C 4A92 st -y,R4
017E 3A92 st -y,R3
0180 2A92 st -y,R2
0182 0E940000 xcall cmp32f
0186 0CF0 brlt L20
0188 .dbline 122
0188 ; {
0188 .dbline 123
0188 ; led_error();
0188 14D7 xcall _led_error
018A .dbline 124
018A ; }
018A L20:
018A .dbline 126
018A ; //
018A ; if(data<1) //比如 0.123
018A FE01 movw R30,R28
018C 2688 ldd R2,z+22
018E 3788 ldd R3,z+23
0190 408C ldd R4,z+24
0192 518C ldd R5,z+25
0194 5A92 st -y,R5
0196 4A92 st -y,R4
0198 3A92 st -y,R3
019A 2A92 st -y,R2
019C 00E0 ldi R16,<L25
019E 10E0 ldi R17,>L25
01A0 0E940000 xcall lpm32
01A4 3A93 st -y,R19
01A6 2A93 st -y,R18
01A8 1A93 st -y,R17
01AA 0A93 st -y,R16
01AC 0E940000 xcall cmp32f
01B0 0CF0 brlt X0
01B2 19C1 xjmp L23
01B4 X0:
01B4 .dbline 127
01B4 ; {
01B4 .dbline 128
01B4 ; display_one(3,0); //显示0.
01B4 2227 clr R18
01B6 03E0 ldi R16,3
01B8 29DF xcall _display_one
01BA .dbline 129
01BA ; led_port |= 0x80; //点亮对应小数点
01BA DF9A sbi 0x1b,7
01BC .dbline 130
01BC ; delay_ms(6);
01BC 06E0 ldi R16,6
01BE 10E0 ldi R17,0
01C0 0E940000 xcall _delay_ms
01C4 .dbline 131
01C4 ; led_contrl_port &=~ (1<<3);
01C4 C398 cbi 0x18,3
01C6 .dbline 133
01C6 ;
01C6 ; temp=(data*10); // 0.123*10 = 1
01C6 00E0 ldi R16,<L28
01C8 10E0 ldi R17,>L28
01CA 0E940000 xcall lpm32
01CE 3A93 st -y,R19
01D0 2A93 st -y,R18
01D2 1A93 st -y,R17
01D4 0A93 st -y,R16
01D6 FE01 movw R30,R28
01D8 ; stack offset 4
01D8 228C ldd R2,z+26
01DA 338C ldd R3,z+27
01DC 448C ldd R4,z+28
01DE 558C ldd R5,z+29
01E0 5A92 st -y,R5
01E2 4A92 st -y,R4
01E4 3A92 st -y,R3
01E6 2A92 st -y,R2
01E8 0E940000 xcall empy32f
01EC FE01 movw R30,R28
01EE 0083 std z+0,R16
01F0 1183 std z+1,R17
01F2 2283 std z+2,R18
01F4 3383 std z+3,R19
01F6 FE01 movw R30,R28
01F8 2080 ldd R2,z+0
01FA 3180 ldd R3,z+1
01FC 4280 ldd R4,z+2
01FE 5380 ldd R5,z+3
0200 5A92 st -y,R5
0202 4A92 st -y,R4
0204 3A92 st -y,R3
0206 2A92 st -y,R2
0208 00E0 ldi R16,<L29
020A 10E0 ldi R17,>L29
020C 0E940000 xcall lpm32
0210 3A93 st -y,R19
0212 2A93 st -y,R18
0214 1A93 st -y,R17
0216 0A93 st -y,R16
0218 0E940000 xcall cmp32f
021C CCF0 brlt L26
021E FE01 movw R30,R28
0220 2080 ldd R2,z+0
0222 3180 ldd R3,z+1
0224 4280 ldd R4,z+2
0226 5380 ldd R5,z+3
0228 5A92 st -y,R5
022A 4A92 st -y,R4
022C 3A92 st -y,R3
022E 2A92 st -y,R2
0230 00E0 ldi R16,<L29
0232 10E0 ldi R17,>L29
0234 0E940000 xcall lpm32
0238 3A93 st -y,R19
023A 2A93 st -y,R18
023C 1A93 st -y,R17
023E 0A93 st -y,R16
0240 0E940000 xcall sub32f
0244 0E940000 xcall fp2int
0248 A801 movw R20,R16
024A 4050 subi R20,0 ; offset = 32768
024C 5048 sbci R21,128
024E 08C0 xjmp L27
0250 L26:
0250 FE01 movw R30,R28
0252 0081 ldd R16,z+0
0254 1181 ldd R17,z+1
0256 2281 ldd R18,z+2
0258 3381 ldd R19,z+3
025A 0E940000 xcall fp2int
025E A801 movw R20,R16
0260 L27:
0260 .dbline 134
0260 ; display_one(2,temp);
0260 242F mov R18,R20
0262 02E0 ldi R16,2
0264 D3DE xcall _display_one
0266 .dbline 135
0266 ; delay_ms(6);
0266 06E0 ldi R16,6
0268 10E0 ldi R17,0
026A 0E940000 xcall _delay_ms
026E .dbline 136
026E ; led_contrl_port &=~ (1<<2);
026E C298 cbi 0x18,2
0270 .dbline 138
0270 ;
0270 ; temp2=(data*100);
0270 00E0 ldi R16,<L32
0272 10E0 ldi R17,>L32
0274 0E940000 xcall lpm32
0278 3A93 st -y,R19
027A 2A93 st -y,R18
027C 1A93 st -y,R17
027E 0A93 st -y,R16
0280 FE01 movw R30,R28
0282 ; stack offset 4
0282 228C ldd R2,z+26
0284 338C ldd R3,z+27
0286 448C ldd R4,z+28
0288 558C ldd R5,z+29
028A 5A92 st -y,R5
028C 4A92 st -y,R4
028E 3A92 st -y,R3
0290 2A92 st -y,R2
0292 0E940000 xcall empy32f
0296 FE01 movw R30,R28
0298 0483 std z+4,R16
029A 1583 std z+5,R17
029C 2683 std z+6,R18
029E 3783 std z+7,R19
02A0 FE01 movw R30,R28
02A2 2480 ldd R2,z+4
02A4 3580 ldd R3,z+5
02A6 4680 ldd R4,z+6
02A8 5780 ldd R5,z+7
02AA 5A92 st -y,R5
02AC 4A92 st -y,R4
02AE 3A92 st -y,R3
02B0 2A92 st -y,R2
02B2 00E0 ldi R16,<L29
02B4 10E0 ldi R17,>L29
02B6 0E940000 xcall lpm32
02BA 3A93 st -y,R19
02BC 2A93 st -y,R18
02BE 1A93 st -y,R17
02C0 0A93 st -y,R16
02C2 0E940000 xcall cmp32f
02C6 D4F0 brlt L30
02C8 FE01 movw R30,R28
02CA 2480 ldd R2,z+4
02CC 3580 ldd R3,z+5
02CE 4680 ldd R4,z+6
02D0 5780 ldd R5,z+7
02D2 5A92 st -y,R5
02D4 4A92 st -y,R4
02D6 3A92 st -y,R3
02D8 2A92 st -y,R2
02DA 00E0 ldi R16,<L29
02DC 10E0 ldi R17,>L29
02DE 0E940000 xcall lpm32
02E2 3A93 st -y,R19
02E4 2A93 st -y,R18
02E6 1A93 st -y,R17
02E8 0A93 st -y,R16
02EA 0E940000 xcall sub32f
02EE 0E940000 xcall fp2int
02F2 C801 movw R24,R16
02F4 8050 subi R24,0 ; offset = 32768
02F6 9048 sbci R25,128
02F8 5C01 movw R10,R24
02FA 08C0 xjmp L31
02FC L30:
02FC FE01 movw R30,R28
02FE 0481 ldd R16,z+4
0300 1581 ldd R17,z+5
0302 2681 ldd R18,z+6
0304 3781 ldd R19,z+7
0306 0E940000 xcall fp2int
030A 5801 movw R10,R16
030C L31:
030C B501 movw R22,R10
030E .dbline 139
030E ; temp=temp2%10; // 0.123*100%10 = 2
030E 2AE0 ldi R18,10
0310 30E0 ldi R19,0
0312 8B01 movw R16,R22
0314 0E940000 xcall mod16u
0318 402F mov R20,R16
031A .dbline 140
031A ; display_one(1,temp);
031A 242F mov R18,R20
031C 01E0 ldi R16,1
031E 76DE xcall _display_one
0320 .dbline 141
0320 ; delay_ms(6);
0320 06E0 ldi R16,6
0322 10E0 ldi R17,0
0324 0E940000 xcall _delay_ms
0328 .dbline 142
0328 ; led_contrl_port &=~ (1<<1);
0328 C198 cbi 0x18,1
032A .dbline 144
032A ;
032A ; temp2=(data*1000);
032A 00E0 ldi R16,<L19
032C 10E0 ldi R17,>L19
032E 0E940000 xcall lpm32
0332 3A93 st -y,R19
0334 2A93 st -y,R18
0336 1A93 st -y,R17
0338 0A93 st -y,R16
033A FE01 movw R30,R28
033C ; stack offset 4
033C 228C ldd R2,z+26
033E 338C ldd R3,z+27
0340 448C ldd R4,z+28
0342 558C ldd R5,z+29
0344 5A92 st -y,R5
0346 4A92 st -y,R4
0348 3A92 st -y,R3
034A 2A92 st -y,R2
034C 0E940000 xcall empy32f
0350 FE01 movw R30,R28
0352 0087 std z+8,R16
0354 1187 std z+9,R17
0356 2287 std z+10,R18
0358 3387 std z+11,R19
035A FE01 movw R30,R28
035C 2084 ldd R2,z+8
035E 3184 ldd R3,z+9
0360 4284 ldd R4,z+10
0362 5384 ldd R5,z+11
0364 5A92 st -y,R5
0366 4A92 st -y,R4
0368 3A92 st -y,R3
036A 2A92 st -y,R2
036C 00E0 ldi R16,<L29
036E 10E0 ldi R17,>L29
0370 0E940000 xcall lpm32
0374 3A93 st -y,R19
0376 2A93 st -y,R18
0378 1A93 st -y,R17
037A 0A93 st -y,R16
037C 0E940000 xcall cmp32f
0380 D4F0 brlt L33
0382 FE01 movw R30,R28
0384 2084 ldd R2,z+8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -