📄 rs485_51device.lis
字号:
.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 + -