rs485_pc.lis

来自「电梯楼层采集器代码」· LIS 代码 · 共 1,613 行 · 第 1/5 页

LIS
1,613
字号
 0498 29C0              xjmp L101
 049A           X48:
 049A           X44:
 049A                   .dbline 330
 049A           ;        {
 049A                   .dbline 331
 049A           ;          count = sizeof(struct StructOfLiftSchedule) - point;
 049A 89E6              ldi R24,105
 049C 90E0              ldi R25,0
 049E 6C01              movw R12,R24
 04A0 CA18              sub R12,R10
 04A2 DB08              sbc R13,R11
 04A4                   .dbline 332
 04A4           ;          if(count< 256 - 8) p_buf->Length = count + 1;
 04A4 C601              movw R24,R12
 04A6 883F              cpi R24,248
 04A8 A0E0              ldi R26,0
 04AA 9A07              cpc R25,R26
 04AC 20F4              brsh L103
 04AE           X45:
 04AE                   .dbline 332
 04AE 0196              adiw R24,1
 04B0 9283              std z+2,R25
 04B2 8183              std z+1,R24
 04B4 05C0              xjmp L104
 04B6           L103:
 04B6                   .dbline 333
 04B6           ;          else p_buf->Length = 256 - 8;
 04B6 88EF              ldi R24,248
 04B8 90E0              ldi R25,0
 04BA FB01              movw R30,R22
 04BC 9283              std z+2,R25
 04BE 8183              std z+1,R24
 04C0           L104:
 04C0                   .dbline 334
 04C0           ;          point += LIFT_SCHEDULE_Address;
 04C0 C501              movw R24,R10
 04C2 C696              adiw R24,54
 04C4 5C01              movw R10,R24
 04C6                   .dbline 335
 04C6           ;          I2C_Initial();
 04C6 0E940000          xcall _I2C_Initial
 04CA                   .dbline 336
 04CA           ;          AT24_Read((unsigned char *)&p_buf->Data,point,p_buf->Length-1);
 04CA FB01              movw R30,R22
 04CC 8181              ldd R24,z+1
 04CE 9281              ldd R25,z+2
 04D0 0197              sbiw R24,1
 04D2 8883              std y+0,R24
 04D4 9501              movw R18,R10
 04D6 8F01              movw R16,R30
 04D8 0C5F              subi R16,252  ; offset = 4
 04DA 1F4F              sbci R17,255
 04DC 0E940000          xcall _AT24_Read
 04E0                   .dbline 337
 04E0           ;          I2C_Close();
 04E0 0E940000          xcall _I2C_Close
 04E4                   .dbline 338
 04E4           ;          communication->pc_txd = 1; 
 04E4 81E0              ldi R24,1
 04E6 FA01              movw R30,R20
 04E8 8183              std z+1,R24
 04EA                   .dbline 339
 04EA           ;        }
 04EA 02C0              xjmp L100
 04EC           L101:
 04EC                   .dbline 340
 04EC           ;        else if(TEST) CommandReply(RESP_INVALID_DATA);
 04EC 01C0              xjmp L100
 04EE           L99:
 04EE                   .dbline 342
 04EE           ;       }
 04EE           ;       else if(TEST) CommandReply(RESP_INVALID_DATA);
 04EE 00C0              xjmp L107
 04F0           L107:
 04F0           L100:
 04F0                   .dbline 343
 04F0           ;  }
 04F0           L97:
 04F0                   .dbline -2
 04F0           L96:
 04F0                   .dbline 0 ; func end
 04F0 2196              adiw R28,1
 04F2 0C940000          xjmp pop_xgsetF03C
 04F6                   .dbsym r communication 20 pS[data]
 04F6                   .dbsym r count 12 i
 04F6                   .dbsym r point 10 i
 04F6                   .dbsym r p_buf 22 pS[StructOfProtocol]
 04F6                   .dbend
 04F6                   .dbfunc e SET_AUTH_TIME _SET_AUTH_TIME fV
 04F6           ;          count -> R10,R11
 04F6           ;          point -> R22,R23
 04F6           ;          p_buf -> R20,R21
                        .even
 04F6           _SET_AUTH_TIME::
 04F6 0E940000          xcall push_xgsetF00C
 04FA 2197              sbiw R28,1
 04FC                   .dbline -1
 04FC                   .dbline 354
 04FC           ; }
 04FC           ; //------------------------------------------------------------------------------
 04FC           ; /*
 04FC           ; 15.   设电梯授权时间组 = CMD_SET_AUTH_TIME
 04FC           ; 命令码:              CMD_SET_AUTH_TIME
 04FC           ; 数据:                    内存位置                  2字节,高字节在前,值域 0 - 524   
 04FC           ;       从指定位置开始的资料,不超过250字节
 04FC           ; 正常回应:        [OK]
 04FC           ; */
 04FC           ; void SET_AUTH_TIME(void)
 04FC           ; {
 04FC                   .dbline 357
 04FC           ;  unsigned int point,count;
 04FC           ;  struct StructOfProtocol *p_buf;
 04FC           ;  p_buf = (struct StructOfProtocol *)Buffer485;
 04FC 40E0              ldi R20,<_Buffer485
 04FE 50E0              ldi R21,>_Buffer485
 0500                   .dbline 358
 0500           ;  *C51Buffer485 = *Buffer485;
 0500 20900000          lds R2,_Buffer485
 0504 20920000          sts _C51Buffer485,R2
 0508                   .dbline 359
 0508           ;  point = *(unsigned int *)p_buf->Data;
 0508 FA01              movw R30,R20
 050A 6481              ldd R22,z+4
 050C 7581              ldd R23,z+5
 050E                   .dbline 360
 050E           ;  if(point < sizeof(struct StructOfLiftSchedule))
 050E 6936              cpi R22,105
 0510 A0E0              ldi R26,0
 0512 7A07              cpc R23,R26
 0514 08F0              brlo X53
 0516 34C0              xjmp L110
 0518           X53:
 0518           X49:
 0518                   .dbline 361
 0518           ;  {
 0518                   .dbline 362
 0518           ;    count = sizeof(struct StructOfLiftSchedule) - point;
 0518 89E6              ldi R24,105
 051A 90E0              ldi R25,0
 051C 5C01              movw R10,R24
 051E A61A              sub R10,R22
 0520 B70A              sbc R11,R23
 0522                   .dbline 363
 0522           ;    p_buf->Length -= 3;
 0522 CF01              movw R24,R30
 0524 0196              adiw R24,1
 0526 FC01              movw R30,R24
 0528 8081              ldd R24,z+0
 052A 9181              ldd R25,z+1
 052C 0397              sbiw R24,3
 052E 9183              std z+1,R25
 0530 8083              std z+0,R24
 0532                   .dbline 364
 0532           ;    if(p_buf->Length&&(p_buf->Length<=count))
 0532 FA01              movw R30,R20
 0534 2180              ldd R2,z+1
 0536 3280              ldd R3,z+2
 0538 2220              tst R2
 053A 11F4              brne X50
 053C 3320              tst R3
 053E F9F0              breq L112
 0540           X50:
 0540 A214              cp R10,R2
 0542 B304              cpc R11,R3
 0544 E0F0              brlo L112
 0546           X51:
 0546                   .dbline 365
 0546           ;    {
 0546                   .dbline 366
 0546           ;     point += LIFT_SCHEDULE_Address;
 0546 6A5C              subi R22,202  ; offset = 54
 0548 7F4F              sbci R23,255
 054A                   .dbline 367
 054A           ;       I2C_Initial();
 054A 0E940000          xcall _I2C_Initial
 054E                   .dbline 368
 054E           ;     AT24_Write((unsigned char *)&p_buf->Data[2],point,p_buf->Length); 
 054E FA01              movw R30,R20
 0550 2180              ldd R2,z+1
 0552 3280              ldd R3,z+2
 0554 2882              std y+0,R2
 0556 9B01              movw R18,R22
 0558 8F01              movw R16,R30
 055A 0A5F              subi R16,250  ; offset = 6
 055C 1F4F              sbci R17,255
 055E 0E940000          xcall _AT24_Write
 0562                   .dbline 369
 0562           ;       I2C_Close();
 0562 0E940000          xcall _I2C_Close
 0566                   .dbline 370
 0566           ;     if (p_buf->Address!= 0xff) 
 0566 FA01              movw R30,R20
 0568 8081              ldd R24,z+0
 056A 8F3F              cpi R24,255
 056C 51F0              breq L111
 056E           X52:
 056E                   .dbline 371
 056E           ;       {
 056E                   .dbline 372
 056E           ;          Cyc_manage |= 0x04;//打开更新51控制板的数据
 056E 80910000          lds R24,_Cyc_manage
 0572 8460              ori R24,4
 0574 80930000          sts _Cyc_manage,R24
 0578                   .dbline 373
 0578           ;          CommandReply(RESP_CMD_OK);
 0578 01E8              ldi R16,129
 057A 42DD              xcall _CommandReply
 057C                   .dbline 374
 057C           ;        }
 057C                   .dbline 375
 057C           ;    }
 057C 02C0              xjmp L111
 057E           L112:
 057E                   .dbline 376
 057E           ;    else if(TEST && p_buf->Address != 0xff)
 057E 01C0              xjmp L111
 0580           L110:
 0580                   .dbline 379
 0580           ;        CommandReply(RESP_INVALID_DATA);
 0580           ;  }
 0580           ;  else if(TEST && p_buf->Address != 0xff)
 0580 00C0              xjmp L118
 0582           L118:
 0582           L111:
 0582                   .dbline -2
 0582           L109:
 0582                   .dbline 0 ; func end
 0582 2196              adiw R28,1
 0584 0C940000          xjmp pop_xgsetF00C
 0588                   .dbsym r count 10 i
 0588                   .dbsym r point 22 i
 0588                   .dbsym r p_buf 20 pS[StructOfProtocol]
 0588                   .dbend
 0588                   .dbfunc e GET_CONFIG _GET_CONFIG fV
 0588           ;  communication -> R20,R21
 0588           ;          p_buf -> R22,R23
                        .even
 0588           _GET_CONFIG::
 0588 0E940000          xcall push_xgsetF000
 058C 2197              sbiw R28,1
 058E                   .dbline -1
 058E                   .dbline 386
 058E           ;      CommandReply(RESP_INVALID_DATA);
 058E           ; }
 058E           ; //------------------------------------------------------------------------------
 058E           ; //------------------------------------------------------------------------------
 058E           ; /*取系统配置参数*/
 058E           ; void GET_CONFIG(void)
 058E           ; {
 058E                   .dbline 389
 058E           ;  struct StructOfProtocol *p_buf;
 058E           ;  struct data *communication;
 058E           ;  p_buf = (struct StructOfProtocol *)Buffer485;
 058E 60E0              ldi R22,<_Buffer485
 0590 70E0              ldi R23,>_Buffer485
 0592                   .dbline 390
 0592           ;  if(p_buf->Address==Device_Address)
 0592 20900000          lds R2,_Device_Address
 0596 FB01              movw R30,R22
 0598 3080              ldd R3,z+0
 059A 3214              cp R3,R2
 059C F9F4              brne L121
 059E           X54:
 059E                   .dbline 391
 059E           ;  {
 059E                   .dbline 392
 059E           ;    if (p_buf->Length == 1)  /*接收数据包长度确认*/
 059E 8181              ldd R24,z+1
 05A0 9281              ldd R25,z+2
 05A2 8130              cpi R24,1
 05A4 A0E0              ldi R26,0
 05A6 9A07              cpc R25,R26
 05A8 C1F4              brne L123
 05AA           X55:
 05AA                   .dbline 393
 05AA           ;    {
 05AA                   .dbline 394
 05AA           ;      p_buf->Length = sizeof(SystemConfig) + 1;
 05AA 81E2              ldi R24,33
 05AC 90E0              ldi R25,0
 05AE 9283              std z+2,R25
 05B0 8183              std z+1,R24
 05B2                   .dbline 395
 05B2           ;        I2C_Initial();
 05B2 0E940000          xcall _I2C_Initial
 05B6                   .dbline 396
 05B6           ;        AT24_Read((unsigned char *)&p_buf->Data,SystemConfig_Address,p_buf->Length-1);
 05B6 FB01              movw R30,R22
 05B8 8181              ldd R24,z+1
 05BA 9281              ldd R25,z+2
 05BC 0197              sbiw R24,1
 05BE 8883              std y+0,R24
 05C0 2227              clr R18
 05C2 3327              clr R19
 05C4 8F01              movw R16,R30
 05C6 0C5F              subi R16,252  ; offset = 4
 05C8 1F4F              sbci R17,255
 05CA 0E940000          xcall _AT24_Read
 05CE                   .dbline 397
 05CE           ;        I2C_Close();
 05CE 0E940000          xcall _I2C_Close
 05D2                   .dbline 398
 05D2           ;        communication->pc_txd = 1; 
 05D2 81E0              ldi R24,1
 05D4 FA01              movw R30,R20
 05D6 8183              std z+1,R24
 05D8                   .dbline 399
 05D8           ;    }
 05D8 01C0              xjmp L124
 05DA           L123:
 05DA                   .dbline 400
 05DA           ;    else if(TEST) CommandReply(RESP_INVALID_DATA);          /*包长度异常*/
 05DA 00C0              xjmp L125
 05DC           L125:
 05DC           L124:
 05DC                   .dbline 401
 05DC           ;   }
 05DC           L121:
 05DC                   .dbline -2
 05DC           L

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?