📄 dtm8-td.lis
字号:
008A .dbfunc e delay _delay fV
008A ; i2 -> R20,R21
008A ; n -> R22,R23
.even
008A _delay::
008A 00D0 rcall push_gset2
008C B801 movw R22,R16
008E .dbline -1
008E .dbline 102
008E ; ;
008E ; }
008E ;
008E ; void delay(unsigned int n)
008E ; {
008E .dbline 103
008E ; unsigned int i2=0;
008E 4427 clr R20
0090 5527 clr R21
0092 04C0 rjmp L17
0094 L16:
0094 .dbline 105
0094 .dbline 105
0094 F0DF rcall _delay_1ms
0096 .dbline 106
0096 4F5F subi R20,255 ; offset = 1
0098 5F4F sbci R21,255
009A .dbline 106
009A A895 wdr
009C .dbline 107
009C L17:
009C .dbline 104
009C ; while(i2<n)
009C 4617 cp R20,R22
009E 5707 cpc R21,R23
00A0 C8F3 brlo L16
00A2 .dbline -2
00A2 L15:
00A2 00D0 rcall pop_gset2
00A4 .dbline 0 ; func end
00A4 0895 ret
00A6 .dbsym r i2 20 i
00A6 .dbsym r n 22 i
00A6 .dbend
.area vector(rom, abs)
.org 8
0008 53C0 rjmp _timer2_ovf_isr
.area text(rom, con, rel)
00A6 .dbfile D:\ele\AVR\ICC\diantiao\dtm8-td\dtm8-td.C
00A6 .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
00A6 _timer2_ovf_isr::
00A6 2A92 st -y,R2
00A8 3A92 st -y,R3
00AA 8A93 st -y,R24
00AC 9A93 st -y,R25
00AE 2FB6 in R2,0x3f
00B0 2A92 st -y,R2
00B2 .dbline -1
00B2 .dbline 113
00B2 ; {delay_1ms();
00B2 ; i2++; WDR();
00B2 ; }
00B2 ; }
00B2 ;
00B2 ;
00B2 ; #pragma interrupt_handler timer2_ovf_isr:5
00B2 ; void timer2_ovf_isr(void)
00B2 ; {
00B2 .dbline 114
00B2 ; WDR();
00B2 A895 wdr
00B4 .dbline 115
00B4 ; pwm++;
00B4 80910000 lds R24,_pwm
00B8 8F5F subi R24,255 ; addi 1
00BA 80930000 sts _pwm,R24
00BE .dbline 116
00BE ; if(pwm==250)
00BE 8A3F cpi R24,250
00C0 99F4 brne L20
00C2 .dbline 117
00C2 ; {
00C2 .dbline 118
00C2 ; pwm=0;
00C2 2224 clr R2
00C4 20920000 sts _pwm,R2
00C8 .dbline 119
00C8 ; if(zb>0)
00C8 30900200 lds R3,_zb
00CC 2314 cp R2,R3
00CE 60F4 brsh L22
00D0 .dbline 120
00D0 ; {
00D0 .dbline 121
00D0 ; if(flag==1)
00D0 80910400 lds R24,_flag
00D4 8130 cpi R24,1
00D6 11F4 brne L24
00D8 .dbline 122
00D8 ; {j11; j31;}
00D8 .dbline 122
00D8 919A sbi 0x12,1
00DA .dbline 122
00DA C69A sbi 0x18,6
00DC .dbline 122
00DC L24:
00DC .dbline 123
00DC ; if(flag==0)
00DC 20900400 lds R2,_flag
00E0 2220 tst R2
00E2 11F4 brne L26
00E4 .dbline 124
00E4 ; {j21; j41;}
00E4 .dbline 124
00E4 949A sbi 0x12,4
00E6 .dbline 124
00E6 969A sbi 0x12,6
00E8 .dbline 124
00E8 L26:
00E8 .dbline 125
00E8 ; }
00E8 L22:
00E8 .dbline 126
00E8 ; }
00E8 L20:
00E8 .dbline 127
00E8 ; if(pwm==zb)
00E8 20900200 lds R2,_zb
00EC 30900000 lds R3,_pwm
00F0 3214 cp R3,R2
00F2 21F4 brne L28
00F4 .dbline 128
00F4 ; {j10;j20;j30;j40;}
00F4 .dbline 128
00F4 9198 cbi 0x12,1
00F6 .dbline 128
00F6 9498 cbi 0x12,4
00F8 .dbline 128
00F8 C698 cbi 0x18,6
00FA .dbline 128
00FA 9698 cbi 0x12,6
00FC .dbline 128
00FC L28:
00FC .dbline 130
00FC ;
00FC ; TCNT2 = 0xF0; //reload counter value
00FC 80EF ldi R24,240
00FE 84BD out 0x24,R24
0100 .dbline -2
0100 L19:
0100 2990 ld R2,y+
0102 2FBE out 0x3f,R2
0104 9991 ld R25,y+
0106 8991 ld R24,y+
0108 3990 ld R3,y+
010A 2990 ld R2,y+
010C .dbline 0 ; func end
010C 1895 reti
010E .dbend
010E .dbfunc e fenc _fenc fi
010E ; bc -> R20,R21
010E ; bb -> R16,R17
.even
010E _fenc::
010E 00D0 rcall push_gset1
0110 .dbline -1
0110 .dbline 136
0110 ;
0110 ; }
0110 ;
0110 ;
0110 ; unit fenc(int bb)
0110 ; {
0110 .dbline 138
0110 80910000 lds R24,_mark
0114 90910100 lds R25,_mark+1
0118 8C5B subi R24,188
011A 9240 sbci R25,2
011C 0817 cp R16,R24
011E 1907 cpc R17,R25
0120 4CF0 brlt L33
0122 80910000 lds R24,_mark
0126 90910100 lds R25,_mark+1
012A 8454 subi R24,68 ; offset = 700
012C 9D4F sbci R25,253
012E 8017 cp R24,R16
0130 9107 cpc R25,R17
0132 1CF4 brge L31
0134 L33:
0134 .dbline 138
0134 ; int bc;
0134 ; if((bb<mark-700)||(bb>(mark+700))) return(0);
0134 0027 clr R16
0136 1127 clr R17
0138 42C0 rjmp L30
013A L31:
013A .dbline 139
013A ; if((mark-bb)<0)
013A 80910000 lds R24,_mark
013E 90910100 lds R25,_mark+1
0142 801B sub R24,R16
0144 910B sbc R25,R17
0146 8030 cpi R24,0
0148 E0E0 ldi R30,0
014A 9E07 cpc R25,R30
014C 54F4 brge L34
014E .dbline 140
014E ; {
014E .dbline 141
014E ; flag=1;
014E 81E0 ldi R24,1
0150 80930400 sts _flag,R24
0154 .dbline 142
0154 ; bc=bb-mark;
0154 20900000 lds R2,_mark
0158 30900100 lds R3,_mark+1
015C A801 movw R20,R16
015E 4219 sub R20,R2
0160 5309 sbc R21,R3
0162 .dbline 143
0162 ; }
0162 L34:
0162 .dbline 144
0162 ; if((mark-bb)>0)
0162 20900000 lds R2,_mark
0166 30900100 lds R3,_mark+1
016A 201A sub R2,R16
016C 310A sbc R3,R17
016E 4424 clr R4
0170 5524 clr R5
0172 4214 cp R4,R2
0174 5304 cpc R5,R3
0176 4CF4 brge L36
0178 .dbline 145
0178 ; {
0178 .dbline 146
0178 ; flag=0;
0178 2224 clr R2
017A 20920400 sts _flag,R2
017E .dbline 147
017E ; bc=mark-bb;
017E 40910000 lds R20,_mark
0182 50910100 lds R21,_mark+1
0186 401B sub R20,R16
0188 510B sbc R21,R17
018A .dbline 148
018A ; }
018A L36:
018A .dbline 149
018A 89E1 ldi R24,25
018C 90E0 ldi R25,0
018E 8417 cp R24,R20
0190 9507 cpc R25,R21
0192 14F0 brlt L38
0194 .dbline 149
0194 .dbline 149
0194 C39A sbi 0x18,3
0196 .dbline 149
0196 .dbline 149
0196 01C0 rjmp L39
0198 L38:
0198 .dbline 149
0198 ; if(bc<=25) { LED1; } else { LED0; }
0198 .dbline 149
0198 C398 cbi 0x18,3
019A .dbline 149
019A .dbline 149
019A L39:
019A .dbline 150
019A ; if(bc<=50) return(0);
019A 82E3 ldi R24,50
019C 90E0 ldi R25,0
019E 8417 cp R24,R20
01A0 9507 cpc R25,R21
01A2 1CF0 brlt L40
01A4 .dbline 150
01A4 0027 clr R16
01A6 1127 clr R17
01A8 0AC0 rjmp L30
01AA L40:
01AA .dbline 151
01AA ; if(bc>=300) return(250);
01AA 4C32 cpi R20,44
01AC E1E0 ldi R30,1
01AE 5E07 cpc R21,R30
01B0 1CF0 brlt L42
01B2 .dbline 151
01B2 0AEF ldi R16,250
01B4 10E0 ldi R17,0
01B6 03C0 rjmp L30
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -