📄 main.lss
字号:
//**************************************************************************
void tmCreateMsg( TFrame *Frame)
{
unsigned char *pMsg = Frame->msg;
uint16_t ck;
//添加帧头
myCopy( F_HEAD_STR, pMsg, 0, F_HEAD_LENGTH);
pMsg += F_HEAD_LENGTH;
Frame->msglen = F_HEAD_LENGTH;
//添加ID
myCopy( BasicPara.TM_Time, pMsg, 0, TM_TIMELENGTH);
pMsg += TM_TIMELENGTH;
Frame->msglen += TM_TIMELENGTH;
myCopy( BasicPara.TM_type, pMsg, 0, TM_TYPELENGTH);
pMsg += TM_TYPELENGTH;
Frame->msglen += TM_TYPELENGTH;
myCopy( BasicPara.TM_id, pMsg, 0, TM_IDLENGTH);
pMsg += TM_IDLENGTH;
Frame->msglen += TM_IDLENGTH;
//添加分段
*pMsg++ = '0';
Frame->msglen++;
//添加帧长
*pMsg++ = '0';
Frame->msglen++;
//添加帧主类型
*pMsg++ = Frame->type;
Frame->msglen++;
//添加帧子类型
*pMsg++ = Frame->code;
Frame->msglen++;
//添加数据段
switch (Frame->type)
{
case F_TYPE_RESPOND:
switch(Frame->code)
{
//注册消息
case F_CODE_LOGIN:
Frame->msglen +=tmLoginMsg(pMsg);
break;
//车辆状态消息
case F_CODE_CARSTATE:
Frame->msglen +=tmCarStateMsg(pMsg);
break;
//工作参数查询响应消息
case F_CODE_GETWORKPARA:
Frame->msglen +=tmGetWorkParaMsg(pMsg);
break;
//工作参数设定响应消息
case F_CODE_SETWORKPARA:
Frame->msglen +=tmGetWorkParaMsg(pMsg);
break;
//工作状态查询响应消息
case F_CODE_GETWORKSTATE:
Frame->msglen +=tmGetWorkStateMsg(pMsg);
break;
//工作状态设定响应消息
case F_CODE_SETWORKSTATE:
Frame->msglen +=tmGetWorkStateMsg(pMsg);
break;
}
break;
case F_TYPE_NOTE:break;
}
//计算校验和
ck = cksum(Frame->msg, Frame->msglen);
Frame->msg[Frame->msglen++] = ck / 256;
Frame->msg[Frame->msglen++] = ck % 256;
Frame->msg[F_LENGTH_BEGIN] = Frame->msglen;
}
//**************************************************************************
//从source的beginindex开始拷贝degits字节到dest
//输入:source=源字符串;beginindex=起始位置(从0开始算)
// dest=目标字符串; degits=请求字节数
//返回:实际拷贝的字节数
//dest以'\0'结束
//**************************************************************************
int myCopy(char *source , char *dest , int beginindex ,int degits)
{
int n ;
int len ;
len = strlen(source) ;
if (degits>=(len-beginindex))
{
for(n=beginindex;n<len;n++)
*(dest++)=source[n];
*dest='\0';
return (len-beginindex) ;
}else
{
for(n=beginindex;n<(degits+beginindex);n++)
*(dest++)=source[n];
*dest='\0';
return degits ;
}
}
//***************************************************************************
//寻找字符c在PStr中第Num次出现的位置
//返回: =-1 不存在
// >-1 c在PStr中第Num次出现的位置
//**************************************************************************
int FindeCharInStr ( char* PStr , int nSrcLength ,int cNum , char c )
{
1be: fc 01 movw r30, r24
1c0: 92 2f mov r25, r18
int i ,FindeCharInStr = -1 ;
1c2: 2f ef ldi r18, 0xFF ; 255
1c4: 3f ef ldi r19, 0xFF ; 255
for(i = 0 ; i<nSrcLength;i++ , PStr++)
1c6: a0 e0 ldi r26, 0x00 ; 0
1c8: b0 e0 ldi r27, 0x00 ; 0
1ca: a6 17 cp r26, r22
1cc: b7 07 cpc r27, r23
1ce: 6c f4 brge .+26 ; 0x1ea <FindeCharInStr+0x2c>
{
if (*PStr==c)
1d0: 80 81 ld r24, Z
1d2: 89 17 cp r24, r25
1d4: 39 f4 brne .+14 ; 0x1e4 <FindeCharInStr+0x26>
{
cNum-- ;
1d6: 41 50 subi r20, 0x01 ; 1
1d8: 50 40 sbci r21, 0x00 ; 0
if (cNum < 1 )
1da: 14 16 cp r1, r20
1dc: 15 06 cpc r1, r21
1de: 14 f0 brlt .+4 ; 0x1e4 <FindeCharInStr+0x26>
{
FindeCharInStr = i ;
1e0: 9d 01 movw r18, r26
break ;
1e2: 03 c0 rjmp .+6 ; 0x1ea <FindeCharInStr+0x2c>
1e4: 11 96 adiw r26, 0x01 ; 1
1e6: 31 96 adiw r30, 0x01 ; 1
1e8: f0 cf rjmp .-32 ; 0x1ca <FindeCharInStr+0xc>
}
}
}
return FindeCharInStr ;
}
1ea: c9 01 movw r24, r18
1ec: 08 95 ret
000001ee <tmLoginMsg>:
1ee: ef 92 push r14
1f0: ff 92 push r15
1f2: 0f 93 push r16
1f4: 1f 93 push r17
1f6: 7c 01 movw r14, r24
1f8: 06 e9 ldi r16, 0x96 ; 150
1fa: 17 e0 ldi r17, 0x07 ; 7
1fc: 1f 93 push r17
1fe: 0f 93 push r16
200: 9f 93 push r25
202: 8f 93 push r24
204: 0e 94 3b 1c call 0x3876 <sprintf>
208: 26 e0 ldi r18, 0x06 ; 6
20a: 30 e0 ldi r19, 0x00 ; 0
20c: e2 0e add r14, r18
20e: f3 1e adc r15, r19
210: 09 5f subi r16, 0xF9 ; 249
212: 1f 4f sbci r17, 0xFF ; 255
214: 1f 93 push r17
216: 0f 93 push r16
218: ff 92 push r15
21a: ef 92 push r14
21c: 0e 94 3b 1c call 0x3876 <sprintf>
220: 84 e0 ldi r24, 0x04 ; 4
222: 90 e0 ldi r25, 0x00 ; 0
224: e8 0e add r14, r24
226: f9 1e adc r15, r25
228: 0b 5f subi r16, 0xFB ; 251
22a: 1f 4f sbci r17, 0xFF ; 255
22c: 1f 93 push r17
22e: 0f 93 push r16
230: ff 92 push r15
232: ef 92 push r14
234: 0e 94 3b 1c call 0x3876 <sprintf>
238: 80 ef ldi r24, 0xF0 ; 240
23a: 9f ef ldi r25, 0xFF ; 255
23c: 90 95 com r25
23e: 81 95 neg r24
240: 9f 4f sbci r25, 0xFF ; 255
242: 2d b7 in r18, 0x3d ; 61
244: 3e b7 in r19, 0x3e ; 62
246: 24 5f subi r18, 0xF4 ; 244
248: 3f 4f sbci r19, 0xFF ; 255
24a: 0f b6 in r0, 0x3f ; 63
24c: f8 94 cli
24e: 3e bf out 0x3e, r19 ; 62
250: 0f be out 0x3f, r0 ; 63
252: 2d bf out 0x3d, r18 ; 61
254: 1f 91 pop r17
256: 0f 91 pop r16
258: ff 90 pop r15
25a: ef 90 pop r14
25c: 08 95 ret
0000025e <myCopy>:
25e: cf 93 push r28
260: df 93 push r29
262: dc 01 movw r26, r24
264: eb 01 movw r28, r22
266: fc 01 movw r30, r24
268: 01 90 ld r0, Z+
26a: 00 20 and r0, r0
26c: e9 f7 brne .-6 ; 0x268 <myCopy+0xa>
26e: 31 97 sbiw r30, 0x01 ; 1
270: e8 1b sub r30, r24
272: f9 0b sbc r31, r25
274: bf 01 movw r22, r30
276: 64 1b sub r22, r20
278: 75 0b sbc r23, r21
27a: 26 17 cp r18, r22
27c: 37 07 cpc r19, r23
27e: 7c f0 brlt .+30 ; 0x29e <myCopy+0x40>
280: 4e 17 cp r20, r30
282: 5f 07 cpc r21, r31
284: 4c f4 brge .+18 ; 0x298 <myCopy+0x3a>
286: a4 0f add r26, r20
288: b5 1f adc r27, r21
28a: 8d 91 ld r24, X+
28c: 89 93 st Y+, r24
28e: 4f 5f subi r20, 0xFF ; 255
290: 5f 4f sbci r21, 0xFF ; 255
292: 4e 17 cp r20, r30
294: 5f 07 cpc r21, r31
296: cc f3 brlt .-14 ; 0x28a <myCopy+0x2c>
298: 18 82 st Y, r1
29a: 9b 01 movw r18, r22
29c: 11 c0 rjmp .+34 ; 0x2c0 <myCopy+0x62>
29e: b9 01 movw r22, r18
2a0: 64 0f add r22, r20
2a2: 75 1f adc r23, r21
2a4: 46 17 cp r20, r22
2a6: 57 07 cpc r21, r23
2a8: 54 f4 brge .+20 ; 0x2be <myCopy+0x60>
2aa: fa 01 movw r30, r20
2ac: e8 0f add r30, r24
2ae: f9 1f adc r31, r25
2b0: 81 91 ld r24, Z+
2b2: 89 93 st Y+, r24
2b4: 4f 5f subi r20, 0xFF ; 255
2b6: 5f 4f sbci r21, 0xFF ; 255
2b8: 46 17 cp r20, r22
2ba: 57 07 cpc r21, r23
2bc: cc f3 brlt .-14 ; 0x2b0 <myCopy+0x52>
2be: 18 82 st Y, r1
2c0: c9 01 movw r24, r18
2c2: df 91 pop r29
2c4: cf 91 pop r28
2c6: 08 95 ret
000002c8 <centSetWorkPara>:
2c8: cf 92 push r12
2ca: df 92 push r13
2cc: ef 92 push r14
2ce: ff 92 push r15
2d0: 0f 93 push r16
2d2: 1f 93 push r17
2d4: cf 93 push r28
2d6: df 93 push r29
2d8: ec 01 movw r28, r24
2da: 6b 01 movw r12, r22
2dc: ee 24 eor r14, r14
2de: ff 24 eor r15, r15
2e0: ec 14 cp r14, r12
2e2: fd 04 cpc r15, r13
2e4: 0c f0 brlt .+2 ; 0x2e8 <centSetWorkPara+0x20>
2e6: 37 c1 rjmp .+622 ; 0x556 <centSetWorkPara+0x28e>
2e8: 88 81 ld r24, Y
2ea: 99 27 eor r25, r25
2ec: 84 30 cpi r24, 0x04 ; 4
2ee: 91 05 cpc r25, r1
2f0: 09 f4 brne .+2 ; 0x2f4 <centSetWorkPara+0x2c>
2f2: 6e c0 rjmp .+220 ; 0x3d0 <centSetWorkPara+0x108>
2f4: 85 30 cpi r24, 0x05 ; 5
2f6: 91 05 cpc r25, r1
2f8: 84 f4 brge .+32 ; 0x31a <centSetWorkPara+0x52>
2fa: 81 30 cpi r24, 0x01 ; 1
2fc: 91 05 cpc r25, r1
2fe: 59 f1 breq .+86 ; 0x356 <centSetWorkPara+0x8e>
300: 82 30 cpi r24, 0x02 ; 2
302: 91 05 cpc r25, r1
304: 1c f4 brge .+6 ; 0x30c <centSetWorkPara+0x44>
306: 89 2b or r24, r25
308: f9 f0 breq .+62 ; 0x348 <centSetWorkPara+0x80>
30a: 28 c1 rjmp .+592 ; 0x55c <centSetWorkPara+0x294>
30c: 82 30 cpi r24, 0x02 ; 2
30e: 91 05 cpc r25, r1
310: 81 f1 breq .+96 ; 0x372 <centSetWorkPara+0xaa>
312: 03 97 sbiw r24, 0x03 ; 3
314: 09 f4 brne .+2 ; 0x318 <centSetWorkPara+0x50>
316: 47 c0 rjmp .+142 ; 0x3a6 <centSetWorkPara+0xde>
318: 21 c1 rjmp .+578 ; 0x55c <centSetWorkPara+0x294>
31a: 87 30 cpi r24, 0x07 ; 7
31c: 91 05 cpc r25, r1
31e: 09 f4 brne .+2 ; 0x322 <centSetWorkPara+0x5a>
320: 81 c0 rjmp .+258 ; 0x424 <centSetWorkPara+0x15c>
322: 88 30 cpi r24, 0x08 ; 8
324: 91 05 cpc r25, r1
326: 44 f4 brge .+16 ; 0x338 <centSetWorkPara+0x70>
328: 85 30 cpi r24, 0x05 ; 5
32a: 91 05 cpc r25, r1
32c: 09 f4 brne .+2 ; 0x330 <centSetWorkPara+0x68>
32e: 5d c0 rjmp .+186 ; 0x3ea <centSetWorkPara+0x122>
330: 06 97 sbiw r24, 0x06 ; 6
332: 09 f4 brne .+2 ; 0x336 <centSetWorkPara+0x6e>
334: 6f c0 rjmp .+222 ; 0x414 <centSetWorkPara+0x14c>
336: 12 c1 rjmp .+548 ; 0x55c <centSetWorkPara+0x294>
338: 88 30 cpi r24, 0x08 ; 8
33a: 91 05 cpc r25, r1
33c: 09 f4 brne .+2 ; 0x340 <centSetWorkPara+0x78>
33e: 7b c0 rjmp .+246 ; 0x436 <centSetWorkPara+0x16e>
340: 09 97 sbiw r24, 0x09 ; 9
342: 09 f4 brne .+2 ; 0x346 <centSetWorkPara+0x7e>
344: 80 c0 rjmp .+256 ; 0x446 <centSetWorkPara+0x17e>
346: 0a c1 rjmp .+532 ; 0x55c <centSetWorkPara+0x294>
348: 21 96 adiw r28, 0x01 ; 1
34a: 89 91 ld r24, Y+
34c: 80 93 a9 07 sts 0x07A9, r24
350: 82 e0 ldi r24, 0x02 ; 2
352: 90 e0 ldi r25, 0x00 ; 0
354: fd c0 rjmp .+506 ; 0x550 <centSetWorkPara+0x288>
356: 21 96 adiw r28, 0x01 ; 1
358: 2d e0 ldi r18, 0x0D ; 13
35a: 30 e0 ldi r19, 0x00 ; 0
35c: 40 e0 ldi r20, 0x00 ; 0
35e: 50 e0 ldi r21, 0x00 ; 0
360: 6a ea ldi r22, 0xAA ; 170
362: 77 e0 ldi r23, 0x07 ; 7
364: ce 01 movw r24, r28
366: 0e 94 2f 01 call 0x25e <myCopy>
36a: 2d 96 adiw r28, 0x0d ; 13
36c: 8e e0 ldi r24, 0x0E ; 14
36e: 90 e0 ldi r25, 0x00 ; 0
370: ef c0 rjmp .+478 ; 0x550 <centSetWorkPara+0x288>
372: 21 96 adiw r28, 0x01 ; 1
374: 24 e0 ldi r18, 0x04 ; 4
376: 30 e0 ldi r19, 0x00 ; 0
378: 40 e0 ldi r20, 0x00 ; 0
37a: 50 e0 ldi r21, 0x00 ; 0
37c: 68 eb ldi r22, 0xB8 ; 184
37e: 77 e0 ldi r23, 0x07 ; 7
380: ce 01 movw r24, r28
382: 0e 94 2f 01 call 0x25e <myCopy>
386: 24 96 adiw r28, 0x04 ; 4
388: 88 81 ld r24, Y
38a: 99 27 eor r25, r25
38c: 98 2f mov r25, r24
38e: 88 27 eor r24, r24
390: 29 81 ldd r18, Y+1 ; 0x01
392: 82 0f add r24, r18
394: 91 1d adc r25, r1
396: 90 93 c1 07 sts 0x07C1, r25
39a: 80 93 c0 07 sts 0x07C0, r24
39e: 22 96 adiw r28, 0x02 ; 2
3a0: 87 e0 ldi r24, 0x07 ; 7
3a2: 90 e0 ldi r25, 0x00 ; 0
3a4: d5 c0 rjmp .+426 ; 0x550 <centSetWorkPara+0x288>
3a6: 21 96 adiw r28, 0x01 ; 1
3a8: 88 81 ld r24, Y
3aa: 99 27 eor r25, r25
3ac: 98 2f mov r25, r24
3ae: 88 27 eor r24, r24
3b0: 29 81 ldd r18, Y+1 ; 0x01
3b2: 82 0f add r24, r18
3b4: 91 1d adc r25, r1
3b6: 90 93 15 07 sts 0x0715, r25
3ba: 80 93 14 07 sts 0x0714, r24
3be: 90 93 19 07 sts 0x0719, r25
3c2: 80 93 18 07 sts 0x0718, r24
3c6: 22 96 adiw r28, 0x02 ; 2
3c8: 83 e0 ldi r24, 0x03 ; 3
3ca: 90 e0 ldi r25, 0x00 ; 0
3cc: e8 0e add r14, r24
3ce: f9 1e adc r15, r25
3d0: 21 96 adiw r28, 0x01 ; 1
3d2: 88 81 ld r24, Y
3d4: 99 27 eor r25, r25
3d6: 98 2f mov r25, r24
3d8: 88 27 eor r24, r24
3da: 29 81 ldd r18, Y+1 ; 0x01
3dc: 82 0f add r24, r18
3de: 91 1d adc r25, r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -