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

📄 main.lis

📁 一个正在应用的步进电机控制程序,包括电机的调速,正反,细分,通讯控制
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0020           ;    {time_da0=time_da;}
 0020                   .dbline 134
 0020 20901B00          lds R2,_time_da
 0024 30901C00          lds R3,_time_da+1
 0028 30921A00          sts _time_da0+1,R3
 002C 20921900          sts _time_da0,R2
 0030                   .dbline 134
 0030 10C0              xjmp L3
 0032           L2:
 0032                   .dbline 136
 0032           ; else 
 0032           ;    {if (da_counter==128)
 0032                   .dbline 136
 0032 80911700          lds R24,_da_counter
 0036 8038              cpi R24,128
 0038 61F4              brne L4
 003A                   .dbline 137
 003A           ;        {
 003A                   .dbline 138
 003A           ;          micros_nu0=micros_nu;
 003A 20901600          lds R2,_micros_nu
 003E 20921500          sts _micros_nu0,R2
 0042                   .dbline 139
 0042           ;          time_da0=time_da;
 0042 20901B00          lds R2,_time_da
 0046 30901C00          lds R3,_time_da+1
 004A 30921A00          sts _time_da0+1,R3
 004E 20921900          sts _time_da0,R2
 0052                   .dbline 140
 0052           ;          }
 0052           L4:
 0052                   .dbline 141
 0052           ;    }
 0052           L3:
 0052                   .dbline 142
 0052           ; OCR1A=time_da0;
 0052 20901900          lds R2,_time_da0
 0056 30901A00          lds R3,_time_da0+1
 005A 3BBC              out 0x2b,R3
 005C 2ABC              out 0x2a,R2
 005E                   .dbline 143
 005E           ; if (da_counter>=128)
 005E 80911700          lds R24,_da_counter
 0062 8038              cpi R24,128
 0064 18F0              brlo L6
 0066                   .dbline 144
 0066           ;    {da_counter=0;} 
 0066                   .dbline 144
 0066 2224              clr R2
 0068 20921700          sts _da_counter,R2
 006C                   .dbline 144
 006C           L6:
 006C                   .dbline 145
 006C           ; i=tabsin[da_counter];
 006C 80E0              ldi R24,<_tabsin
 006E 90E0              ldi R25,>_tabsin
 0070 E0911700          lds R30,_da_counter
 0074 FF27              clr R31
 0076 E80F              add R30,R24
 0078 F91F              adc R31,R25
 007A 2491              lpm R18,Z
 007C                   .dbline 146
 007C           ; j=tabcos[da_counter];
 007C 80E0              ldi R24,<_tabcos
 007E 90E0              ldi R25,>_tabcos
 0080 E0911700          lds R30,_da_counter
 0084 FF27              clr R31
 0086 E80F              add R30,R24
 0088 F91F              adc R31,R25
 008A 0491              lpm R16,Z
 008C                   .dbline 147
 008C           ; PORTD&=~(1<<DA_CS);
 008C 9698              cbi 0x12,6
 008E                   .dbline 148
 008E           ; PORTD&=~(1<<DA_AB);
 008E 9798              cbi 0x12,7
 0090                   .dbline 149
 0090           ; DATA_OUT=i;                     //送正弦值
 0090 28BB              out 0x18,R18
 0092                   .dbline 150
 0092           ; asm("nop");
 0092 0000              nop
 0094                   .dbline 151
 0094           ; PORTA&=~(1<<DA_WR);
 0094 D998              cbi 0x1b,1
 0096                   .dbline 152
 0096           ; PORTA|=(1<<DA_WR);
 0096 D99A              sbi 0x1b,1
 0098                   .dbline 153
 0098           ; PORTD|=(1<<DA_AB);
 0098 979A              sbi 0x12,7
 009A                   .dbline 154
 009A           ; DATA_OUT=j;                     //送正弦值
 009A 08BB              out 0x18,R16
 009C                   .dbline 155
 009C           ; asm("nop");
 009C 0000              nop
 009E                   .dbline 156
 009E           ; PORTA&=~(1<<DA_WR);
 009E D998              cbi 0x1b,1
 00A0                   .dbline 157
 00A0           ; PORTA|=(1<<DA_WR);
 00A0 D99A              sbi 0x1b,1
 00A2                   .dbline 158
 00A2           ; PORTD|=(1<<DA_CS);
 00A2 969A              sbi 0x12,6
 00A4                   .dbline 159
 00A4           ; if ((state|0b11111110)==0b11111110)           //判断正反转
 00A4 80910800          lds R24,_state
 00A8 8E6F              ori R24,254
 00AA 8E3F              cpi R24,254
 00AC 31F5              brne L8
 00AE                   .dbline 160
 00AE           ;   {                                                                                     //正转
 00AE                   .dbline 161
 00AE           ;   if (ac_bd_state==0)         //ac相处理
 00AE 20900900          lds R2,_ac_bd_state
 00B2 2220              tst R2
 00B4 89F4              brne L10
 00B6                   .dbline 162
 00B6           ;     {
 00B6                   .dbline 163
 00B6           ;       if (da_counter==0)
 00B6 20901700          lds R2,_da_counter
 00BA 2220              tst R2
 00BC 31F4              brne L12
 00BE                   .dbline 164
 00BE           ;          {
 00BE                   .dbline 165
 00BE           ;          PORTC&=~(1<<DA_SIN);
 00BE AF98              cbi 0x15,7
 00C0                   .dbline 166
 00C0           ;          PORTC&=~(1<<DA_COS);
 00C0 AE98              cbi 0x15,6
 00C2                   .dbline 167
 00C2           ;          ac_bd_state=1;
 00C2 81E0              ldi R24,1
 00C4 80930900          sts _ac_bd_state,R24
 00C8                   .dbline 168
 00C8           ;          }
 00C8 3DC0              xjmp L9
 00CA           L12:
 00CA                   .dbline 170
 00CA           ;       else 
 00CA           ;          {
 00CA                   .dbline 171
 00CA           ;          if (da_counter==64)
 00CA 80911700          lds R24,_da_counter
 00CE 8034              cpi R24,64
 00D0 C9F5              brne L9
 00D2                   .dbline 172
 00D2           ;                 {
 00D2                   .dbline 173
 00D2           ;                 PORTC&=~(1<<DA_SIN);
 00D2 AF98              cbi 0x15,7
 00D4                   .dbline 174
 00D4           ;             PORTC|=(1<<DA_COS);
 00D4 AE9A              sbi 0x15,6
 00D6                   .dbline 175
 00D6           ;                 }
 00D6                   .dbline 176
 00D6           ;          }    
 00D6                   .dbline 177
 00D6           ;       }
 00D6 36C0              xjmp L9
 00D8           L10:
 00D8                   .dbline 179
 00D8           ;   else                                                                 //bd相处理
 00D8           ;     {
 00D8                   .dbline 180
 00D8           ;       if (da_counter==0)
 00D8 20901700          lds R2,_da_counter
 00DC 2220              tst R2
 00DE 31F4              brne L16
 00E0                   .dbline 181
 00E0           ;          {
 00E0                   .dbline 182
 00E0           ;          PORTC|=(1<<DA_SIN);
 00E0 AF9A              sbi 0x15,7
 00E2                   .dbline 183
 00E2           ;          PORTC|=(1<<DA_COS);
 00E2 AE9A              sbi 0x15,6
 00E4                   .dbline 184
 00E4           ;          ac_bd_state=0;
 00E4 2224              clr R2
 00E6 20920900          sts _ac_bd_state,R2
 00EA                   .dbline 185
 00EA           ;          }
 00EA 2CC0              xjmp L9
 00EC           L16:
 00EC                   .dbline 187
 00EC           ;       else 
 00EC           ;          {
 00EC                   .dbline 188
 00EC           ;          if (da_counter==64)
 00EC 80911700          lds R24,_da_counter
 00F0 8034              cpi R24,64
 00F2 41F5              brne L9
 00F4                   .dbline 189
 00F4           ;                 {
 00F4                   .dbline 190
 00F4           ;                 PORTC|=(1<<DA_SIN);
 00F4 AF9A              sbi 0x15,7
 00F6                   .dbline 191
 00F6           ;             PORTC&=~(1<<DA_COS);
 00F6 AE98              cbi 0x15,6
 00F8                   .dbline 192
 00F8           ;                 }
 00F8                   .dbline 193
 00F8           ;          }             
 00F8                   .dbline 194
 00F8           ;     }
 00F8                   .dbline 195
 00F8           ;   }
 00F8 25C0              xjmp L9
 00FA           L8:
 00FA                   .dbline 197
 00FA           ; else                                                                   //反转
 00FA           ;   {
 00FA                   .dbline 198
 00FA           ;   if (ac_bd_state==0)         //ac相处理
 00FA 20900900          lds R2,_ac_bd_state
 00FE 2220              tst R2
 0100 89F4              brne L20
 0102                   .dbline 199
 0102           ;     {
 0102                   .dbline 200
 0102           ;       if (da_counter==0)
 0102 20901700          lds R2,_da_counter
 0106 2220              tst R2
 0108 31F4              brne L22
 010A                   .dbline 201
 010A           ;          {
 010A                   .dbline 202
 010A           ;          PORTC&=~(1<<DA_SIN);
 010A AF98              cbi 0x15,7
 010C                   .dbline 203
 010C           ;          PORTC|=(1<<DA_COS);
 010C AE9A              sbi 0x15,6
 010E                   .dbline 204
 010E           ;          ac_bd_state=1;
 010E 81E0              ldi R24,1
 0110 80930900          sts _ac_bd_state,R24
 0114                   .dbline 205
 0114           ;          }
 0114 17C0              xjmp L21
 0116           L22:
 0116                   .dbline 207
 0116           ;       else 
 0116           ;          {
 0116                   .dbline 208
 0116           ;          if (da_counter==64)
 0116 80911700          lds R24,_da_counter
 011A 8034              cpi R24,64
 011C 99F4              brne L21
 011E                   .dbline 209
 011E           ;                 {
 011E                   .dbline 210
 011E           ;                 PORTC&=~(1<<DA_SIN);
 011E AF98              cbi 0x15,7
 0120                   .dbline 211
 0120           ;             PORTC&=~(1<<DA_COS);
 0120 AE98              cbi 0x15,6
 0122                   .dbline 212
 0122           ;                 }
 0122                   .dbline 213
 0122           ;          }    
 0122                   .dbline 214
 0122           ;       }
 0122 10C0              xjmp L21
 0124           L20:
 0124                   .dbline 216
 0124           ;   else                                                                 //bd相处理
 0124           ;     {
 0124                   .dbline 217
 0124           ;       if (da_counter==0)
 0124 20901700          lds R2,_da_counter
 0128 2220              tst R2
 012A 31F4              brne L26
 012C                   .dbline 218
 012C           ;          {
 012C                   .dbline 219
 012C           ;          PORTC|=(1<<DA_SIN);
 012C AF9A              sbi 0x15,7
 012E                   .dbline 220
 012E           ;          PORTC&=~(1<<DA_COS);
 012E AE98              cbi 0x15,6
 0130                   .dbline 221
 0130           ;          ac_bd_state=0;
 0130 2224              clr R2
 0132 20920900          sts _ac_bd_state,R2
 0136                   .dbline 222
 0136           ;          }
 0136 06C0              xjmp L27
 0138           L26:
 0138                   .dbline 224
 0138           ;       else 
 0138           ;          {
 0138                   .dbline 225
 0138           ;          if (da_counter==64)
 0138 80911700          lds R24,_da_counter
 013C 8034              cpi R24,64
 013E 11F4              brne L28
 0140                   .dbline 226
 0140           ;                 {
 0140                   .dbline 227
 0140           ;                 PORTC|=(1<<DA_SIN);
 0140 AF9A              sbi 0x15,7
 0142                   .dbline 228
 0142           ;             PORTC|=(1<<DA_COS);
 0142 AE9A              sbi 0x15,6
 0144                   .dbline 229
 0144           ;                 }
 0144           L28:
 0144                   .dbline 230
 0144           ;          }             
 0144           L27:
 0144                   .dbline 231
 0144           ;     }
 0144           L21:
 0144                   .dbline 232
 0144           ;   }
 0144           L9:
 0144                   .dbline 233
 0144           ; if (micros_nu0==32)                                                           //根据细分数对地址指针步进
 0144 80911500          lds R24,_micros_nu0
 0148 8032              cpi R24,32
 014A 31F4              brne L30

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -