📄 m16pwm-led.lis
字号:
01E4 90E0 ldi R25,0
01E6 8417 cp R24,R20
01E8 9507 cpc R25,R21
01EA 08F4 brsh L32
01EC .dbline 184
01EC 40ED ldi R20,208
01EE L32:
01EE .dbline 185
01EE ; if(ad_tmp<0x30)ad_tmp=0x30;
01EE 4033 cpi R20,48
01F0 E0E0 ldi R30,0
01F2 5E07 cpc R21,R30
01F4 10F4 brsh L34
01F6 .dbline 185
01F6 40E3 ldi R20,48
01F8 50E0 ldi R21,0
01FA L34:
01FA .dbline 186
01FA ; ad_tmp-=0x30;
01FA 4053 subi R20,48
01FC 5040 sbci R21,0
01FE .dbline 187
01FE ; AdResult=(ad_tmp*0xff/0xa0)&0x00ff-1;
01FE 0FEF ldi R16,255
0200 10E0 ldi R17,0
0202 9A01 movw R18,R20
0204 0E940000 xcall empy16s
0208 20EA ldi R18,160
020A 30E0 ldi R19,0
020C 0E940000 xcall div16u
0210 C801 movw R24,R16
0212 8E7F andi R24,254
0214 9070 andi R25,0
0216 80930000 sts _AdResult,R24
021A .dbline -2
021A L31:
021A 0E940000 xcall pop_gset1
021E 0991 ld R16,y+
0220 0FBF out 0x3f,R16
0222 E991 ld R30,y+
0224 9991 ld R25,y+
0226 8991 ld R24,y+
0228 3991 ld R19,y+
022A 2991 ld R18,y+
022C 1991 ld R17,y+
022E 0991 ld R16,y+
0230 .dbline 0 ; func end
0230 1895 reti
0232 .dbsym r ad_tmp 20 i
0232 .dbend
.area vector(rom, abs)
.org 32
0020 0C941901 jmp _timer1_comp_isr
.area text(rom, con, rel)
0232 .dbfile D:\EBIKE\eb_pro\M16PWM_led\m16pwm-led.c
0232 .dbfunc e timer1_comp_isr _timer1_comp_isr fV
0232 ; tt -> <dead>
.even
0232 _timer1_comp_isr::
0232 2A92 st -y,R2
0234 8A93 st -y,R24
0236 9A93 st -y,R25
0238 2FB6 in R2,0x3f
023A 2A92 st -y,R2
023C .dbline -1
023C .dbline 192
023C ; //LedBuf[0]=AdResult;
023C ; }
023C ; #pragma interrupt_handler timer1_comp_isr:9
023C ; void timer1_comp_isr(void)
023C ; {
023C .dbline 195
023C ; //compare occured TCNT1=OCR1
023C ; uchar tt;
023C ; TCNT1 = 0xC2F7; //setup
023C 87EF ldi R24,49911
023E 92EC ldi R25,194
0240 9DBD out 0x2d,R25
0242 8CBD out 0x2c,R24
0244 .dbline 199
0244 ; //PORTD ^=0x60;
0244 ; //LedDp[second_data%4]=1;
0244 ; //LedBuf[0]=second_data;
0244 ; if(++second_data>=60)
0244 80910B00 lds R24,_second_data
0248 8F5F subi R24,255 ; addi 1
024A 282E mov R2,R24
024C 20920B00 sts _second_data,R2
0250 8C33 cpi R24,60
0252 C8F0 brlo L37
0254 .dbline 200
0254 ; {
0254 .dbline 201
0254 ; second_data=0;
0254 2224 clr R2
0256 20920B00 sts _second_data,R2
025A .dbline 202
025A ; if(++minut_data>=60)
025A 80910C00 lds R24,_minut_data
025E 8F5F subi R24,255 ; addi 1
0260 282E mov R2,R24
0262 20920C00 sts _minut_data,R2
0266 8C33 cpi R24,60
0268 70F0 brlo L39
026A .dbline 203
026A ; {
026A .dbline 204
026A ; minut_data=0;
026A 2224 clr R2
026C 20920C00 sts _minut_data,R2
0270 .dbline 205
0270 ; if(++hour_data>=24)
0270 80910D00 lds R24,_hour_data
0274 8F5F subi R24,255 ; addi 1
0276 282E mov R2,R24
0278 20920D00 sts _hour_data,R2
027C 8831 cpi R24,24
027E 18F0 brlo L41
0280 .dbline 206
0280 ; {
0280 .dbline 207
0280 ; hour_data=0;
0280 2224 clr R2
0282 20920D00 sts _hour_data,R2
0286 .dbline 208
0286 ; }
0286 L41:
0286 .dbline 209
0286 ; }
0286 L39:
0286 .dbline 210
0286 L37:
0286 .dbline -2
0286 L36:
0286 2990 ld R2,y+
0288 2FBE out 0x3f,R2
028A 9991 ld R25,y+
028C 8991 ld R24,y+
028E 2990 ld R2,y+
0290 .dbline 0 ; func end
0290 1895 reti
0292 .dbsym l tt 1 c
0292 .dbend
0292 .dbfunc e led_display _led_display fV
0292 ; tmp1 -> R22
0292 ; tmp0 -> R10
0292 ; delay -> R20
.even
0292 _led_display::
0292 0E940000 xcall push_gset3
0296 402F mov R20,R16
0298 .dbline -1
0298 .dbline 216
0298 ; }
0298 ;
0298 ; }
0298 ;
0298 ; //led display
0298 ; void led_display(uchar delay)
0298 ; {
0298 .dbline 218
0298 ; uchar tmp0,tmp1;
0298 ; tmp0=LedBuf[0];
0298 A0901400 lds R10,_LedBuf
029C .dbline 219
029C ; tmp1=LedBuf[1];
029C 60911500 lds R22,_LedBuf+1
02A0 .dbline 220
02A0 ; if(tmp0>99)tmp0=99;
02A0 83E6 ldi R24,99
02A2 8A15 cp R24,R10
02A4 08F4 brsh L45
02A6 .dbline 220
02A6 A82E mov R10,R24
02A8 L45:
02A8 .dbline 221
02A8 ; if(tmp1>99)tmp1=99;
02A8 83E6 ldi R24,99
02AA 8617 cp R24,R22
02AC 08F4 brsh L47
02AE .dbline 221
02AE 63E6 ldi R22,99
02B0 L47:
02B0 .dbline 222
02B0 ; PORTB = ~0x08;
02B0 87EF ldi R24,247
02B2 88BB out 0x18,R24
02B4 .dbline 223
02B4 ; PORTA = LedTab[(tmp0%10)];
02B4 2AE0 ldi R18,10
02B6 30E0 ldi R19,0
02B8 0A2D mov R16,R10
02BA 1127 clr R17
02BC 0E940000 xcall mod16s
02C0 F801 movw R30,R16
02C2 80E0 ldi R24,<_LedTab
02C4 90E0 ldi R25,>_LedTab
02C6 E80F add R30,R24
02C8 F91F adc R31,R25
02CA 2080 ldd R2,z+0
02CC 2BBA out 0x1b,R2
02CE .dbline 224
02CE ; if(LedDp&0x01)PORTB|=0x10;
02CE 20901600 lds R2,_LedDp
02D2 20FE sbrs R2,0
02D4 02C0 rjmp L49
02D6 .dbline 224
02D6 C49A sbi 0x18,4
02D8 03C0 xjmp L50
02DA L49:
02DA .dbline 225
02DA ; else PORTB&=0xEF;
02DA 88B3 in R24,0x18
02DC 8F7E andi R24,239
02DE 88BB out 0x18,R24
02E0 L50:
02E0 .dbline 226
02E0 ; ms_delay(delay);
02E0 042F mov R16,R20
02E2 1127 clr R17
02E4 58D0 xcall _ms_delay
02E6 .dbline 228
02E6 ;
02E6 ; PORTB = ~0x04;
02E6 8BEF ldi R24,251
02E8 88BB out 0x18,R24
02EA .dbline 229
02EA ; PORTA = LedTab[((tmp0/10)&0x0f)];
02EA 2AE0 ldi R18,10
02EC 30E0 ldi R19,0
02EE 0A2D mov R16,R10
02F0 1127 clr R17
02F2 0E940000 xcall div16s
02F6 F801 movw R30,R16
02F8 EF70 andi R30,15
02FA F070 andi R31,0
02FC 80E0 ldi R24,<_LedTab
02FE 90E0 ldi R25,>_LedTab
0300 E80F add R30,R24
0302 F91F adc R31,R25
0304 2080 ldd R2,z+0
0306 2BBA out 0x1b,R2
0308 .dbline 230
0308 ; if(LedDp&0x02)PORTB|=0x10;
0308 20901600 lds R2,_LedDp
030C 21FE sbrs R2,1
030E 02C0 rjmp L51
0310 .dbline 230
0310 C49A sbi 0x18,4
0312 03C0 xjmp L52
0314 L51:
0314 .dbline 231
0314 ; else PORTB&=0xEF;
0314 88B3 in R24,0x18
0316 8F7E andi R24,239
0318 88BB out 0x18,R24
031A L52:
031A .dbline 232
031A ; ms_delay(delay);
031A 042F mov R16,R20
031C 1127 clr R17
031E 3BD0 xcall _ms_delay
0320 .dbline 234
0320 ;
0320 ; PORTB = ~0x02;
0320 8DEF ldi R24,253
0322 88BB out 0x18,R24
0324 .dbline 235
0324 ; PORTA = LedTab[(tmp1%10)];
0324 2AE0 ldi R18,10
0326 30E0 ldi R19,0
0328 062F mov R16,R22
032A 1127 clr R17
032C 0E940000 xcall mod16s
0330 F801 movw R30,R16
0332 80E0 ldi R24,<_LedTab
0334 90E0 ldi R25,>_LedTab
0336 E80F add R30,R24
0338 F91F adc R31,R25
033A 2080 ldd R2,z+0
033C 2BBA out 0x1b,R2
033E .dbline 236
033E ; if(LedDp&0x04)PORTB|=0x10;
033E 20901600 lds R2,_LedDp
0342 22FE sbrs R2,2
0344 02C0 rjmp L53
0346 .dbline 236
0346 C49A sbi 0x18,4
0348 03C0 xjmp L54
034A L53:
034A .dbline 237
034A ; else PORTB&=0xEF;
034A 88B3 in R24,0x18
034C 8F7E andi R24,239
034E 88BB out 0x18,R24
0350 L54:
0350 .dbline 238
0350 ; ms_delay(delay);
0350 042F mov R16,R20
0352 1127 clr R17
0354 20D0 xcall _ms_delay
0356 .dbline 240
0356 ;
0356 ; PORTB = ~0x01;
0356 8EEF ldi R24,254
0358 88BB out 0x18,R24
035A .dbline 241
035A ; PORTA = LedTab[((tmp1/10)&0x0f)];
035A 2AE0 ldi R18,10
035C 30E0 ldi R19,0
035E 062F mov R16,R22
0360 1127 clr R17
0362 0E940000 xcall div16s
0366 F801 movw R30,R16
0368 EF70 andi R30,15
036A F070 andi R31,0
036C 80E0 ldi R24,<_LedTab
036E 90E0 ldi R25,>_LedTab
0370 E80F add R30,R24
0372 F91F adc R31,R25
0374 2080 ldd R2,z+0
0376 2BBA out 0x1b,R2
0378 .dbline 242
0378 ; if(LedDp&0x08)PORTB|=0x10;
0378 20901600 lds R2,_LedDp
037C 23FE sbrs R2,3
037E 02C0 rjmp L55
0380 .dbline 242
0380 C49A sbi 0x18,4
0382 03C0 xjmp L56
0384 L55:
0384 .dbline 243
0384 ; else PORTB&=0xEF;
0384 88B3 in R24,0x18
0386 8F7E andi R24,239
0388 88BB out 0x18,R24
038A L56:
038A .dbline 244
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -