📄 can.lis
字号:
0020 20920000 sts _Pass_Flag,R2
0024 .dbline 52
0024 ; //CANMOBID[2]=(unsigned long)(SELFID<<8)|CANMOBID[2];
0024 ; for(i=0;i<6;i++) //15个邮箱初始化
0024 4427 clr R20
0026 48C0 xjmp L7
0028 L4:
0028 .dbline 53
0028 .dbline 54
0028 84E0 ldi R24,4
002A 849F mul R24,R20
002C F001 movw R30,R0
002E 80E0 ldi R24,<_CANMOBID
0030 90E0 ldi R25,>_CANMOBID
0032 E80F add R30,R24
0034 F91F adc R31,R25
0036 0081 ldd R16,z+0
0038 1181 ldd R17,z+1
003A 2281 ldd R18,z+2
003C 3381 ldd R19,z+3
003E 83E0 ldi R24,3
0040 90E0 ldi R25,0
0042 8A93 st -y,R24
0044 0E940000 xcall lsl32
0048 0883 std y+0,R16
004A 1983 std y+1,R17
004C 2A83 std y+2,R18
004E 3B83 std y+3,R19
0050 .dbline 55
0050 6881 ldd R22,y+0
0052 7981 ldd R23,y+1
0054 .dbline 56
0054 2880 ldd R2,y+0
0056 3980 ldd R3,y+1
0058 4A80 ldd R4,y+2
005A 5B80 ldd R5,y+3
005C 5201 movw R10,R4
005E .dbline 57
005E 84E0 ldi R24,4
0060 849F mul R24,R20
0062 F001 movw R30,R0
0064 80E0 ldi R24,<_CANIDT+3
0066 90E0 ldi R25,>_CANIDT+3
0068 E80F add R30,R24
006A F91F adc R31,R25
006C 6083 std z+0,R22
006E .dbline 58
006E 84E0 ldi R24,4
0070 849F mul R24,R20
0072 F001 movw R30,R0
0074 80E0 ldi R24,<_CANIDT+2
0076 90E0 ldi R25,>_CANIDT+2
0078 E80F add R30,R24
007A F91F adc R31,R25
007C 1B01 movw R2,R22
007E 232C mov R2,R3
0080 3324 clr R3
0082 2082 std z+0,R2
0084 .dbline 59
0084 84E0 ldi R24,4
0086 849F mul R24,R20
0088 F001 movw R30,R0
008A 80E0 ldi R24,<_CANIDT+1
008C 90E0 ldi R25,>_CANIDT+1
008E E80F add R30,R24
0090 F91F adc R31,R25
0092 A082 std z+0,R10
0094 .dbline 60
0094 84E0 ldi R24,4
0096 849F mul R24,R20
0098 F001 movw R30,R0
009A 80E0 ldi R24,<_CANIDT
009C 90E0 ldi R25,>_CANIDT
009E E80F add R30,R24
00A0 F91F adc R31,R25
00A2 1501 movw R2,R10
00A4 232C mov R2,R3
00A6 3324 clr R3
00A8 2082 std z+0,R2
00AA .dbline 61
00AA 80910000 lds R24,_Pass_Flag
00AE 8F5F subi R24,255 ; addi 1
00B0 80930000 sts _Pass_Flag,R24
00B4 .dbline 62
00B4 0000 nop
00B6 .dbline 63
00B6 L5:
00B6 .dbline 52
00B6 4395 inc R20
00B8 L7:
00B8 .dbline 52
00B8 4630 cpi R20,6
00BA 08F4 brsh X0
00BC B5CF xjmp L4
00BE X0:
00BE .dbline 64
00BE ; {
00BE ; temp=CANMOBID[i]<<3; //ID初始化
00BE ; temp1=(unsigned int)temp;
00BE ; temp2=(unsigned int)(temp/0x00010000);
00BE ; CANIDT[i][3]=(unsigned char)temp1;
00BE ; CANIDT[i][2]=(unsigned char)(temp1>>8);
00BE ; CANIDT[i][1]=(unsigned char)temp2;
00BE ; CANIDT[i][0]=(unsigned char)(temp2>>8);
00BE ; Pass_Flag = Pass_Flag + 1;
00BE ; NOP();
00BE ; }
00BE ; if(Pass_Flag!=0x06)
00BE 80910000 lds R24,_Pass_Flag
00C2 8630 cpi R24,6
00C4 11F0 breq L11
00C6 .dbline 65
00C6 ; RESET;
00C6 0C940000 jmp 0x000
00CA L11:
00CA .dbline 66
00CA ; WDR();
00CA A895 wdr
00CC .dbline 68
00CC ;
00CC ; Pass_Flag = 0x00;
00CC 2224 clr R2
00CE 20920000 sts _Pass_Flag,R2
00D2 .dbline 69
00D2 ; for(i=0;i<6;i++)
00D2 4427 clr R20
00D4 48C0 xjmp L16
00D6 L13:
00D6 .dbline 70
00D6 .dbline 71
00D6 84E0 ldi R24,4
00D8 849F mul R24,R20
00DA F001 movw R30,R0
00DC 80E0 ldi R24,<_CANMOBMD
00DE 90E0 ldi R25,>_CANMOBMD
00E0 E80F add R30,R24
00E2 F91F adc R31,R25
00E4 0081 ldd R16,z+0
00E6 1181 ldd R17,z+1
00E8 2281 ldd R18,z+2
00EA 3381 ldd R19,z+3
00EC 83E0 ldi R24,3
00EE 90E0 ldi R25,0
00F0 8A93 st -y,R24
00F2 0E940000 xcall lsl32
00F6 0883 std y+0,R16
00F8 1983 std y+1,R17
00FA 2A83 std y+2,R18
00FC 3B83 std y+3,R19
00FE .dbline 72
00FE 6881 ldd R22,y+0
0100 7981 ldd R23,y+1
0102 .dbline 73
0102 2880 ldd R2,y+0
0104 3980 ldd R3,y+1
0106 4A80 ldd R4,y+2
0108 5B80 ldd R5,y+3
010A 5201 movw R10,R4
010C .dbline 74
010C 84E0 ldi R24,4
010E 849F mul R24,R20
0110 F001 movw R30,R0
0112 80E0 ldi R24,<_CANIDM+3
0114 90E0 ldi R25,>_CANIDM+3
0116 E80F add R30,R24
0118 F91F adc R31,R25
011A 6083 std z+0,R22
011C .dbline 75
011C 84E0 ldi R24,4
011E 849F mul R24,R20
0120 F001 movw R30,R0
0122 80E0 ldi R24,<_CANIDM+2
0124 90E0 ldi R25,>_CANIDM+2
0126 E80F add R30,R24
0128 F91F adc R31,R25
012A 1B01 movw R2,R22
012C 232C mov R2,R3
012E 3324 clr R3
0130 2082 std z+0,R2
0132 .dbline 76
0132 84E0 ldi R24,4
0134 849F mul R24,R20
0136 F001 movw R30,R0
0138 80E0 ldi R24,<_CANIDM+1
013A 90E0 ldi R25,>_CANIDM+1
013C E80F add R30,R24
013E F91F adc R31,R25
0140 A082 std z+0,R10
0142 .dbline 77
0142 84E0 ldi R24,4
0144 849F mul R24,R20
0146 F001 movw R30,R0
0148 80E0 ldi R24,<_CANIDM
014A 90E0 ldi R25,>_CANIDM
014C E80F add R30,R24
014E F91F adc R31,R25
0150 1501 movw R2,R10
0152 232C mov R2,R3
0154 3324 clr R3
0156 2082 std z+0,R2
0158 .dbline 78
0158 80910000 lds R24,_Pass_Flag
015C 8F5F subi R24,255 ; addi 1
015E 80930000 sts _Pass_Flag,R24
0162 .dbline 79
0162 0000 nop
0164 .dbline 80
0164 L14:
0164 .dbline 69
0164 4395 inc R20
0166 L16:
0166 .dbline 69
0166 4630 cpi R20,6
0168 08F4 brsh X1
016A B5CF xjmp L13
016C X1:
016C .dbline 81
016C ; {
016C ; temp=CANMOBMD[i]<<3;
016C ; temp1=(unsigned int)temp; //低16位
016C ; temp2=(unsigned int)(temp/0x00010000); //高16位
016C ; CANIDM[i][3]=(unsigned char)temp1;
016C ; CANIDM[i][2]=(unsigned char)(temp1>>8);
016C ; CANIDM[i][1]=(unsigned char)temp2;
016C ; CANIDM[i][0]=(unsigned char)(temp2>>8);
016C ; Pass_Flag = Pass_Flag + 1;
016C ; NOP();
016C ; }
016C ; if(Pass_Flag!=0x06)
016C 80910000 lds R24,_Pass_Flag
0170 8630 cpi R24,6
0172 11F0 breq L20
0174 .dbline 82
0174 ; RESET;
0174 0C940000 jmp 0x000
0178 L20:
0178 .dbline 85
0178 ; //reset all MObs
0178 ;
0178 ; Pass_Flag = 0x00;
0178 2224 clr R2
017A 20920000 sts _Pass_Flag,R2
017E .dbline 86
017E ; for (i=0; i<15; i++)
017E 4427 clr R20
0180 2AC0 xjmp L25
0182 L22:
0182 .dbline 87
0182 ; {
0182 .dbline 88
0182 ; CANPAGE = (i<<4); //select MOb
0182 842F mov R24,R20
0184 8F70 andi R24,#0x0F
0186 8295 swap R24
0188 EDEE ldi R30,237
018A F0E0 ldi R31,0
018C 8083 std z+0,R24
018E .dbline 89
018E ; CANCDMOB = 0; //disable MOb
018E 2224 clr R2
0190 EFEE ldi R30,239
0192 2082 std z+0,R2
0194 .dbline 90
0194 ; CANSTMOB = 0; //clear status
0194 EEEE ldi R30,238
0196 2082 std z+0,R2
0198 .dbline 91
0198 ; CANIDT1 = 0; //clear ID
0198 E3EF ldi R30,243
019A 2082 std z+0,R2
019C .dbline 92
019C ; CANIDT2 = 0;
019C E2EF ldi R30,242
019E 2082 std z+0,R2
01A0 .dbline 93
01A0 ; CANIDT3 = 0;
01A0 E1EF ldi R30,241
01A2 2082 std z+0,R2
01A4 .dbline 94
01A4 ; CANIDT4 = 0;
01A4 E0EF ldi R30,240
01A6 2082 std z+0,R2
01A8 .dbline 95
01A8 ; CANIDM1 = 0; //clear mask
01A8 E7EF ldi R30,247
01AA 2082 std z+0,R2
01AC .dbline 96
01AC ; CANIDM2 = 0;
01AC E6EF ldi R30,246
01AE 2082 std z+0,R2
01B0 .dbline 97
01B0 ; CANIDM3 = 0;
01B0 E5EF ldi R30,245
01B2 2082 std z+0,R2
01B4 .dbline 98
01B4 ; CANIDM4 = 0;
01B4 E4EF ldi R30,244
01B6 2082 std z+0,R2
01B8 .dbline 99
01B8 ; for (j=0; j<8; j++)
01B8 6627 clr R22
01BA 05C0 xjmp L29
01BC L26:
01BC .dbline 100
01BC 2224 clr R2
01BE EAEF ldi R30,250
01C0 F0E0 ldi R31,0
01C2 2082 std z+0,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -