📄 结点1.lst
字号:
11E 2422 CLR R2
11F 9220 0100 STS CS,R2
(0184) switch (CS)
121 9140 0100 LDS R20,CS
123 2755 CLR R21
124 3040 CPI R20,0
125 0745 CPC R20,R21
126 F029 BEQ 0x012C
127 3041 CPI R20,1
128 E0E0 LDI R30,0
129 075E CPC R21,R30
12A F021 BEQ 0x012F
12B C005 RJMP 0x0131
(0185) {
(0186) case 0:
(0187) CS2_OFF();
12C 9A46 SBI 0x08,6
(0188) CS1_ON();
12D 9847 CBI 0x08,7
(0189) break;
12E C002 RJMP 0x0131
(0190) case 1:
(0191) CS1_OFF();
12F 9A47 SBI 0x08,7
(0192) CS2_ON();
130 9846 CBI 0x08,6
(0193) break;
(0194) }
(0195) PORTA = ~ExChange(DISPLAY_CODE(CS));
131 9100 0100 LDS R16,CS
133 940E 02E1 CALL _DISPLAY_CODE
135 DF7E RCALL _ExChange
136 2E20 MOV R2,R16
137 9420 COM R2
138 B822 OUT 0x02,R2
139 9159 LD R21,Y+
13A 9149 LD R20,Y+
13B 9009 LD R0,Y+
13C BE0F OUT 0x3F,R0
13D 91F9 LD R31,Y+
13E 91E9 LD R30,Y+
13F 91B9 LD R27,Y+
140 91A9 LD R26,Y+
141 9199 LD R25,Y+
142 9189 LD R24,Y+
143 9139 LD R19,Y+
144 9129 LD R18,Y+
145 9119 LD R17,Y+
146 9109 LD R16,Y+
147 9099 LD R9,Y+
148 9089 LD R8,Y+
149 9079 LD R7,Y+
14A 9069 LD R6,Y+
14B 9059 LD R5,Y+
14C 9049 LD R4,Y+
14D 9039 LD R3,Y+
14E 9029 LD R2,Y+
14F 9019 LD R1,Y+
150 9009 LD R0,Y+
151 9518 RETI
_TIMER2_COMP_ISR:
152 922A ST R2,-Y
153 938A ST R24,-Y
154 939A ST R25,-Y
155 B62F IN R2,0x3F
156 922A ST R2,-Y
(0196) }
(0197)
(0198)
(0199) #pragma interrupt_handler TIMER2_COMP_ISR:iv_TIMER2_COMP
(0200) void TIMER2_COMP_ISR(void)
(0201) {
(0202) if (!send_mark)
157 9020 0107 LDS R2,send_mark
159 2022 TST R2
15A F469 BNE 0x0168
(0203) {
(0204) send_time++;
15B 9180 0109 LDS R24,send_time
15D 5F8F SUBI R24,0xFF
15E 9380 0109 STS send_time,R24
(0205) if (send_time >= 100)
160 3684 CPI R24,0x64
161 F030 BCS 0x0168
(0206) {
(0207) send_mark = TRUE;
162 E081 LDI R24,1
163 9380 0107 STS send_mark,R24
(0208) send_time = 0;
165 2422 CLR R2
166 9220 0109 STS send_time,R2
(0209) }
(0210) }
(0211) if (!display_mark)
168 9020 0108 LDS R2,display_mark
16A 2022 TST R2
16B F469 BNE 0x0179
(0212) {
(0213) display_time++;
16C 9180 010A LDS R24,display_time
16E 5F8F SUBI R24,0xFF
16F 9380 010A STS display_time,R24
(0214) if (display_time >= 25)
171 3189 CPI R24,0x19
172 F030 BCS 0x0179
(0215) {
(0216) display_time = 0;
173 2422 CLR R2
174 9220 010A STS display_time,R2
(0217) display_mark = TRUE;
176 E081 LDI R24,1
177 9380 0108 STS display_mark,R24
(0218) }
(0219) }
179 9029 LD R2,Y+
17A BE2F OUT 0x3F,R2
17B 9199 LD R25,Y+
17C 9189 LD R24,Y+
17D 9029 LD R2,Y+
17E 9518 RETI
(0220) }
(0221)
(0222)
(0223) void CHA_Init(void)
(0224) {
(0225) CHA++;
_CHA_Init:
17F 9180 0101 LDS R24,CHA
181 5F8F SUBI R24,0xFF
182 9380 0101 STS CHA,R24
(0226) if (CHA >= 100)
184 9180 0101 LDS R24,CHA
186 3684 CPI R24,0x64
187 F018 BCS 0x018B
(0227) CHA = 0;
188 2422 CLR R2
189 9220 0101 STS CHA,R2
18B 9508 RET
(0228) }
(0229)
(0230) void main(void)
(0231) {
(0232) uint8 i,len;
(0233)
(0234) CLI();
_main:
len --> R22
i --> R20
18C 94F8 BCLR 7
(0235) PORT_Init();
18D DEEB RCALL _PORT_Init
(0236) TIMER0_Init();
18E DF02 RCALL _TIMER0_Init
(0237) TIMER2_Init();
18F DF0F RCALL _TIMER2_Init
(0238) USART1_Init();
190 940E 0250 CALL _USART1_Init
(0239) TJA1040_DISABLE();
192 9A5C SBI 0x0B,4
(0240) NOP();
193 0000 NOP
(0241) NOP();
194 0000 NOP
(0242) TJA1040_ENABLE();
195 985C CBI 0x0B,4
(0243) NOP();
196 0000 NOP
(0244) NOP();
197 0000 NOP
(0245) CAN_Init();
198 940E 0219 CALL _CAN_Init
(0246) Watchdog_Init();
19A DF14 RCALL _Watchdog_Init
(0247) SEI();
19B 9478 BSET 7
19C C052 RJMP 0x01EF
(0248) /*
(0249) 00000000: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
(0250) 00000010: 02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00 .B..............
(0251) 00000020: 02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00 .C..............
(0252) 00000030: 02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00 .D..............
(0253) 00000040: 02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00 .E..............
(0254) 00000050: 02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00 .F..............
(0255) 00000060: 02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00 .G..............
(0256) 00000070: 02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .H..............
(0257) 00000080: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
(0258) 00000090: 02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00 .B..............
(0259) 000000A0: 02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00 .C..............
(0260) 000000B0: 02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00 .D..............
(0261) 000000C0: 02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00 .E..............
(0262) 000000D0: 02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00 .F..............
(0263) 000000E0: 02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00 .G..............
(0264) 000000F0: 02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .H..............
(0265) 00000100: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
(0266) 00000110: 02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00 .B..............
(0267) 00000120: 02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00 .C..............
(0268) 00000130: 02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00 .D..............
(0269) 00000140: 02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00 .E..............
(0270) 00000150: 02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00 .F..............
(0271) 00000160: 02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00 .G..............
(0272) 00000170: 02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .H..............
(0273) 00000180: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
(0274) 00000190: 02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00 .B..............
(0275) 000001A0: 02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00 .C..............
(0276) 000001B0: 02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00 .D..............
(0277) 000001C0: 02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00 .E..............
(0278) 000001D0: 02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00 .F..............
(0279) 000001E0: 02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00 .G..............
(0280) 000001F0: 02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .H..............
(0281) 00000200: 02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00 .A..............
(0282) */
(0283) while (1)
(0284) {
(0285) CANPAGE = 0x00;
19D 2422 CLR R2
19E 9220 00ED STS 0x00ED,R2
(0286) if (CANSTMOB & (1 << RXOK))
1A0 9020 00EE LDS R2,0x00EE
1A2 FE25 SBRS R2,5
1A3 C03D RJMP 0x01E1
(0287) {
(0288) CANSTMOB &= ~(1 << RXOK);
1A4 9180 00EE LDS R24,0x00EE
1A6 7D8F ANDI R24,0xDF
1A7 9380 00EE STS 0x00EE,R24
(0289) for (i = 0 ; i < 16 ; i++)
1A9 2744 CLR R20
1AA C009 RJMP 0x01B4
(0290) rec_Buf[i] = 0x00;
1AB E08D LDI R24,0xD
1AC E091 LDI R25,1
1AD 2FE4 MOV R30,R20
1AE 27FF CLR R31
1AF 0FE8 ADD R30,R24
1B0 1FF9 ADC R31,R25
1B1 2422 CLR R2
1B2 8220 STD Z+0,R2
1B3 9543 INC R20
1B4 3140 CPI R20,0x10
1B5 F3A8 BCS 0x01AB
(0291) rec_Buf[0] = CANIDT1;
1B6 9020 00F3 LDS R2,0x00F3
1B8 9220 010D STS rec_Buf,R2
(0292) rec_Buf[1] = CANIDT2;
1BA 9020 00F2 LDS R2,0x00F2
1BC 9220 010E STS rec_Buf+1,R2
(0293) rec_Buf[2] = CANIDT4;
1BE 9020 00F0 LDS R2,0x00F0
1C0 9220 010F STS rec_Buf+2,R2
(0294) if (rec_Buf[2] & 0x02)
1C2 FE21 SBRS R2,1
1C3 C004 RJMP 0x01C8
(0295) rec_Buf[2] = 1; // remote frame
1C4 E081 LDI R24,1
1C5 9380 010F STS rec_Buf+2,R24
1C7 C003 RJMP 0x01CB
(0296) else
(0297) rec_Buf[2] = 0; // data frame
1C8 2422 CLR R2
1C9 9220 010F STS rec_Buf+2,R2
(0298) len = CANCDMOB & 0x0F;
1CB 9160 00EF LDS R22,0x00EF
1CD 706F ANDI R22,0xF
(0299) for (i = 0 ; i < len ; i++)
1CE 2744 CLR R20
1CF C00A RJMP 0x01DA
(0300) rec_Buf[3+i] = CANMSG;
1D0 E180 LDI R24,0x10
1D1 E091 LDI R25,1
1D2 2FE4 MOV R30,R20
1D3 27FF CLR R31
1D4 0FE8 ADD R30,R24
1D5 1FF9 ADC R31,R25
1D6 9020 00FA LDS R2,0x00FA
1D8 8220 STD Z+0,R2
1D9 9543 INC R20
1DA 1746 CP R20,R22
1DB F3A0 BCS 0x01D0
(0301) USART1_Begin_Send();
1DC 940E 0261 CALL _USART1_Begin_Send
(0302) CANCDMOB = 0x88;
1DE E888 LDI R24,0x88
1DF 9380 00EF STS 0x00EF,R24
(0303) }
(0304) CHA = CANGIT & 0x7F;
1E1 9180 00DA LDS R24,0x00DA
1E3 778F ANDI R24,0x7F
1E4 9380 0101 STS CHA,R24
(0305) // DISPLAY_LED();
(0306) // if (display_mark)
(0307) {
(0308) display_mark = FALSE;
1E6 2422 CLR R2
1E7 9220 0108 STS display_mark,R2
(0309) DISPLAY_Init(CHA);
1E9 9100 0101 LDS R16,CHA
1EB 2711 CLR R17
1EC 940E 02BA CALL _DISPLAY_Init
(0310) }
(0311) WDR();
1EE 95A8 WDR
1EF CFAD RJMP 0x019D
1F0 9508 RET
FILE: D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\CAN.C
(0001) //////////////////////////////////////////////////////////
(0002) //单向查询
(0003) //说明:
(0004) // 本程序是结点1,只负责接收
(0005) //////////////////////////////////////////////////////////
(0006) #define _CAN_H
(0007) #include "AT90CAN128.H"
(0008)
(0009) #define SIT0 0
(0010) #define SIT1 1
(0011) #define SIT2 2
(0012) #define SIT3 3
(0013) #define SIT4 4
(0014) #define SIT5 5
(0015) #define SIT6 6
(0016) #define SIT7 7
(0017)
(0018) void CAN_ClrMailBox(void)
(0019) {
(0020) uint8 mob_channel;
(0021) uint8 mob_data;
(0022)
(0023) for (mob_channel = 0 ; mob_channel < 15 ; mob_channel++)
_CAN_ClrMailBox:
mob_channel --> R16
mob_data --> R18
1F1 2700 CLR R16
1F2 C023 RJMP 0x0216
(0024) {
(0025) CANPAGE = (mob_channel << 4);
1F3 2F80 MOV R24,R16
1F4 708F ANDI R24,0xF
1F5 9582 SWAP R24
1F6 9380 00ED STS 0x00ED,R24
(0026) CANIDT4 = 0;
1F8 2422 CLR R2
1F9 9220 00F0 STS 0x00F0,R2
(0027) CANIDT3 = 0;
1FB 9220 00F1 STS 0x00F1,R2
(0028) CANIDT2 = 0;
1FD 9220 00F2 STS 0x00F2,R2
(0029) CANIDT1 = 0;
1FF 9220 00F3 STS 0x00F3,R2
(0030) CANIDM4 = 0;
201 9220 00F4 STS 0x00F4,R2
(0031) CANIDM3 = 0;
203 9220 00F5 STS 0x00F5,R2
(0032) CANIDM2 = 0;
205 9220 00F6 STS 0x00F6,R2
(0033) CANIDM1 = 0;
207 9220 00F7 STS 0x00F7,R2
(0034) CANSTMOB = 0;
209 9220 00EE STS 0x00EE,R2
(0035) CANCDMOB = 0;
20B 9220 00EF STS 0x00EF,R2
(0036) for (mob_data = 0; mob_data < 8; mob_data++)
20D 2722 CLR R18
20E C004 RJMP 0x0213
(0037) CANMSG = 0;
20F 2422 CLR R2
210 9220 00FA STS 0x00FA,R2
212 9523 INC R18
213 3028 CPI R18,0x8
214 F3D0 BCS 0x020F
215 9503 INC R16
216 300F CPI R16,0xF
217 F2D8 BCS 0x01F3
218 9508 RET
(0038) }
(0039) }
(0040)
(0041) void CAN_Init(void)
(0042) {
(0043) uint8 i;
(0044)
(0045) CANGCON = BIT(SWRES);
_CAN_Init:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -