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

📄 dtm8-td.lis

📁 航模用AVR M48开发的无刷电调驱动
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -