📄 can.lis
字号:
050C L67:
050C .dbline 198
050C .dbline 200
050C C501 movw R24,R10
050E 0496 adiw R24,4
0510 EC2D mov R30,R12
0512 FF27 clr R31
0514 E80F add R30,R24
0516 F91F adc R31,R25
0518 2080 ldd R2,z+0
051A EAEF ldi R30,250
051C F0E0 ldi R31,0
051E 2082 std z+0,R2
0520 .dbline 201
0520 L68:
0520 .dbline 197
0520 C394 inc R12
0522 L70:
0522 .dbline 197
0522 8C2D mov R24,R12
0524 8830 cpi R24,8
0526 90F3 brlo L67
0528 .dbline 202
0528 ; {
0528 ;
0528 ; CANMSG = msg.Data[i];
0528 ; }
0528 ; CANCDMOB |= (1<<CONMOB0); //enable transmission
0528 8091EF00 lds R24,239
052C 8064 ori R24,64
052E 8093EF00 sts 239,R24
0532 .dbline -2
0532 L64:
0532 2496 adiw R28,4
0534 0E940000 xcall pop_gset5
0538 .dbline 0 ; func end
0538 0895 ret
053A .dbsym l temp_id 0 L
053A .dbsym r index 14 c
053A .dbsym r pass_Flag 12 c
053A .dbsym r i 12 c
053A .dbsym r msg 10 pS[_VCI_CAN_OBJ]
053A .dbend
.area vector(rom, abs)
.org 72
0048 0C949D02 jmp _can_ReceiveData
.area text(rom, con, rel)
053A .dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\can.c
053A .dbfunc e can_ReceiveData _can_ReceiveData fV
.area func_lit(rom, con, rel)
0000 L461:
0000 D603 .word `L107
0002 E803 .word `L113
0004 FA03 .word `L120
0006 0C04 .word `L127
0008 1E04 .word `L134
000A 3004 .word `L141
000C 4204 .word `L148
000E 5404 .word `L155
0010 6604 .word `L162
0012 7804 .word `L169
0014 8A04 .word `L176
0016 9C04 .word `L183
0018 AE04 .word `L190
001A C004 .word `L197
001C D204 .word `L204
001E E404 .word `L211
0020 F604 .word `L218
0022 0805 .word `L225
0024 1A05 .word `L232
0026 2C05 .word `L239
0028 3E05 .word `L246
002A 5005 .word `L253
002C 6205 .word `L260
002E 7405 .word `L267
0030 8605 .word `L274
0032 9805 .word `L281
0034 AA05 .word `L288
0036 BC05 .word `L295
0038 CE05 .word `L302
003A E005 .word `L309
003C F205 .word `L316
003E 0406 .word `L323
0040 1606 .word `L330
0042 2806 .word `L337
0044 3A06 .word `L344
0046 4C06 .word `L351
0048 5E06 .word `L358
004A 7006 .word `L365
004C 8206 .word `L372
004E 9406 .word `L379
0050 A606 .word `L386
0052 B806 .word `L393
0054 CA06 .word `L400
0056 DC06 .word `L407
0058 EE06 .word `L414
005A 0007 .word `L421
005C 1207 .word `L428
005E 2407 .word `L435
0060 3607 .word `L442
.area text(rom, con, rel)
053A .dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\can.c
053A ; err_temp -> R10
053A ; sta_temp -> R10
053A ; jj -> R14
053A ; RCtemp2 -> y+9
053A ; RCF -> y+7
053A ; tempp -> y+5
053A ; id_temp -> y+0
053A ; i -> y+4
053A ; nb_data -> R12
.even
053A _can_ReceiveData::
053A 0A92 st -y,R0
053C 1A92 st -y,R1
053E 2A92 st -y,R2
0540 3A92 st -y,R3
0542 4A92 st -y,R4
0544 5A92 st -y,R5
0546 6A92 st -y,R6
0548 7A92 st -y,R7
054A 8A92 st -y,R8
054C 9A92 st -y,R9
054E 0A93 st -y,R16
0550 1A93 st -y,R17
0552 2A93 st -y,R18
0554 3A93 st -y,R19
0556 8A93 st -y,R24
0558 9A93 st -y,R25
055A AA93 st -y,R26
055C BA93 st -y,R27
055E EA93 st -y,R30
0560 FA93 st -y,R31
0562 0FB6 in R0,0x3f
0564 0A92 st -y,R0
0566 0E940000 xcall push_gset5
056A 2B97 sbiw R28,11
056C .dbline -1
056C .dbline 208
056C ; }
056C ;
056C ;
056C ; #pragma interrupt_handler can_ReceiveData:19
056C ; void can_ReceiveData (void) //receive interrupt
056C ; {
056C .dbline 214
056C ; unsigned char nb_data;
056C ; unsigned char i,err_temp,sta_temp,jj;
056C ; unsigned int RCtemp2,tempp,RCF;
056C ; long id_temp;
056C ;
056C ; WDR();
056C A895 wdr
056E .dbline 215
056E ; CANGIE &= ~((1<<ENRX)|(1<<ENTX)); //关接收中断
056E 8091DB00 lds R24,219
0572 8F7C andi R24,207
0574 8093DB00 sts 219,R24
0578 .dbline 216
0578 ; RCtemp2=CANSIT2; //读取中断信息
0578 E0EE ldi R30,224
057A F0E0 ldi R31,0
057C 2080 ldd R2,z+0
057E 3324 clr R3
0580 3A86 std y+10,R3
0582 2986 std y+9,R2
0584 .dbline 217
0584 ; err_temp = CANTEC; //读取发送错误计数器
0584 EAEE ldi R30,234
0586 A080 ldd R10,z+0
0588 .dbline 219
0588 ;
0588 ; if(err_temp>96)
0588 80E6 ldi R24,96
058A 8A15 cp R24,R10
058C 10F4 brsh L72
058E .dbline 220
058E ; RESET;
058E 0C940000 jmp 0x000
0592 L72:
0592 .dbline 222
0592 ;
0592 ; err_temp = CANREC; //读取接收错误计数器
0592 EBEE ldi R30,235
0594 F0E0 ldi R31,0
0596 A080 ldd R10,z+0
0598 .dbline 223
0598 ; if(err_temp>128)
0598 80E8 ldi R24,128
059A 8A15 cp R24,R10
059C 10F4 brsh L74
059E .dbline 224
059E ; RESET;
059E 0C940000 jmp 0x000
05A2 L74:
05A2 .dbline 226
05A2 ;
05A2 ; if(RCtemp2&(0x38))
05A2 8985 ldd R24,y+9
05A4 9A85 ldd R25,y+10
05A6 8873 andi R24,56
05A8 9070 andi R25,0
05AA 8030 cpi R24,0
05AC 8907 cpc R24,R25
05AE 59F1 breq L76
05B0 X5:
05B0 .dbline 227
05B0 ; {
05B0 .dbline 228
05B0 ; for(i=3;i<6;i++) //查询前三个邮箱中断状态
05B0 83E0 ldi R24,3
05B2 8C83 std y+4,R24
05B4 24C0 xjmp L81
05B6 L78:
05B6 .dbline 229
05B6 ; {
05B6 .dbline 230
05B6 ; tempp=(1<<i);
05B6 2C81 ldd R18,y+4
05B8 3327 clr R19
05BA 01E0 ldi R16,1
05BC 10E0 ldi R17,0
05BE 0E940000 xcall lsl16
05C2 1E83 std y+6,R17
05C4 0D83 std y+5,R16
05C6 .dbline 231
05C6 ; RCF=(RCtemp2&tempp);
05C6 2984 ldd R2,y+9
05C8 3A84 ldd R3,y+10
05CA 2022 and R2,R16
05CC 3122 and R3,R17
05CE 3886 std y+8,R3
05D0 2F82 std y+7,R2
05D2 .dbline 232
05D2 ; if(RCF!=0)
05D2 0101 movw R0,R2
05D4 2220 tst R2
05D6 11F4 brne X6
05D8 3320 tst R3
05DA 71F0 breq L82
05DC X6:
05DC .dbline 233
05DC ; {
05DC .dbline 234
05DC ; CANPAGE = i<<4;
05DC 8C81 ldd R24,y+4
05DE 8F70 andi R24,#0x0F
05E0 8295 swap R24
05E2 EDEE ldi R30,237
05E4 F0E0 ldi R31,0
05E6 8083 std z+0,R24
05E8 .dbline 235
05E8 ; sta_temp = CANSTMOB;
05E8 EEEE ldi R30,238
05EA A080 ldd R10,z+0
05EC .dbline 236
05EC ; if(sta_temp&0x40) //是发送完成中断
05EC A6FE sbrs R10,6
05EE 04C0 rjmp L84
05F0 .dbline 237
05F0 ; {
05F0 .dbline 238
05F0 ; if(LED)
05F0 .dbline 239
05F0 ; send_led_on;
05F0 899A sbi 0x11,1
05F2 01C0 xjmp L87
05F4 L86:
05F4 .dbline 241
05F4 ; else
05F4 ; send_led_off ;
05F4 8998 cbi 0x11,1
05F6 L87:
05F6 .dbline 243
05F6 ;
05F6 ; WDR();
05F6 A895 wdr
05F8 .dbline 244
05F8 ; }
05F8 L84:
05F8 .dbline 245
05F8 ; }
05F8 L82:
05F8 .dbline 246
05F8 L79:
05F8 .dbline 228
05F8 0C80 ldd R0,y+4
05FA 0394 inc R0
05FC 0C82 std y+4,R0
05FE L81:
05FE .dbline 228
05FE 8C81 ldd R24,y+4
0600 8630 cpi R24,6
0602 C8F2 brlo L78
0604 .dbline 247
0604 ; }
0604 ; }
0604 65C4 xjmp L77
0606 L76:
0606 .dbline 248
0606 ; else if(RCtemp2&(0x07))
0606 8985 ldd R24,y+9
0608 9A85 ldd R25,y+10
060A 8770 andi R24,7
060C 9070 andi R25,0
060E 8030
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -