📄 comm.lis
字号:
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 + -