⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.lis

📁 一个关于AVR单片机的例程
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -