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

📄 led.lis

📁 单片机中的中断处理模块
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -