⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs485_51device.lis

📁 电梯楼层采集器代码
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module RS485_51Device.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\RS485_51Device.c
 0000                   .dbfunc e get_Device51_TIME _get_Device51_TIME fV
 0000                   .dbstruct 0 260 Device51_StructOfProtocol
 0000                   .dbfield 0 Address c
 0000                   .dbfield 1 Length i
 0000                   .dbfield 3 Command c
 0000                   .dbfield 4 Data A[256:256]c
 0000                   .dbend
 0000                   .dbstruct 0 4 data
 0000                   .dbfield 0 pc_rxd c
 0000                   .dbfield 1 pc_txd c
 0000                   .dbfield 2 c51_rxd c
 0000                   .dbfield 3 c51_txd c
 0000                   .dbend
 0000           ;  communication -> R16,R17
 0000           ;        C51_buf -> R18,R19
                        .even
 0000           _get_Device51_TIME::
 0000                   .dbline -1
 0000                   .dbline 7
 0000           ; 
 0000           ; #include"include.h"
 0000           ; 
 0000           ; //------------------------------------------------------------------------------
 0000           ; //获取51板的时间
 0000           ; void get_Device51_TIME(void)
 0000           ; {
 0000                   .dbline 10
 0000           ;  struct Device51_StructOfProtocol *C51_buf;
 0000           ;  struct data *communication;
 0000           ;  *Buffer485 = *C51Buffer485;
 0000 20900000          lds R2,_C51Buffer485
 0004 20920000          sts _Buffer485,R2
 0008                   .dbline 11
 0008           ;  C51_buf = (struct Device51_StructOfProtocol *)C51Buffer485;
 0008 20E0              ldi R18,<_C51Buffer485
 000A 30E0              ldi R19,>_C51Buffer485
 000C                   .dbline 12
 000C           ;  if(C51_buf->Length ==5)
 000C F901              movw R30,R18
 000E 8181              ldd R24,z+1
 0010 9281              ldd R25,z+2
 0012 8530              cpi R24,5
 0014 A0E0              ldi R26,0
 0016 9A07              cpc R25,R26
 0018 B1F4              brne L3
 001A           X0:
 001A                   .dbline 13
 001A           ;  {//发送时间给PC
 001A                   .dbline 14
 001A           ;       DayOfTime = ((unsigned int)C51_buf->Data[0] << 8) | C51_buf->Data[1];
 001A 2580              ldd R2,z+5
 001C 3480              ldd R3,z+4
 001E 4424              clr R4
 0020 30920100          sts _DayOfTime+1,R3
 0024 20920000          sts _DayOfTime,R2
 0028                   .dbline 15
 0028           ;       SecondOfTime = ((unsigned int)C51_buf->Data[2] << 8) | C51_buf->Data[3];
 0028 2780              ldd R2,z+7
 002A 3680              ldd R3,z+6
 002C 4424              clr R4
 002E 30920100          sts _SecondOfTime+1,R3
 0032 20920000          sts _SecondOfTime,R2
 0036                   .dbline 16
 0036           ;       communication->pc_txd = 1; 
 0036 81E0              ldi R24,1
 0038 F801              movw R30,R16
 003A 8183              std z+1,R24
 003C                   .dbline 17
 003C           ;       Cyc_manage |= 0x01;
 003C 80910000          lds R24,_Cyc_manage
 0040 8160              ori R24,1
 0042 80930000          sts _Cyc_manage,R24
 0046                   .dbline 18
 0046           ;  }
 0046           L3:
 0046                   .dbline -2
 0046           L2:
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbsym r communication 16 pS[data]
 0048                   .dbsym r C51_buf 18 pS[Device51_StructOfProtocol]
 0048                   .dbend
 0048                   .dbfunc e get_Device51_EVENT _get_Device51_EVENT fV
                        .even
 0048           _get_Device51_EVENT::
 0048                   .dbline -1
 0048                   .dbline 23
 0048           ; }
 0048           ; //------------------------------------------------------------------------------
 0048           ; //取控制器历史事件
 0048           ; void get_Device51_EVENT(void)
 0048           ; {
 0048                   .dbline -2
 0048           L5:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbend
 004A                   .dbfunc e communication_with_51director _communication_with_51director fV
 004A                   .dbstruct 0 256 Device51_Address
 004A                   .dbfield 0 Address A[256:256]c
 004A                   .dbend
 004A           ;  communication -> R12,R13
 004A           ;       Device51 -> R10,R11
 004A           ;        C51_buf -> R22,R23
 004A           ;              i -> R20
                        .even
 004A           _communication_with_51director::
 004A 0E940000          xcall push_xgsetF03C
 004E                   .dbline -1
 004E                   .dbline 33
 004E           ; 
 004E           ; 
 004E           ; 
 004E           ; 
 004E           ; }
 004E           ; //------------------------------------------------------------------------------
 004E           ; //------------------------------------------------------------------------------
 004E           ; //与51控制板进行通讯 
 004E           ; void communication_with_51director(void)
 004E           ; {
 004E                   .dbline 38
 004E           ;   unsigned char i;
 004E           ;   struct Device51_StructOfProtocol *C51_buf;
 004E           ;   struct Device51_Address *Device51; 
 004E           ;   struct data *communication;
 004E           ;   C51_buf = (struct Device51_StructOfProtocol *)C51Buffer485;
 004E 60E0              ldi R22,<_C51Buffer485
 0050 70E0              ldi R23,>_C51Buffer485
 0052                   .dbline 39
 0052           ;   if(communication->c51_txd)
 0052 F601              movw R30,R12
 0054 2380              ldd R2,z+3
 0056 2220              tst R2
 0058 81F0              breq L7
 005A           X1:
 005A                   .dbline 40
 005A           ;   {//发送数据给51控制板 
 005A                   .dbline 41
 005A           ;       communication->c51_txd = 0; 
 005A 2224              clr R2
 005C 2382              std z+3,R2
 005E                   .dbline 42
 005E           ;       for(i=0;i<sizeof(struct ReadHC165Switch);i++)
 005E 4427              clr R20
 0060 0AC0              xjmp L12
 0062           L9:
 0062                   .dbline 43
 0062           ;       {
 0062                   .dbline 44
 0062           ;               C51_buf->Address = Device51->Address[i];
 0062 E42F              mov R30,R20
 0064 FF27              clr R31
 0066 EA0D              add R30,R10
 0068 FB1D              adc R31,R11
 006A 2080              ldd R2,z+0
 006C FB01              movw R30,R22
 006E 2082              std z+0,R2
 0070                   .dbline 45
 0070           ;               BUS_SendPacket_51Device();//发送数据给51板
 0070 0E940000          xcall _BUS_SendPacket_51Device
 0074                   .dbline 46
 0074           ;       }
 0074           L10:
 0074                   .dbline 42
 0074 4395              inc R20
 0076           L12:
 0076                   .dbline 42
 0076 4330              cpi R20,3
 0078 A0F3              brlo L9
 007A           X2:
 007A                   .dbline 47
 007A           ;   }
 007A           L7:
 007A                   .dbline 48
 007A           ;   if(communication->c51_rxd)
 007A F601              movw R30,R12
 007C 2280              ldd R2,z+2
 007E 2220              tst R2
 0080 09F4              brne X11
 0082 2EC0              xjmp L13
 0084           X11:
 0084           X3:
 0084                   .dbline 49
 0084           ;   {//接收51控制板发送过来的数据
 0084                   .dbline 50
 0084           ;     communication->c51_rxd = 0;  
 0084 2224              clr R2
 0086 2282              std z+2,R2
 0088                   .dbline 51
 0088           ;       if(!BUS_GetPacket_51Device())
 0088 0E940000          xcall _BUS_GetPacket_51Device
 008C 0023              tst R16
 008E 41F5              brne L15
 0090           X4:
 0090                   .dbline 52
 0090           ;       {
 0090                   .dbline 53
 0090           ;       for(i=0;i<sizeof(struct ReadHC165Switch);i++)
 0090 4427              clr R20
 0092 24C0              xjmp L20
 0094           L17:
 0094                   .dbline 54
 0094           ;               {  
 0094                   .dbline 55
 0094           ;                  if((C51_buf->Address==Device51->Address[i])||(C51_buf->Address == 0xff))
 0094 FB01              movw R30,R22
 0096 2080              ldd R2,z+0
 0098 3324              clr R3
 009A 2101              movw R4,R2
 009C E42F              mov R30,R20
 009E FF27              clr R31
 00A0 EA0D              add R30,R10
 00A2 FB1D              adc R31,R11
 00A4 2080              ldd R2,z+0
 00A6 4214              cp R4,R2
 00A8 19F0              breq L23
 00AA           X5:
 00AA 842D              mov R24,R4
 00AC 8F3F              cpi R24,255
 00AE A9F4              brne L21
 00B0           X6:
 00B0           L23:
 00B0                   .dbline 56
 00B0           ;                  { 
 00B0                   .dbline 57
 00B0           ;                               switch(C51_buf->Command)
 00B0 FB01              movw R30,R22
 00B2 C380              ldd R12,z+3
 00B4 DD24              clr R13
 00B6 C601              movw R24,R12
 00B8 8230              cpi R24,2
 00BA E0E0              ldi R30,0
 00BC 9E07              cpc R25,R30
 00BE 51F0              breq L27
 00C0           X7:
 00C0 8230              cpi R24,2
 00C2 E0E0              ldi R30,0
 00C4 9E07              cpc R25,R30
 00C6 4CF0              brlt L25
 00C8           X8:
 00C8           L29:
 00C8 C601              movw R24,R12
 00CA 8131              cpi R24,17
 00CC E0E0              ldi R30,0
 00CE 9E07              cpc R25,R30
 00D0 19F0              breq L28
 00D2           X9:
 00D2 03C0              xjmp L25
 00D4           L27:
 00D4                   .dbline 60
 00D4           ;                               {
 00D4           ;                               case CMD_GET_TIME://获取C51控制板的时间
 00D4           ;                                                get_Device51_TIME();
 00D4 95DF              xcall _get_Device51_TIME
 00D6                   .dbline 61
 00D6           ;                                                break;
 00D6 01C0              xjmp L25
 00D8           L28:
 00D8                   .dbline 63
 00D8           ;                               case CMD_GET_EVENT://取控制器历史事件
 00D8           ;                                                get_Device51_EVENT();
 00D8 B7DF              xcall _get_Device51_EVENT
 00DA                   .dbline 64
 00DA           ;                                                break;
 00DA                   .dbline 66
 00DA           ;                               default:
 00DA           ;                                                break;
 00DA           L25:
 00DA                   .dbline 68
 00DA           ;                           }
 00DA           ;            }
 00DA           L21:
 00DA                   .dbline 69
 00DA           ;           }
 00DA           L18:
 00DA                   .dbline 53
 00DA 4395              inc R20
 00DC           L20:
 00DC                   .dbline 53
 00DC 4330              cpi R20,3
 00DE D0F2              brlo L17
 00E0           X10:
 00E0                   .dbline 70
 00E0           ;       }
 00E0           L15:
 00E0                   .dbline 71
 00E0           ;   }
 00E0           L13:
 00E0                   .dbline -2

⌨️ 快捷键说明

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