📄 结点1.lst
字号:
i --> Y,+1
219 E081 LDI R24,1
21A 9380 00D8 STS 0x00D8,R24
(0046) while (CANGSTA & BIT(ENFG));
21C 9020 00D9 LDS R2,0x00D9
21E FC22 SBRC R2,2
21F CFFC RJMP 0x021C
(0047) CAN_ClrMailBox();
220 DFD0 RCALL _CAN_ClrMailBox
(0048) CANBT1 = 0x02;
221 E082 LDI R24,2
222 9380 00E2 STS 0x00E2,R24
(0049) CANBT2 = 0x04;
224 E084 LDI R24,4
225 9380 00E3 STS 0x00E3,R24
(0050) CANBT3 = 0x13;
227 E183 LDI R24,0x13
228 9380 00E4 STS 0x00E4,R24
(0051) CANTCON = 0xFF;
22A EF8F LDI R24,0xFF
22B 9380 00E5 STS 0x00E5,R24
(0052)
(0053) CANPAGE = 0x00;
22D 2422 CLR R2
22E 9220 00ED STS 0x00ED,R2
(0054) CANSTMOB = 0x00;
230 9220 00EE STS 0x00EE,R2
(0055) CANIDT4 = 0x00;
232 9220 00F0 STS 0x00F0,R2
(0056) CANIDT3 = 0x00;
234 9220 00F1 STS 0x00F1,R2
(0057) CANIDT2 = 0x40;
236 E480 LDI R24,0x40
237 9380 00F2 STS 0x00F2,R24
(0058) CANIDT1 = 0x02;
239 E082 LDI R24,2
23A 9380 00F3 STS 0x00F3,R24
(0059)
(0060) CANIDM4 = 0xFF;
23C EF8F LDI R24,0xFF
23D 9380 00F4 STS 0x00F4,R24
(0061) CANIDM3 = 0xFF;
23F 9380 00F5 STS 0x00F5,R24
(0062) CANIDM2 = 0xFF;
241 9380 00F6 STS 0x00F6,R24
(0063) CANIDM1 = 0xFF;
243 9380 00F7 STS 0x00F7,R24
(0064) CANCDMOB = 0x88;
245 E888 LDI R24,0x88
246 9380 00EF STS 0x00EF,R24
(0065)
(0066) CANGCON = 0x02;
248 E082 LDI R24,2
249 9380 00D8 STS 0x00D8,R24
(0067) while (!(CANGSTA & BIT(ENFG)));
24B 9020 00D9 LDS R2,0x00D9
24D FE22 SBRS R2,2
24E CFFC RJMP 0x024B
24F 9508 RET
FILE: D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
(0001) #define _USART1_H
(0002) #include "AT90CAN128.H"
(0003)
(0004) uint8 rec_Buf[16];
(0005) uint8 volatile USART1_sendPosi =0;
(0006) uint8 volatile USART1_sendCount=0;
(0007)
(0008) //UART1 initialize
(0009) // desired baud rate:9600
(0010) // actual baud rate:9615 (0.2%)
(0011) // char size: 8 bit
(0012) // parity: Disabled
(0013) void USART1_Init(void)
(0014) {
(0015) uint8 i;
(0016)
(0017) UCSR1B = 0x00; //disable while setting baud rate
_USART1_Init:
i --> Y,+1
250 2422 CLR R2
251 9220 00C9 STS 0x00C9,R2
(0018) UCSR1A = 0x00;
253 9220 00C8 STS 0x00C8,R2
(0019) UCSR1C = 0x06;
255 E086 LDI R24,6
256 9380 00CA STS 0x00CA,R24
(0020) UBRR1L = 0x33; //set baud rate lo单片机内部晶振=8M
258 E383 LDI R24,0x33
259 9380 00CC STS 0x00CC,R24
(0021) UBRR1H = 0x00; //set baud rate hi
25B 9220 00CD STS 0x00CD,R2
(0022) UCSR1B = (1 << TXEN1) | (1 << TXCIE1);
25D E488 LDI R24,0x48
25E 9380 00C9 STS 0x00C9,R24
260 9508 RET
(0023) }
(0024)
(0025)
(0026) void USART1_Begin_Send(void)
(0027) {
(0028) USART1_sendCount = 16;
_USART1_Begin_Send:
261 E180 LDI R24,0x10
262 9380 010C STS USART1_sendCount,R24
(0029) USART1_sendPosi = 0;
264 2422 CLR R2
265 9220 010B STS USART1_sendPosi,R2
(0030) UDR1 = rec_Buf[USART1_sendPosi++];
267 9020 010B LDS R2,USART1_sendPosi
269 2433 CLR R3
26A 2D82 MOV R24,R2
26B 5F8F SUBI R24,0xFF
26C 9380 010B STS USART1_sendPosi,R24
26E E08D LDI R24,0xD
26F E091 LDI R25,1
270 2DE2 MOV R30,R2
271 27FF CLR R31
272 0FE8 ADD R30,R24
273 1FF9 ADC R31,R25
274 8020 LDD R2,Z+0
275 9220 00CE STS 0x00CE,R2
277 9508 RET
_USART1_TX_ISR:
278 922A ST R2,-Y
279 923A ST R3,-Y
27A 938A ST R24,-Y
27B 939A ST R25,-Y
27C 93EA ST R30,-Y
27D 93FA ST R31,-Y
27E B62F IN R2,0x3F
27F 922A ST R2,-Y
(0031) }
(0032)
(0033)
(0034) #pragma interrupt_handler USART1_TX_ISR:iv_USART1_TX
(0035) void USART1_TX_ISR(void)
(0036) {
(0037) if (USART1_sendPosi < USART1_sendCount)
280 9020 010C LDS R2,USART1_sendCount
282 9030 010B LDS R3,USART1_sendPosi
284 1432 CP R3,R2
285 F480 BCC 0x0296
(0038) UDR1 = rec_Buf[USART1_sendPosi++];
286 9020 010B LDS R2,USART1_sendPosi
288 2433 CLR R3
289 2D82 MOV R24,R2
28A 5F8F SUBI R24,0xFF
28B 9380 010B STS USART1_sendPosi,R24
28D E08D LDI R24,0xD
28E E091 LDI R25,1
28F 2DE2 MOV R30,R2
290 27FF CLR R31
291 0FE8 ADD R30,R24
292 1FF9 ADC R31,R25
293 8020 LDD R2,Z+0
294 9220 00CE STS 0x00CE,R2
296 9029 LD R2,Y+
297 BE2F OUT 0x3F,R2
298 91F9 LD R31,Y+
299 91E9 LD R30,Y+
29A 9199 LD R25,Y+
29B 9189 LD R24,Y+
29C 9039 LD R3,Y+
29D 9029 LD R2,Y+
29E 9518 RETI
_Separate_Integer_Of_Bit:
Q --> R10
Array --> R14
num --> R12
29F 940E 0339 CALL push_xgset00FC
2A1 0179 MOVW R14,R18
2A2 0168 MOVW R12,R16
FILE: D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\DISPLAY.C
(0001) #include "AT90CAN128.H"
(0002)
(0003) uint8 dis[2];
(0004) const uint8 NUMBER_ROM[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
(0005)
(0006) void Separate_Integer_Of_Bit(int16 num,uint8 *Array)
(0007) {
(0008) int8 *Q = Array;
2A3 0157 MOVW R10,R14
(0009)
(0010) num %= 100;
2A4 E624 LDI R18,0x64
2A5 E030 LDI R19,0
2A6 0186 MOVW R16,R12
2A7 940E 02E9 CALL mod16s
2A9 0168 MOVW R12,R16
(0011) *Q++ = num / 10;
2AA E02A LDI R18,0xA
2AB E030 LDI R19,0
2AC 940E 02ED CALL div16s
2AE 01F5 MOVW R30,R10
2AF 9301 ST R16,Z+
2B0 015F MOVW R10,R30
(0012) *Q = num % 10;
2B1 E02A LDI R18,0xA
2B2 E030 LDI R19,0
2B3 0186 MOVW R16,R12
2B4 940E 02E9 CALL mod16s
2B6 01F5 MOVW R30,R10
2B7 8300 STD Z+0,R16
2B8 940C 0323 JMP pop_xgset00FC
_DISPLAY_Init:
i --> Y,+1
digit --> Y,+0
num --> R10
2BA 92AA ST R10,-Y
2BB 92BA ST R11,-Y
2BC 0158 MOVW R10,R16
2BD 9722 SBIW R28,2
(0013) }
(0014)
(0015)
(0016) ///////////////////////////////////////////////////////////////////////////////////////////////
(0017) //1.dot=0 无小数点 2.dot=1 小数点在十位数 3.dot=2 小数点在百位数 4.dot=3 小数点在千位数
(0018) ///////////////////////////////////////////////////////////////////////////////////////////////
(0019) void DISPLAY_Init(int16 num)
(0020) {
(0021) uint8 i;
(0022) uint8 digit[2];
(0023)
(0024) Separate_Integer_Of_Bit(num,digit);
2BE 019E MOVW R18,R28
2BF 0185 MOVW R16,R10
2C0 DFDE RCALL _Separate_Integer_Of_Bit
(0025) if (digit[0] > 0)
2C1 E080 LDI R24,0
2C2 8028 LDD R2,Y+0
2C3 1582 CP R24,R2
2C4 F440 BCC 0x02CD
(0026) digit[0] = NUMBER_ROM[digit[0]];
2C5 E984 LDI R24,0x94
2C6 E090 LDI R25,0
2C7 2DE2 MOV R30,R2
2C8 27FF CLR R31
2C9 0FE8 ADD R30,R24
2CA 1FF9 ADC R31,R25
2CB 9026 ELPM R2,0(Z)
2CC 8228 STD Y+0,R2
(0027) digit[1] = NUMBER_ROM[digit[1]];
2CD E984 LDI R24,0x94
2CE E090 LDI R25,0
2CF 81E9 LDD R30,Y+1
2D0 27FF CLR R31
2D1 0FE8 ADD R30,R24
2D2 1FF9 ADC R31,R25
2D3 9026 ELPM R2,1(Z)
2D4 8229 STD Y+1,R2
(0028) OS_ENTER_CRITICAL();
2D5 94F8 BCLR 7
(0029) dis[0] = digit[0];
2D6 8028 LDD R2,Y+0
2D7 9220 011D STS dis,R2
(0030) dis[1] = digit[1];
2D9 8029 LDD R2,Y+1
2DA 9220 011E STS dis+1,R2
(0031) OS_EXIT_CRITICAL();
2DC 9478 BSET 7
2DD 9622 ADIW R28,2
2DE 90B9 LD R11,Y+
2DF 90A9 LD R10,Y+
2E0 9508 RET
(0032) }
(0033)
(0034)
(0035) uint8 DISPLAY_CODE(uint8 ptr)
(0036) {
(0037) return (dis[ptr]);
FILE: <library>
_DISPLAY_CODE:
ptr --> R16
2E1 E18D LDI R24,0x1D
2E2 E091 LDI R25,1
2E3 2FE0 MOV R30,R16
2E4 27FF CLR R31
2E5 0FE8 ADD R30,R24
2E6 1FF9 ADC R31,R25
2E7 8100 LDD R16,Z+0
2E8 9508 RET
mod16s:
2E9 9468 BSET 6
2EA 92DA ST R13,-Y
2EB 2ED1 MOV R13,R17
2EC C004 RJMP 0x02F1
div16s:
2ED 94E8 BCLR 6
2EE 92DA ST R13,-Y
2EF 2ED1 MOV R13,R17
2F0 26D3 EOR R13,R19
2F1 FF17 SBRS R17,7
2F2 C004 RJMP 0x02F7
2F3 9510 COM R17
2F4 9500 COM R16
2F5 5F0F SUBI R16,0xFF
2F6 4F1F SBCI R17,0xFF
2F7 FF37 SBRS R19,7
2F8 C004 RJMP 0x02FD
2F9 9530 COM R19
2FA 9520 COM R18
2FB 5F2F SUBI R18,0xFF
2FC 4F3F SBCI R19,0xFF
2FD 940E 030A CALL xdiv16u
2FF FED7 SBRS R13,7
300 C004 RJMP 0x0305
301 9510 COM R17
302 9500 COM R16
303 5F0F SUBI R16,0xFF
304 4F1F SBCI R17,0xFF
305 90D9 LD R13,Y+
306 9508 RET
mod16u:
307 9468 BSET 6
308 C001 RJMP xdiv16u
div16u:
309 94E8 BCLR 6
xdiv16u:
30A 92EA ST R14,-Y
30B 92FA ST R15,-Y
30C 938A ST R24,-Y
30D 24EE CLR R14
30E 24FF CLR R15
30F E180 LDI R24,0x10
310 0F00 LSL R16
311 1F11 ROL R17
312 1CEE ROL R14
313 1CFF ROL R15
314 16E2 CP R14,R18
315 06F3 CPC R15,R19
316 F018 BCS 0x031A
317 1AE2 SUB R14,R18
318 0AF3 SBC R15,R19
319 9503 INC R16
31A 958A DEC R24
31B F7A1 BNE 0x0310
31C F416 BRTC 0x031F
31D 2D0E MOV R16,R14
31E 2D1F MOV R17,R15
31F 9189 LD R24,Y+
320 90F9 LD R15,Y+
321 90E9 LD R14,Y+
322 9508 RET
pop_xgset00FC:
323 90A9 LD R10,Y+
324 90B9 LD R11,Y+
325 90C9 LD R12,Y+
326 90D9 LD R13,Y+
327 90E9 LD R14,Y+
328 90F9 LD R15,Y+
329 9508 RET
pop_xgsetF0FC:
32A 90A9 LD R10,Y+
32B 90B9 LD R11,Y+
32C 90C9 LD R12,Y+
32D 90D9 LD R13,Y+
32E 90E9 LD R14,Y+
32F 90F9 LD R15,Y+
330 9149 LD R20,Y+
331 9159 LD R21,Y+
332 9169 LD R22,Y+
333 9179 LD R23,Y+
334 9508 RET
push_xgsetF0FC:
335 937A ST R23,-Y
336 936A ST R22,-Y
push_xgset30FC:
337 935A ST R21,-Y
338 934A ST R20,-Y
push_xgset00FC:
339 92FA ST R15,-Y
33A 92EA ST R14,-Y
push_xgset003C:
33B 92DA ST R13,-Y
33C 92CA ST R12,-Y
33D 92BA ST R11,-Y
33E 92AA ST R10,-Y
33F 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -