📄 can.lis
字号:
0526 L71:
0526 .dbline 217
0526 ;
0526 ; err_temp = CANREC; //读取接收错误计数器
0526 A090EB00 lds R10,235
052A .dbline 218
052A ; if(err_temp>128)
052A 80E8 ldi R24,128
052C 8A15 cp R24,R10
052E 10F4 brsh L73
0530 .dbline 219
0530 ; RESET;
0530 0C940000 jmp 0x00000
0534 L73:
0534 .dbline 221
0534 ;
0534 ; if(RCtemp2&(0x07))
0534 8DA1 ldd R24,y+37
0536 9EA1 ldd R25,y+38
0538 8770 andi R24,7
053A 9070 andi R25,0
053C 8030 cpi R24,0
053E 8907 cpc R24,R25
0540 A1F1 breq L75
0542 X4:
0542 .dbline 222
0542 ; {
0542 .dbline 223
0542 ; for(i=0;i<3;i++) //查询前三个邮箱中断状态
0542 0024 clr R0
0544 0CA2 std y+36,R0
0546 2DC0 xjmp L80
0548 L77:
0548 .dbline 224
0548 ; {
0548 .dbline 225
0548 ; tempp=(1<<i);
0548 2CA1 ldd R18,y+36
054A 3327 clr R19
054C 01E0 ldi R16,1
054E 10E0 ldi R17,0
0550 0E940000 xcall lsl16
0554 6801 movw R12,R16
0556 .dbline 226
0556 ; RCF=(RCtemp2&tempp);
0556 ADA0 ldd R10,y+37
0558 BEA0 ldd R11,y+38
055A A022 and R10,R16
055C B122 and R11,R17
055E .dbline 227
055E ; if(RCF!=0)
055E AA20 tst R10
0560 11F4 brne X5
0562 BB20 tst R11
0564 D9F0 breq L81
0566 X5:
0566 .dbline 228
0566 ; {
0566 .dbline 229
0566 ; CANPAGE = i<<4;
0566 8CA1 ldd R24,y+36
0568 8F70 andi R24,#0x0F
056A 8295 swap R24
056C 8093ED00 sts 237,R24
0570 .dbline 230
0570 ; sta_temp = CANSTMOB;
0570 E090EE00 lds R14,238
0574 .dbline 231
0574 ; CANSTMOB &= ~(1<<TXOK);
0574 8091EE00 lds R24,238
0578 8F7B andi R24,191
057A 8093EE00 sts 238,R24
057E .dbline 232
057E ; CANCDMOB = 0x18;
057E 88E1 ldi R24,24
0580 8093EF00 sts 239,R24
0584 .dbline 233
0584 ; if(sta_temp&0x40) //是发送完成中断
0584 8E2D mov R24,R14
0586 8074 andi R24,64
0588 49F0 breq L83
058A .dbline 234
058A ; {
058A .dbline 235
058A ; send_count = 0; //清发送计数器
058A 2224 clr R2
058C 20920000 sts _send_count,R2
0590 .dbline 236
0590 ; if(LED)
0590 .dbline 238
0590 ;
0590 ; PORTB |= 0x40;
0590 2E9A sbi 0x5,6
0592 03C0 xjmp L86
0594 L85:
0594 .dbline 241
0594 ; else
0594 ;
0594 ; PORTB &= 0xbf;
0594 85B1 in R24,0x5
0596 8F7B andi R24,191
0598 85B9 out 0x5,R24
059A L86:
059A .dbline 243
059A ;
059A ; WDR();
059A A895 wdr
059C .dbline 244
059C ; }
059C L83:
059C .dbline 245
059C ; }
059C L81:
059C .dbline 246
059C L78:
059C .dbline 223
059C 0CA0 ldd R0,y+36
059E 0394 inc R0
05A0 0CA2 std y+36,R0
05A2 L80:
05A2 .dbline 223
05A2 8CA1 ldd R24,y+36
05A4 8330 cpi R24,3
05A6 80F2 brlo L77
05A8 .dbline 247
05A8 ; }
05A8 ; }
05A8 EDC0 xjmp L76
05AA L75:
05AA .dbline 248
05AA ; else if(RCtemp2&(0x38))
05AA 8DA1 ldd R24,y+37
05AC 9EA1 ldd R25,y+38
05AE 8873 andi R24,56
05B0 9070 andi R25,0
05B2 8030 cpi R24,0
05B4 8907 cpc R24,R25
05B6 09F4 brne X8
05B8 E5C0 xjmp L87
05BA X8:
05BA X6:
05BA .dbline 249
05BA ; {
05BA .dbline 250
05BA ; for(i=3;i<6;i++) //判断哪个邮箱产生接收中断
05BA 83E0 ldi R24,3
05BC 8CA3 std y+36,R24
05BE DEC0 xjmp L92
05C0 L89:
05C0 .dbline 251
05C0 ; {
05C0 .dbline 252
05C0 ; tempp=(1<<i);
05C0 2CA1 ldd R18,y+36
05C2 3327 clr R19
05C4 01E0 ldi R16,1
05C6 10E0 ldi R17,0
05C8 0E940000 xcall lsl16
05CC 6801 movw R12,R16
05CE .dbline 253
05CE ; RCF=(RCtemp2&tempp);
05CE ADA0 ldd R10,y+37
05D0 BEA0 ldd R11,y+38
05D2 A022 and R10,R16
05D4 B122 and R11,R17
05D6 .dbline 254
05D6 ; if(RCF!=0)
05D6 AA20 tst R10
05D8 19F4 brne X7
05DA BB20 tst R11
05DC 09F4 brne X9
05DE CBC0 xjmp L93
05E0 X9:
05E0 X7:
05E0 .dbline 255
05E0 ; {
05E0 .dbline 256
05E0 ; if(LED)
05E0 .dbline 257
05E0 ; PORTB |= 0X80;
05E0 2F9A sbi 0x5,7
05E2 03C0 xjmp L96
05E4 L95:
05E4 .dbline 259
05E4 ; else
05E4 ; PORTB &= 0X7f;
05E4 85B1 in R24,0x5
05E6 8F77 andi R24,127
05E8 85B9 out 0x5,R24
05EA L96:
05EA .dbline 260
05EA ; CANPAGE = i<<4;
05EA 8CA1 ldd R24,y+36
05EC 8F70 andi R24,#0x0F
05EE 8295 swap R24
05F0 8093ED00 sts 237,R24
05F4 .dbline 261
05F4 ; WDR();
05F4 A895 wdr
05F6 .dbline 262
05F6 ; for (nb_data = 0; nb_data <8; nb_data++)
05F6 EE24 clr R14
05F8 10C0 xjmp L100
05FA L97:
05FA .dbline 263
05FA .dbline 264
05FA 8CE0 ldi R24,12
05FC 0CA0 ldd R0,y+36
05FE 809D mul R24,R0
0600 1001 movw R2,R0
0602 80E0 ldi R24,<_rece_data-36+4
0604 90E0 ldi R25,>_rece_data-36+4
0606 280E add R2,R24
0608 391E adc R3,R25
060A EE2D mov R30,R14
060C FF27 clr R31
060E E20D add R30,R2
0610 F31D adc R31,R3
0612 2090FA00 lds R2,250
0616 2082 std z+0,R2
0618 .dbline 265
0618 L98:
0618 .dbline 262
0618 E394 inc R14
061A L100:
061A .dbline 262
061A 8E2D mov R24,R14
061C 8830 cpi R24,8
061E 68F3 brlo L97
0620 .dbline 266
0620 ; {
0620 ; rece_data[i-3].Data[nb_data]=CANMSG;
0620 ; }
0620 ; rece_data[i-3].ID = 0;
0620 8CE0 ldi R24,12
0622 0CA0 ldd R0,y+36
0624 809D mul R24,R0
0626 F001 movw R30,R0
0628 80E0 ldi R24,<_rece_data-36
062A 90E0 ldi R25,>_rece_data-36
062C E80F add R30,R24
062E F91F adc R31,R25
0630 40E0 ldi R20,0
0632 50E0 ldi R21,0
0634 60E0 ldi R22,0
0636 70E0 ldi R23,0
0638 4083 std z+0,R20
063A 5183 std z+1,R21
063C 6283 std z+2,R22
063E 7383 std z+3,R23
0640 .dbline 267
0640 ; rece_data[i-3].ID |= ((unsigned long) CANIDT1<<24); //get identifier
0640 8CE0 ldi R24,12
0642 0CA0 ldd R0,y+36
0644 809D mul R24,R0
0646 1001 movw R2,R0
0648 80E0 ldi R24,<_rece_data-36
064A 90E0 ldi R25,>_rece_data-36
064C 280E add R2,R24
064E 391E adc R3,R25
0650 88E1 ldi R24,24
0652 90E0 ldi R25,0
0654 0091F300 lds R16,243
0658 1127 clr R17
065A 2227 clr R18
065C 3327 clr R19
065E 8A93 st -y,R24
0660 0E940000 xcall lsl32
0664 F101 movw R30,R2
0666 4080 ldd R4,z+0
0668 5180 ldd R5,z+1
066A 6280 ldd R6,z+2
066C 7380 ldd R7,z+3
066E 402A or R4,R16
0670 512A or R5,R17
0672 622A or R6,R18
0674 732A or R7,R19
0676 4082 std z+0,R4
0678 5182 std z+1,R5
067A 6282 std z+2,R6
067C 7382 std z+3,R7
067E .dbline 268
067E ; rece_data[i-3].ID |= ((unsigned long) CANIDT2<<16);
067E 8CE0 ldi R24,12
0680 0CA0 ldd R0,y+36
0682 809D mul R24,R0
0684 1001 movw R2,R0
0686 80E0 ldi R24,<_rece_data-36
0688 90E0 ldi R25,>_rece_data-36
068A 280E add R2,R24
068C 391E adc R3,R25
068E 4090F200 lds R4,242
0692 5524 clr R5
0694 6624 clr R6
0696 7724 clr R7
0698 3201 movw R6,R4
069A 4424 clr R4
069C 5524 clr R5
069E F101 movw R30,R2
06A0 4081 ldd R20,z+0
06A2 5181 ldd R21,z+1
06A4 6281 ldd R22,z+2
06A6 7381 ldd R23,z+3
06A8 4429 or R20,R4
06AA 5529 or R21,R5
06AC 6629 or R22,R6
06AE 7729 or R23,R7
06B0 4083 std z+0,R20
06B2 5183 std z+1,R21
06B4 6283 std z+2,R22
06B6 7383 std z+3,R23
06B8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -