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

📄 comm.lis

📁 一个正在应用的步进电机控制程序,包括电机的调速,正反,细分,通讯控制
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0100           ;           UCSRA=RS485_UCSRA&0b00111111;   /*清接收完中断标志位*/
 0100 2224              clr R2
 0102 2BB8              out 0xb,R2
 0104                   .dbline 135
 0104           ;               rxd_data=UDR;
 0104 2CB0              in R2,0xc
 0106 20924900          sts _rxd_data,R2
 010A                   .dbline 136
 010A           ;               if(tx485_busy!=1)
 010A 80914F00          lds R24,_tx485_busy
 010E 8130              cpi R24,1
 0110 09F4              brne X1
 0112 7EC0              xjmp L14
 0114           X1:
 0114                   .dbline 137
 0114           ;               { if(rxd_data==0xe9)
 0114                   .dbline 137
 0114 822D              mov R24,R2
 0116 893E              cpi R24,233
 0118 69F4              brne L16
 011A                   .dbline 138
 011A           ;                 { rxd_h_ok=1;
 011A                   .dbline 138
 011A 81E0              ldi R24,1
 011C 80934700          sts _rxd_h_ok,R24
 0120                   .dbline 139
 0120           ;             rxd_cnt=0;
 0120 2224              clr R2
 0122 20924D00          sts _rxd_cnt,R2
 0126                   .dbline 140
 0126           ;                       rxd_ins_flag=0;
 0126 20924C00          sts _rxd_ins_flag,R2
 012A                   .dbline 141
 012A           ;                       rxd_frm_len=0;
 012A 20925000          sts _rxd_frm_len,R2
 012E                   .dbline 142
 012E           ;                       fcs1=0;
 012E 20924600          sts _fcs1,R2
 0132                   .dbline 143
 0132           ;                 }
 0132 6EC0              xjmp L17
 0134           L16:
 0134                   .dbline 145
 0134           ;                 else
 0134           ;                 { if(rxd_h_ok==1)
 0134                   .dbline 145
 0134 80914700          lds R24,_rxd_h_ok
 0138 8130              cpi R24,1
 013A 09F0              breq X2
 013C 69C0              xjmp L18
 013E           X2:
 013E                   .dbline 146
 013E           ;                   { if(rxd_data==0xe8)
 013E                   .dbline 146
 013E 80914900          lds R24,_rxd_data
 0142 883E              cpi R24,232
 0144 69F4              brne L20
 0146                   .dbline 147
 0146           ;                         { rxd_frm[rxd_cnt]=0xe8;
 0146                   .dbline 147
 0146 80E0              ldi R24,<_rxd_frm
 0148 90E0              ldi R25,>_rxd_frm
 014A E0914D00          lds R30,_rxd_cnt
 014E FF27              clr R31
 0150 E80F              add R30,R24
 0152 F91F              adc R31,R25
 0154 88EE              ldi R24,232
 0156 8083              std z+0,R24
 0158                   .dbline 148
 0158           ;                           rxd_ins_flag=1;
 0158 81E0              ldi R24,1
 015A 80934C00          sts _rxd_ins_flag,R24
 015E                   .dbline 149
 015E           ;                         }
 015E 58C0              xjmp L21
 0160           L20:
 0160                   .dbline 151
 0160           ;                         else
 0160           ;                         { if(rxd_ins_flag==1)
 0160                   .dbline 151
 0160 80914C00          lds R24,_rxd_ins_flag
 0164 8130              cpi R24,1
 0166 89F4              brne L22
 0168                   .dbline 152
 0168           ;                           { rxd_ins_flag=0;
 0168                   .dbline 152
 0168 2224              clr R2
 016A 20924C00          sts _rxd_ins_flag,R2
 016E                   .dbline 153
 016E           ;                                 rxd_frm[rxd_cnt]=rxd_frm[rxd_cnt]+rxd_data;
 016E 80E0              ldi R24,<_rxd_frm
 0170 90E0              ldi R25,>_rxd_frm
 0172 20904D00          lds R2,_rxd_cnt
 0176 3324              clr R3
 0178 280E              add R2,R24
 017A 391E              adc R3,R25
 017C 40904900          lds R4,_rxd_data
 0180 F101              movw R30,R2
 0182 5080              ldd R5,z+0
 0184 540C              add R5,R4
 0186 5082              std z+0,R5
 0188                   .dbline 154
 0188           ;                               }
 0188 0AC0              xjmp L23
 018A           L22:
 018A                   .dbline 156
 018A           ;                               else
 018A           ;                               { rxd_frm[rxd_cnt]=rxd_data;}
 018A                   .dbline 156
 018A 80E0              ldi R24,<_rxd_frm
 018C 90E0              ldi R25,>_rxd_frm
 018E E0914D00          lds R30,_rxd_cnt
 0192 FF27              clr R31
 0194 E80F              add R30,R24
 0196 F91F              adc R31,R25
 0198 20904900          lds R2,_rxd_data
 019C 2082              std z+0,R2
 019E                   .dbline 156
 019E           L23:
 019E                   .dbline 157
 019E           ;                               fcs1=fcs1^rxd_frm[rxd_cnt];
 019E 80E0              ldi R24,<_rxd_frm
 01A0 90E0              ldi R25,>_rxd_frm
 01A2 E0914D00          lds R30,_rxd_cnt
 01A6 FF27              clr R31
 01A8 E80F              add R30,R24
 01AA F91F              adc R31,R25
 01AC 2080              ldd R2,z+0
 01AE 30904600          lds R3,_fcs1
 01B2 3224              eor R3,R2
 01B4 30924600          sts _fcs1,R3
 01B8                   .dbline 158
 01B8           ;                               if(rxd_cnt==1)
 01B8 80914D00          lds R24,_rxd_cnt
 01BC 8130              cpi R24,1
 01BE 59F4              brne L24
 01C0                   .dbline 159
 01C0           ;                               { rxd_frm_len=rxd_frm[rxd_cnt]+3;}
 01C0                   .dbline 159
 01C0 80E0              ldi R24,<_rxd_frm
 01C2 90E0              ldi R25,>_rxd_frm
 01C4 E0914D00          lds R30,_rxd_cnt
 01C8 FF27              clr R31
 01CA E80F              add R30,R24
 01CC F91F              adc R31,R25
 01CE 8081              ldd R24,z+0
 01D0 8D5F              subi R24,253    ; addi 3
 01D2 80935000          sts _rxd_frm_len,R24
 01D6                   .dbline 159
 01D6           L24:
 01D6                   .dbline 160
 01D6           ;                               rxd_cnt=rxd_cnt+1;
 01D6 80914D00          lds R24,_rxd_cnt
 01DA 8F5F              subi R24,255    ; addi 1
 01DC 80934D00          sts _rxd_cnt,R24
 01E0                   .dbline 161
 01E0           ;                               if((rxd_cnt>1)&&(rxd_cnt>=rxd_frm_len))
 01E0 81E0              ldi R24,1
 01E2 20904D00          lds R2,_rxd_cnt
 01E6 8215              cp R24,R2
 01E8 98F4              brsh L26
 01EA 20905000          lds R2,_rxd_frm_len
 01EE 30904D00          lds R3,_rxd_cnt
 01F2 3214              cp R3,R2
 01F4 68F0              brlo L26
 01F6                   .dbline 162
 01F6           ;                               { if(fcs1==0)
 01F6                   .dbline 162
 01F6 20904600          lds R2,_fcs1
 01FA 2220              tst R2
 01FC 49F4              brne L28
 01FE                   .dbline 163
 01FE           ;                                 { 
 01FE                   .dbline 164
 01FE           ;                                 act[rxd_llc_job]=1;
 01FE 80E0              ldi R24,<_act
 0200 90E0              ldi R25,>_act
 0202 E0910300          lds R30,_rxd_llc_job
 0206 FF27              clr R31
 0208 E80F              add R30,R24
 020A F91F              adc R31,R25
 020C 81E0              ldi R24,1
 020E 8083              std z+0,R24
 0210                   .dbline 165
 0210           ;                                 }
 0210           L28:
 0210                   .dbline 166
 0210           ;                               }
 0210           L26:
 0210                   .dbline 167
 0210           ;                         }
 0210           L21:
 0210                   .dbline 168
 0210           ;                       }
 0210           L18:
 0210                   .dbline 169
 0210           ;                 }
 0210           L17:
 0210                   .dbline 170
 0210           L14:
 0210                   .dbline -2
 0210           L13:
 0210 2990              ld R2,y+
 0212 2FBE              out 0x3f,R2
 0214 F991              ld R31,y+
 0216 E991              ld R30,y+
 0218 9991              ld R25,y+
 021A 8991              ld R24,y+
 021C 5990              ld R5,y+
 021E 4990              ld R4,y+
 0220 3990              ld R3,y+
 0222 2990              ld R2,y+
 0224                   .dbline 0 ; func end
 0224 1895              reti
 0226                   .dbsym l i 1 c
 0226                   .dbend
 0226                   .dbfunc e rxd_llc_job1 _rxd_llc_job1 fV
 0226           ;              i -> R16
                        .even
 0226           _rxd_llc_job1::
 0226                   .dbline -1
 0226                   .dbline 176
 0226           ;               }
 0226           ; }
 0226           ; 
 0226           ; 
 0226           ; /*********************************/
 0226           ; void rxd_llc_job1(void)
 0226           ;     { 
 0226                   .dbline 178
 0226           ;       char i;
 0226           ;          act[rxd_llc_job]=0;
 0226 80E0              ldi R24,<_act
 0228 90E0              ldi R25,>_act
 022A E0910300          lds R30,_rxd_llc_job
 022E FF27              clr R31
 0230 E80F              add R30,R24
 0232 F91F              adc R31,R25
 0234 2224              clr R2
 0236 2082              std z+0,R2
 0238                   .dbline 179
 0238           ;          if((pump_tab==rxd_frm[0])||(rxd_frm[0]==BROADCAST_ADDR))  //接收指令地址等于设备或广播地址
 0238 20905100          lds R2,_rxd_frm
 023C 30907000          lds R3,_pump_tab
 0240 3214              cp R3,R2
 0242 19F0              breq L33
 0244 822D              mov R24,R2
 0246 8F31              cpi R24,31
 0248 31F5              brne L31
 024A           L33:
 024A                   .dbline 180
 024A           ;          { rxd_mesg_addr=rxd_frm[0];
 024A                   .dbline 180
 024A 20905100          lds R2,_rxd_frm
 024E 20924500          sts _rxd_mesg_addr,R2
 0252                   .dbline 181
 0252           ;            rxd_mesg_len=rxd_frm[1];
 0252 20905200          lds R2,_rxd_frm+1
 0256 20924400          sts _rxd_mesg_len,R2
 025A                   .dbline 182
 025A           ;                for(i=0;i<rxd_mesg_len;i++)
 025A 0027              clr R16
 025C 0FC0              xjmp L38
 025E           L35:
 025E                   .dbline 183
 025E                   .dbline 183
 025E 80E0              ldi R24,<_rxd_frm+2
 0260 90E0              ldi R25,>_rxd_frm+2
 0262 E02F              mov R30,R16
 0264 FF27              clr R31
 0266 E80F              add R30,R24
 0268 F91F              adc R31,R25
 026A 2080              ldd R2,z+0
 026C 80E0              ldi R24,<_rxd_mesg
 026E 90E0              ldi R25,>_rxd_mesg
 0270 E02F              mov R30,R16
 0272 FF27              clr R31
 0274 E80F              add R30,R24
 0276 F91F              adc R31,R25
 0278 2082              std z+0,R2
 027A                   .dbline 183
 027A           L36:
 027A                   .dbline 182
 027A 0395              inc R16
 027C           L38:
 027C                   .dbline 182
 027C 20904400          lds R2,_rxd_mesg_len
 0280 0215              cp R16,R2
 0282 68F3              brlo L35
 0284                   .dbline 184
 0284 80E0              ldi R24,<_act
 0286 90E0              ldi R25,>_act
 0288 E0910100          lds R30,_rs485_app_job
 028C FF27              clr R31
 028E E80F              add R30,R24
 0290 F91F              adc R31,R25
 0292 81E0              ldi R24,1
 0294 8083              std z+0,R24
 0296                   .dbline 185
 0296           L31:
 0296                   .dbline -2
 0296           L30:
 0296                   .dbline 0 ; func end
 0296 0895              ret
 0298                   .dbsym r i 16 c
 0298                   .dbend
 0298                   .dbfunc e txd_llc_job1 _txd_llc_job1 fV
 0298           ;            fcs -> R16
 0298           ;              i -> R18
                        .even
 0298           _txd_llc_job1::
 0298                   .dbline -1
 0298                   .dbline 189
 0298           ;                { rxd_mesg[i]=rxd_frm[i+2];}
 0298           ;                act[rs485_app_job]=1;
 0298           ;          }
 0298           ;       }
 0298           ; /*********************************/
 0298           ; void txd_llc_job1(void)
 0298           ;     { 
 0298                   .dbline 191
 0298           ;       char i,fcs;
 0298           ;          act[txd_llc_job]=0;
 0298 80E0              ldi R24,<_act

⌨️ 快捷键说明

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