├── _config.yml
├── tablero_v3.DSN
├── C_Code_Master
├── U1.AOF
├── U1.BIN
├── U1.xdb
├── main.obj
├── U1-FLASH.STANDARD.XML
├── bnk_swtc.mac
├── U1.rprj
├── main.h
├── U1.dbi
├── U1-MODULES.STANDARD.XML
├── main.c
├── ascii.h
├── U1.XRF
├── U1-GLOBALS.STANDARD.XML
├── U1.ctx
├── U1.rapp
├── U1.STANDARD.XML
├── U1.HEX
├── master.h
└── U1.M51
└── C_Code_Slave
├── U2.AOF
├── U2.BIN
├── U2.xdb
├── main.obj
├── U2-FLASH.STANDARD.XML
├── bnk_swtc.mac
├── U2.rprj
├── U2.dbi
├── main.h
├── U2-MODULES.STANDARD.XML
├── ascii.h
├── slave.h
├── U2.rapp
├── U2.XRF
├── U2.ctx
├── U2-GLOBALS.STANDARD.XML
├── main.c
├── U2.STANDARD.XML
├── U2.HEX
├── modbus.h
└── U2.M51
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-minimal
--------------------------------------------------------------------------------
/tablero_v3.DSN:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/tablero_v3.DSN
--------------------------------------------------------------------------------
/C_Code_Master/U1.AOF:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/C_Code_Master/U1.AOF
--------------------------------------------------------------------------------
/C_Code_Master/U1.BIN:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/C_Code_Master/U1.BIN
--------------------------------------------------------------------------------
/C_Code_Master/U1.xdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/C_Code_Master/U1.xdb
--------------------------------------------------------------------------------
/C_Code_Slave/U2.AOF:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/C_Code_Slave/U2.AOF
--------------------------------------------------------------------------------
/C_Code_Slave/U2.BIN:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/C_Code_Slave/U2.BIN
--------------------------------------------------------------------------------
/C_Code_Slave/U2.xdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/C_Code_Slave/U2.xdb
--------------------------------------------------------------------------------
/C_Code_Master/main.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/C_Code_Master/main.obj
--------------------------------------------------------------------------------
/C_Code_Slave/main.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/reiniermujica/C_8051_Modbus/HEAD/C_Code_Slave/main.obj
--------------------------------------------------------------------------------
/C_Code_Master/U1-FLASH.STANDARD.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 | - F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ
4 |
5 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2-FLASH.STANDARD.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 | - F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_SLAVE\MAIN.OBJ
4 |
5 |
--------------------------------------------------------------------------------
/C_Code_Master/bnk_swtc.mac:
--------------------------------------------------------------------------------
1 | ;NOTE - DO NOT EDIT this block of code!
2 | ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
3 | mov A,?B_CURRENTBANK
4 | anl P1,#0f8h
5 | orl P1,A
6 | ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7 |
--------------------------------------------------------------------------------
/C_Code_Slave/bnk_swtc.mac:
--------------------------------------------------------------------------------
1 | ;NOTE - DO NOT EDIT this block of code!
2 | ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
3 | mov A,?B_CURRENTBANK
4 | anl P1,#0f8h
5 | orl P1,A
6 | ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7 |
--------------------------------------------------------------------------------
/C_Code_Master/U1.rprj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2.rprj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/C_Code_Master/main.h:
--------------------------------------------------------------------------------
1 | #include "reg52.h"
2 |
3 | /* data types */
4 | typedef unsigned char uint8;
5 | typedef unsigned int uint16;
6 | typedef unsigned long uint32;
7 |
8 | /* RS485 enable/disable terminal */
9 | sbit RS485En = P2^7;
10 |
11 | /* timer conf for uart baudrate */
12 | #define TIMER_HIGHT 0xF4
13 | #define TIMER_LOW 0xF4 //2400
14 |
15 |
16 | void delay_ms(unsigned int d);
--------------------------------------------------------------------------------
/C_Code_Master/U1.dbi:
--------------------------------------------------------------------------------
1 | [Application]
2 | ApplicationPath=F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code_Master\U1.aof
3 | DebugTool=SIM-51
4 | CodeSize=0x10000
5 | XDataSize=0x10000
6 | XDataStart=0x0
7 | Format=AOF
8 | CodeOffset=0x0
9 | LoaderTool=80C51
10 | Target=80C51
11 | ApplicationComponents=
12 | [Device]
13 | Name=AT89S52
14 | Architecture=1
15 | [Debug]
16 | LastVirtual=AT89S52
17 | Explore=Yes
18 | ToolName=SIM-51
19 | [SimFile]
20 | Path=
21 | [SIM-51]
22 | Crystal=12.000
23 | NoFast=1
24 | isHex=0
25 | [General]
26 | FreqXTal=12.000
27 | [AT89S52\UART]
28 | AsciiHex-1=0
29 | SpyTrm-1=1
30 | SpyRec-1=0
31 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2.dbi:
--------------------------------------------------------------------------------
1 | [Application]
2 | ApplicationPath=F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code_Slave\U2.aof
3 | DebugTool=SIM-51
4 | CodeSize=0x10000
5 | XDataSize=0x10000
6 | XDataStart=0x0
7 | Format=AOF
8 | CodeOffset=0x0
9 | LoaderTool=80C51
10 | Target=80C51
11 | ApplicationComponents=
12 | [Device]
13 | Name=AT89S52
14 | Architecture=1
15 | [Debug]
16 | LastVirtual=AT89S52
17 | Explore=Yes
18 | ToolName=SIM-51
19 | [SimFile]
20 | Path=
21 | [SIM-51]
22 | Crystal=12.000
23 | NoFast=1
24 | isHex=1
25 | [General]
26 | FreqXTal=12.000
27 | [AT89S52\UART]
28 | AsciiHex-1=1
29 | SpyTrm-1=1
30 | SpyRec-1=0
31 |
--------------------------------------------------------------------------------
/C_Code_Slave/main.h:
--------------------------------------------------------------------------------
1 | #include "reg52.h"
2 |
3 | /* data types */
4 | typedef unsigned char uint8;
5 | typedef unsigned int uint16;
6 | typedef unsigned long uint32;
7 |
8 | /* RS485 enable/disable terminal */
9 | sbit RS485En = P3^2;
10 |
11 | /* timer conf for uart baudrate */
12 | #define TIMER_HIGHT_1 0xF4
13 | #define TIMER_LOW_1 0xF4 // 2400
14 |
15 | /* timer conf for PWM */
16 | #define TIMER_HIGHT_0 0xF7 //2ms conf
17 | #define TIMER_LOW_0 0x86
18 |
19 | /* Display on / off states */
20 | #define DISPLAY_ON 0
21 | #define DISPLAY_OFF 1
22 |
23 | void delay_ms(unsigned int d);
--------------------------------------------------------------------------------
/C_Code_Master/U1-MODULES.STANDARD.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | --
5 | MAIN
6 | F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ
7 |
8 |
9 | --
10 | C3S
11 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
12 |
13 |
14 | --
15 | HPD
16 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
17 |
18 |
19 | --
20 | _C_IDATALEN
21 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
22 |
23 |
24 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2-MODULES.STANDARD.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | --
5 | MAIN
6 | F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_SLAVE\MAIN.OBJ
7 |
8 |
9 | --
10 | C1S
11 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
12 |
13 |
14 | --
15 | MULS
16 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
17 |
18 |
19 | --
20 | DIVS
21 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
22 |
23 |
24 | --
25 | CMPL
26 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
27 |
28 |
29 | --
30 | RSTSTK4
31 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
32 |
33 |
34 | --
35 | HPD
36 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
37 |
38 |
39 | --
40 | _C_INITD
41 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
42 |
43 |
44 | --
45 | _C_IDATALEN
46 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB
47 |
48 |
49 |
--------------------------------------------------------------------------------
/C_Code_Master/main.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 |
5 |
6 | int word = 0;
7 | int i = 0;
8 | int coil = 0;
9 |
10 |
11 | void Serial_Init()
12 | {
13 | RS485En = 0; // set for rx
14 |
15 | TMOD = 0x20;
16 | TH1 = TIMER_HIGHT;
17 | TL1 = TIMER_LOW; //2400 BAUDS
18 | TR1 = 1;
19 | SCON = 0x50; //mode 1 8 bits 1 start, 8 data, 1 stop
20 |
21 | ES = 1;
22 | }
23 |
24 | void delay_ms(unsigned int d)
25 | {
26 | int k = 0;
27 | int s = 0;
28 | for ( k = 0; k < d; k++ )
29 | {
30 | s++;
31 | }
32 | }
33 | void tx_byte(char byte) //transmit a single byte
34 | {
35 | TI = 0;
36 | TB8 = 0;
37 | SBUF = byte;
38 | while (!TI);
39 | }
40 |
41 | void SerialPortInt() interrupt 4
42 | {
43 | if( TI == 1 )
44 | {
45 | TI = 0;
46 | if ( RS485En == 0 ) return;
47 |
48 | if ( send_count < data_count )
49 | {
50 | delay_ms(100);
51 | SBUF = ascii_frame[send_count++];
52 |
53 | }
54 | else
55 | {
56 | clear_frame();
57 | }
58 | }
59 | else
60 | if( RI == 1 )
61 | {
62 | RI = 0;
63 | }
64 | }
65 |
66 | void main(void)
67 | {
68 | Serial_Init();
69 |
70 | word = 0;
71 | EA = 1;
72 | delay_ms(100000);
73 |
74 | while (1)
75 | {
76 | PresetSingleRegister_06(5, 1, word);
77 | word++;
78 | if ( word == 20 ) word = 0;
79 |
80 | delay_ms(100000);
81 |
82 |
83 | // ForceSingleCoil_05(5, 1, coil);
84 |
85 |
86 | if ( coil == 0 ) coil = 1;
87 | else coil = 0;
88 |
89 | delay_ms(100000);
90 | PresetSingleRegister_06(5, 2, 5);
91 |
92 |
93 | delay_ms(100000);
94 | }
95 | }
--------------------------------------------------------------------------------
/C_Code_Slave/ascii.h:
--------------------------------------------------------------------------------
1 | /* data types */
2 | typedef unsigned char uint8;
3 | typedef unsigned int uint16;
4 | typedef unsigned long uint32;
5 |
6 | /* ascii temp vars */
7 | uint8 ascii[4];
8 | uint8 hexa[4];
9 |
10 | /* functions prototypes */
11 | void ByteToAscii(uint8);
12 | uint8 NibbleToAscii(uint8);
13 | uint8 AsciiToByte(uint8, uint8);
14 | void TwoByteToAscii(uint16);
15 | uint16 AsciiToTwoByte();
16 |
17 | /* functions code */
18 | void ByteToAscii(uint8 val)
19 | {
20 | uint8 a = val / 16;
21 | uint8 b = val % 16;
22 | if ( a <= 9 )
23 | {
24 | ascii[0] = a + '0';
25 | }
26 | else
27 | {
28 | ascii[0]= (a - 10) + 'A';
29 | }
30 | if ( b <= 9 )
31 | {
32 | ascii[1] = b + '0';
33 | }
34 | else
35 | {
36 | ascii[1]= (b - 10) + 'A';
37 | }
38 | return ;
39 | }
40 |
41 | uint8 NibbleToAscii(uint8 val)
42 | {
43 | if ( val <= 9 )
44 | {
45 | return val + '0';
46 | }
47 | else
48 | {
49 | return (val - 10) + 'A';
50 | }
51 | }
52 |
53 | uint8 AsciiToByte(uint8 a, uint8 b)
54 | {
55 | if ( a >= 65 )
56 | {
57 | a = a - 'A' + 10;
58 | }
59 | else
60 | {
61 | a = a - '0';
62 | }
63 | if ( b >= 65 )
64 | {
65 | b = b - 'A' + 10;
66 | }
67 | else
68 | {
69 | b = b - '0';
70 | }
71 | return (16 * a) + b;
72 | }
73 |
74 | void TwoByteToAscii(uint16 val)
75 | {
76 | int i = 0;
77 | for ( i = 0; i < 4; i++ )
78 | hexa[i] = 0;
79 | i = 0;
80 | while ( val > 0)
81 | {
82 | hexa[i] = val % 16;
83 | val /= 16;
84 | i++;
85 | }
86 | for ( i = 0; i < 4; i++ )
87 | ascii[i] = NibbleToAscii(hexa[i]);
88 | return ;
89 | }
90 |
91 | uint16 AsciiToTwoByte()
92 | {
93 | uint16 a = AsciiToByte(ascii[0], ascii[1]);
94 | uint16 b = AsciiToByte(ascii[2], ascii[3]);
95 | uint16 result = ( a * 256 ) + b;
96 | return result;
97 | }
98 |
--------------------------------------------------------------------------------
/C_Code_Master/ascii.h:
--------------------------------------------------------------------------------
1 | typedef unsigned char uint8;
2 | typedef unsigned int uint16;
3 | typedef unsigned long uint32;
4 |
5 | /* ascii temp vars */
6 | uint8 ascii[4];
7 | uint8 hexa[4];
8 |
9 | /* functions prototypes */
10 | void ByteToAscii(uint8);
11 | uint8 NibbleToAscii(uint8);
12 | uint8 AsciiToByte(uint8, uint8);
13 | void TwoByteToAscii(uint16);
14 | uint16 AsciiToTwoByte();
15 |
16 | /* functions code */
17 | void ByteToAscii(uint8 val)
18 | {
19 | uint8 a = val / 16;
20 | uint8 b = val % 16;
21 |
22 | if ( a <= 9 )
23 | {
24 | ascii[0] = a + '0';
25 | }
26 | else
27 | {
28 | ascii[0]= (a - 10) + 'A';
29 | }
30 |
31 | if ( b <= 9 )
32 | {
33 | ascii[1] = b + '0';
34 | }
35 | else
36 | {
37 | ascii[1]= (b - 10) + 'A';
38 | }
39 | return ;
40 | }
41 |
42 | uint8 NibbleToAscii(uint8 val)
43 | {
44 | if ( val <= 9 )
45 | {
46 | return val + '0';
47 | }
48 | else
49 | {
50 | return (val - 10) + 'A';
51 | }
52 | }
53 |
54 | uint8 AsciiToByte(uint8 a, uint8 b)
55 | {
56 | if ( a >= 65 )
57 | {
58 | a = a - 'A' + 10;
59 | }
60 | else
61 | {
62 | a = a - '0';
63 | }
64 |
65 | if ( b >= 65 )
66 | {
67 | b = b - 'A' + 10;
68 | }
69 | else
70 | {
71 | b = b - '0';
72 | }
73 |
74 | return (16 * a) + b;
75 | }
76 |
77 | void TwoByteToAscii(uint16 val)
78 | {
79 | int i = 0;
80 | for ( i = 0; i < 4; i++ )
81 | hexa[i] = 0;
82 |
83 | i = 0;
84 | while ( val > 0)
85 | {
86 | hexa[i] = val % 16;
87 | val /= 16;
88 | i++;
89 | }
90 |
91 | for ( i = 0; i < 4; i++ )
92 | ascii[i] = NibbleToAscii(hexa[i]);
93 |
94 | return ;
95 | }
96 |
97 | uint16 AsciiToTwoByte()
98 | {
99 | uint16 a = AsciiToByte(ascii[0], ascii[1]);
100 | uint16 b = AsciiToByte(ascii[2], ascii[3]);
101 |
102 | uint16 result = ( a * 256 ) + b;
103 |
104 | return result;
105 | }
106 |
--------------------------------------------------------------------------------
/C_Code_Master/U1.XRF:
--------------------------------------------------------------------------------
1 | MS-DOS LX51 CODE BANKING LINKER/LOCATOR V05.08.10.309
2 |
3 |
4 | INTER-MODULE CROSS-REFERENCE LISTING
5 | ------------------------------------
6 |
7 | NAME. . . . . . . . USAGE MODULE NAMES
8 | ----------------------------------------
9 | ?C_START3 . . . . . CODE [C3S]: MAIN
10 | ascii . . . . . . . DATA [MAIN]:
11 | AsciiToTwoByte . . CODE [MAIN]:
12 | ascii_frame . . . . IDATA [MAIN]:
13 | broadcast . . . . . BIT [MAIN]:
14 | byte_count . . . . DATA [MAIN]:
15 | clear_frame . . . . CODE [MAIN]:
16 | coil . . . . . . . DATA [MAIN]:
17 | data_count . . . . IDATA [MAIN]:
18 | gen_lrc . . . . . . CODE [MAIN]:
19 | gen_start . . . . . CODE [MAIN]:
20 | hexa . . . . . . . DATA [MAIN]:
21 | HPD_ADDR . . . . . DATA [HPD]: C3S
22 | i . . . . . . . . . DATA [MAIN]:
23 | IDATALEN . . . . . NUMBER [_C_IDATALEN]: C3S
24 | lrc_calc . . . . . CODE [MAIN]: MAIN
25 | main . . . . . . . CODE [MAIN]: C3S
26 | parameters . . . . IDATA [MAIN]:
27 | send_count . . . . IDATA [MAIN]:
28 | SerialPortInt . . . CODE [MAIN]:
29 | Serial_Init . . . . CODE [MAIN]:
30 | TIM1_INIT . . . . . NUMBER [** UNRESOLVED **]:
31 | tx_assci_frame . . CODE [MAIN]:
32 | word . . . . . . . DATA [MAIN]:
33 | XSTACKLEN . . . . . NUMBER [** UNRESOLVED **]:
34 | _AsciiToByte . . . CODE [MAIN]:
35 | _ByteToAscii . . . CODE [MAIN]:
36 | _delay_ms . . . . . CODE [MAIN]:
37 | _ForceMultipleCoils_CODE [MAIN]:
38 | _ForceSingleCoil_05 CODE [MAIN]:
39 | _gen_dir . . . . . CODE [MAIN]:
40 | _gen_function . . . CODE [MAIN]:
41 | _INITP2? . . . . . NUMBER [_C_IDATALEN]: C3S
42 | _NibbleToAscii . . CODE [MAIN]:
43 | _PresetMultipleRegisCODE [MAIN]:
44 | _PresetSingleRegisteCODE [MAIN]:
45 | _ReadCoilStatus_01 CODE [MAIN]:
46 | _ReadHoldingRegisterCODE [MAIN]:
47 | _ReadInputRegisters_CODE [MAIN]:
48 | _ReadInputStatus_02 CODE [MAIN]:
49 | _STACK . . . . . . IDATA [MAIN]: C3S
50 | _TwoByteToAscii . . CODE [MAIN]:
51 | _tx_byte . . . . . CODE [MAIN]:
52 | _tx_byte2 . . . . . CODE [MAIN]:
--------------------------------------------------------------------------------
/C_Code_Slave/slave.h:
--------------------------------------------------------------------------------
1 | /* slave address 1 - 255 */
2 | #define DIR 0x05 //slave dir 5d
3 |
4 | /* data types */
5 | typedef unsigned char uint8;
6 | typedef unsigned int uint16;
7 | typedef unsigned long uint32;
8 |
9 | /* data range */
10 | #define MAX_COILS 1
11 | #define MAX_INPUTS 1
12 | #define MAX_HOLDING_REGISTERS 2
13 | #define MAX_INPUTS_REGISTERS 2
14 |
15 | /* internal slave memory data */
16 | uint8 idata coils_array[MAX_COILS];
17 | uint8 idata inputs_array[MAX_INPUTS];
18 | uint16 idata holding_registers_array[MAX_HOLDING_REGISTERS];
19 | uint16 idata inputs_registers_array[MAX_INPUTS_REGISTERS];
20 |
21 | /* functions prototypes */
22 | uint8 GetCoilValue(uint16 adr);
23 | void SetCoilValue(uint16 adr, uint8 value);
24 | uint8 GetInputValue(uint16 adr);
25 | uint16 GetHoldingRegisterValue(uint16);
26 | void SetHoldingRegisterValue(uint16, uint16);
27 | uint16 GetInputRegisterValue(uint16);
28 |
29 | /* functions codes */
30 | /* coils read-write operations */
31 | uint8 GetCoilValue(uint16 adr)
32 | {
33 | uint8 res = 0, i = 0, d = 0;
34 | if ( adr < 0 || adr >= MAX_COILS * 8 )
35 | {
36 | return 0;
37 | }
38 | i = adr / 8;
39 | d = adr % 8;
40 | res = ( coils_array[i] & (1 << d) );
41 | return res > 0;
42 | }
43 |
44 | void SetCoilValue(uint16 adr, uint8 value)
45 | {
46 | uint8 res = 0, i = 0, d = 0;
47 | if ( adr < 0 || adr >= MAX_COILS * 8 )
48 | {
49 | return ;
50 | }
51 | i = adr / 8;
52 | d = adr % 8;
53 | res = ( coils_array[i] & (1 << d) );
54 | if ( res > 0 )
55 | {
56 | res = 1; //coil on
57 | }
58 | else
59 | {
60 | res = 0; //coil off
61 | }
62 | if ( res == 1 && value == 1 ) return; // already ON
63 | if ( res == 0 && value == 0 ) return; // already OFF
64 | if ( res == 0 && value == 1 ) // is off turn on
65 | {
66 | coils_array[i] = ( coils_array[i] | (1 << d) ); // active coil
67 | }
68 | if ( res == 1 && value == 0 ) // is on turn off
69 | {
70 | coils_array[i] = ( coils_array[i] & ( ~(1 << d) ) ); // desactive coil
71 | }
72 | return ;
73 | }
74 |
75 | /* holding registers read-write operations */
76 | uint16 GetHoldingRegisterValue(uint16 adr)
77 | {
78 | if ( adr < 0 || adr >= MAX_HOLDING_REGISTERS )
79 | {
80 | return 0; // invalid register address
81 | }
82 | else
83 | {
84 | return holding_registers_array[adr];
85 | }
86 | }
87 |
88 | void SetHoldingRegisterValue(uint16 adr, uint16 value)
89 | {
90 | if ( adr < 0 || adr >= MAX_HOLDING_REGISTERS || value < 0 || value > 65535)
91 | {
92 | return ; // invalid register address
93 | }
94 | else
95 | {
96 | holding_registers_array[adr] = value;
97 | }
98 | }
99 |
100 | /* inputs read-only operations */
101 | uint8 GetInputValue(uint16 adr)
102 | {
103 | uint8 res = 0, i = 0, d = 0;
104 | if ( adr < 0 || adr >= MAX_INPUTS * 8 )
105 | {
106 | return 0;
107 | }
108 | i = adr / 8;
109 | d = adr % 8;
110 | res = ( inputs_array[i] & (1 << d) );
111 | return res > 0;
112 | }
113 |
114 | uint16 GetInputRegisterValue(uint16 adr)
115 | {
116 | if ( adr < 0 || adr >= MAX_INPUTS_REGISTERS )
117 | {
118 | return 0; // invalid register address
119 | }
120 | else
121 | {
122 | return inputs_registers_array[adr];
123 | }
124 | }
125 |
--------------------------------------------------------------------------------
/C_Code_Master/U1-GLOBALS.STANDARD.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2.rapp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
12 |
13 |
14 |
18 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2.XRF:
--------------------------------------------------------------------------------
1 | MS-DOS LX51 CODE BANKING LINKER/LOCATOR V05.08.10.309
2 |
3 |
4 | INTER-MODULE CROSS-REFERENCE LISTING
5 | ------------------------------------
6 |
7 | NAME. . . . . . . . USAGE MODULE NAMES
8 | ----------------------------------------
9 | ?C_CMPL . . . . . . CODE [CMPL]: MAIN
10 | ?C_CMPLS . . . . . CODE [CMPL]: MAIN
11 | ?C_IMUL . . . . . . CODE [MULS]: MAIN
12 | ?C_IMULX . . . . . CODE [MULS]:
13 | ?C_INITSEGSTART . . CODE [_C_INITD]: C1S
14 | ?C_SIDIV . . . . . CODE [DIVS]: MAIN
15 | ?C_START1 . . . . . CODE [C1S]: MAIN
16 | ?C_UIDIV . . . . . CODE [DIVS]:
17 | ascii . . . . . . . DATA [MAIN]:
18 | AsciiToTwoByte . . CODE [MAIN]:
19 | ascii_frame . . . . IDATA [MAIN]:
20 | broadcast . . . . . BIT [MAIN]:
21 | BUSY . . . . . . . DATA [MAIN]:
22 | cant . . . . . . . DATA [MAIN]:
23 | clear_frame . . . . CODE [MAIN]: MAIN
24 | coils_array . . . . IDATA [MAIN]:
25 | CPL_R4R5 . . . . . CODE [DIVS]:
26 | CPL_R6R7 . . . . . CODE [DIVS]:
27 | data_count . . . . IDATA [MAIN]:
28 | DIV_2 . . . . . . . CODE [DIVS]:
29 | execute_modbus_commaCODE [MAIN]:
30 | gen_lrc . . . . . . CODE [MAIN]:
31 | hexa . . . . . . . DATA [MAIN]:
32 | holding_registers_arIDATA [MAIN]:
33 | HPD_ADDR . . . . . DATA [HPD]: C1S
34 | IDATALEN . . . . . NUMBER [_C_IDATALEN]: C1S
35 | inputs_array . . . IDATA [MAIN]:
36 | inputs_registers_arrIDATA [MAIN]:
37 | last_data_count . . DATA [MAIN]:
38 | last_hash . . . . . DATA [MAIN]:
39 | led_count . . . . . DATA [MAIN]:
40 | level . . . . . . . DATA [MAIN]:
41 | lrc_calc . . . . . CODE [MAIN]: MAIN
42 | main . . . . . . . CODE [MAIN]: C1S
43 | make_hash . . . . . CODE [MAIN]:
44 | PWM . . . . . . . . CODE [MAIN]:
45 | ResponseForceMultiplCODE [MAIN]: MAIN
46 | ResponseForceSingleCCODE [MAIN]: MAIN
47 | ResponsePresetMultipCODE [MAIN]: MAIN
48 | ResponsePresetSingleCODE [MAIN]: MAIN
49 | ResponseReadCoilsStaCODE [MAIN]: MAIN
50 | ResponseReadHoldingRCODE [MAIN]: MAIN
51 | ResponseReadInputRegCODE [MAIN]: MAIN
52 | ResponseReadInputStaCODE [MAIN]: MAIN
53 | RST_STK4?C . . . . CODE [RSTSTK4]: CMPL
54 | sec_count . . . . . DATA [MAIN]:
55 | send_count . . . . IDATA [MAIN]:
56 | SerialPortInt . . . CODE [MAIN]:
57 | Serial_PWM_Init . . CODE [MAIN]:
58 | TIM1_INIT . . . . . NUMBER [** UNRESOLVED **]:
59 | tx_assci_frame . . CODE [MAIN]:
60 | update_display . . CODE [MAIN]:
61 | XSTACKLEN . . . . . NUMBER [** UNRESOLVED **]:
62 | _7seg . . . . . . . IDATA [MAIN]:
63 | _AsciiToByte . . . CODE [MAIN]:
64 | _ByteToAscii . . . CODE [MAIN]:
65 | _delay_ms . . . . . CODE [MAIN]:
66 | _GetCoilValue . . . CODE [MAIN]:
67 | _GetHoldingRegisterVCODE [MAIN]:
68 | _GetInputRegisterValCODE [MAIN]:
69 | _GetInputValue . . CODE [MAIN]:
70 | _INITP2? . . . . . NUMBER [_C_IDATALEN]: C1S
71 | _NibbleToAscii . . CODE [MAIN]:
72 | _SetCoilValue . . . CODE [MAIN]:
73 | _SetHoldingRegisterVCODE [MAIN]:
74 | _STACK . . . . . . IDATA [MAIN]: C1S
75 | _TwoByteToAscii . . CODE [MAIN]:
--------------------------------------------------------------------------------
/C_Code_Master/U1.ctx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | <0>450>
7 | <1>501>
8 | <2>272>
9 | <3>1833>
10 | <4>164>
11 | <5>415>
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | yes
44 | no
45 | no
46 | no
47 | no
48 |
49 | *.c;*.h
50 | *.c;*.h
51 |
52 |
53 |
54 |
55 |
56 |
57 | Application Files
58 | Application Path
59 |
60 |
61 |
62 |
63 |
64 |
65 | parame
66 |
67 |
68 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2.ctx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | <0>600>
7 | <1>661>
8 | <2>362>
9 | <3>2493>
10 | <4>204>
11 | <5>435>
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | yes
44 | no
45 | no
46 | no
47 | no
48 |
49 | *.c;*.h
50 | *.c;*.h
51 |
52 |
53 |
54 |
55 |
56 | F:\Reinier\Estudio\TESIS\PROTEUS\UART\Slave#1
57 | Application Files
58 | Application Path
59 | F:\Reinier\Estudio\TESIS\PROTEUS\UART\Slave#1
60 |
61 |
62 |
63 |
64 |
65 |
66 | LRC_Calc
67 | lcr
68 | delay(
69 |
70 |
71 | lrc_calc
72 | lrc
73 | delay_ms(
74 |
75 |
--------------------------------------------------------------------------------
/C_Code_Master/U1.rapp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
12 |
13 |
14 |
20 |
25 |
26 |
27 |
28 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2-GLOBALS.STANDARD.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/C_Code_Master/U1.STANDARD.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/C_Code_Master/U1.HEX:
--------------------------------------------------------------------------------
1 | :03000000020003F8
2 | :0F00030075819AE4787FF6D8FD75A0FF02062973
3 | :06001200BF0901D35005F7
4 | :05001800EF2430FF227F
5 | :05001D00EF2437FF2273
6 | :030023000205DAF9
7 | :1000260075F010EF84FEEF540FFDBE0901D35007A3
8 | :07003600EE2430F5088005FF
9 | :0C003D00EE2437F508EDB40901D350069D
10 | :06004900ED2430F5092250
11 | :06004F00ED2437F5092243
12 | :05005500BF4100400660
13 | :06005A00EF24C9FF800441
14 | :0A006000EF24D0FFEDB4410040068C
15 | :06006A00ED24C9FD800435
16 | :0C007000ED24D0FDEF75F010A42DFF2250
17 | :10007C007804790CE4F709D8FCE4FCFDBE0004BF5D
18 | :05008C000001D3402239
19 | :10009100EF540FFAED240CF8A6028F03EE75F0046D
20 | :1000A100C313CB13CBD5F0F8FE8B070DED70D80C35
21 | :1000B10080D5E4FBEB240CF88607120012EB240830
22 | :0800C100F8A6070BBB04ED22B9
23 | :1000C900AF08AD091200558F03AF0AAD0B120055E9
24 | :1000D9007523008F24E42524F526EB3523F525AE79
25 | :0400E90025AF2622F7
26 | :0500ED007948773A227A
27 | :0C00F2001200267949A708794AA70922C4
28 | :0C00FE00120026794BA708794CA70922B4
29 | :10010A001201551200267984E7072448F8A608E761
30 | :10011A00072448F8A609E7072448F8760DE70724D4
31 | :05012A0048F8760A22EE
32 | :10012F0079847700798577007E3C7948E4F709DE9A
33 | :02013F00FC22A0
34 | :10014100D2A779857701C299C29B79488799798528
35 | :04015100E770FB2236
36 | :100155007E00751D01798487F0E51DB5F000501A04
37 | :10016500E51D2448F88607E51D2449F88605120093
38 | :0F01750055EE2FFE051D051D80DBEEF404FF2265
39 | :0A018400C299C29B8F993099FD22A9
40 | :10018E008C2D8D2E8A2F8B301200ED1200F27F01F6
41 | :10019E001200FE79847705E52E24FFFFE52D34FF4E
42 | :0C01AE00FE12007CE4FE7F03EE20E7144C
43 | :1001BA00EF2408F87984E7072448F9E6F7EF1F7077
44 | :1001CA00EB1E80E8AE2FAF3012007CE4FE7F03EE18
45 | :0301DA0020E71407
46 | :1001DD00EF2408F87984E7072448F9E6F7EF1F7054
47 | :0A01ED00EB1E80E812010A02014136
48 | :1001F7008C318D328A338B341200ED1200F27F027C
49 | :100207001200FE79847705E53224FFFFE53134FFDC
50 | :0C021700FE12007CE4FE7F03EE20E714E2
51 | :10022300EF2408F87984E7072448F9E6F7EF1F700D
52 | :10023300EB1E80E8AE33AF3412007CE4FE7F03EEA6
53 | :0302430020E7149D
54 | :10024600EF2408F87984E7072448F9E6F7EF1F70EA
55 | :0A025600EB1E80E812010A020141CC
56 | :100260008C358D368A378B381200ED1200F27F0301
57 | :100270001200FE79847705E53624FFFFE53534FF6B
58 | :0C028000FE12007CE4FE7F03EE20E71479
59 | :10028C00EF2408F87984E7072448F9E6F7EF1F70A4
60 | :10029C00EB1E80E8AE37AF3812007CE4FE7F03EE35
61 | :0302AC0020E71434
62 | :1002AF00EF2408F87984E7072448F9E6F7EF1F7081
63 | :0A02BF00EB1E80E812010A02014163
64 | :1002C9008C398D3A8A3B8B3C1200ED1200F27F0487
65 | :1002D9001200FE79847705E53A24FFFFE53934FFFA
66 | :0C02E900FE12007CE4FE7F03EE20E71410
67 | :1002F500EF2408F87984E7072448F9E6F7EF1F703B
68 | :10030500EB1E80E8AE3BAF3C12007CE4FE7F03EEC3
69 | :0303150020E714CA
70 | :10031800EF2408F87984E7072448F9E6F7EF1F7017
71 | :0A032800EB1E80E812010A020141F9
72 | :100332008C458D468B471200ED1200F27F051200AC
73 | :10034200FE79847705E54624FFFFE54534FFFE127A
74 | :0A035200007CE4FE7F03EE20E714B8
75 | :10035C00EF2408F87984E7072448F9E6F7EF1F70D3
76 | :0C036C00EB1E80E8E547B40001D3400917
77 | :090378007EFFE4FF12007C800608
78 | :0E038100E4FEFF12007CE4FE7F03EE20E71492
79 | :10038F00EF2408F87984E7072448F9E6F7EF1F70A0
80 | :0A039F00EB1E80E812010A02014182
81 | :1003A9008C418D428A438B441200ED1200F27F0684
82 | :1003B9001200FE79847705E54224FFFFE54134FF09
83 | :0C03C900FE12007CE4FE7F03EE20E7142F
84 | :1003D500EF2408F87984E7072448F9E6F7EF1F705A
85 | :1003E500EB1E80E8AE43AF4412007CE4FE7F03EED3
86 | :0303F50020E714EA
87 | :1003F800EF2408F87984E7072448F9E6F7EF1F7037
88 | :0A040800EB1E80E812010A02014118
89 | :100412008C178D188A198B1A1200ED1200F27F0FB9
90 | :100422001200FE79847705E51824FFFFE51734FFF3
91 | :0C043200FE12007CE4FE7F03EE20E714C5
92 | :10043E00EF2408F87984E7072448F9E6F7EF1F70F0
93 | :10044E00EB1E80E8AE19AF1A12007CE4FE7F03EEBD
94 | :03045E0020E71480
95 | :10046100EF2408F87984E7072448F9E6F7EF1F70CD
96 | :10047100EB1E80E8AF101200267984E7072448F8C4
97 | :10048100A608E7072448F8A609E4F51BF51CE51BB7
98 | :0C0491006480B48005E51CB51000502705
99 | :10049D00E51C251C2486F80886071200267984E7BA
100 | :1004AD00072448F8A608E7072448F8A609051CE51F
101 | :0D04BD001C70CF051B80CB12010A0201410B
102 | :1004CA008C278D288A298B2A1200ED1200F27F10C0
103 | :1004DA001200FE79847705E52824FFFFE52734FF1B
104 | :0C04EA00FE12007CE4FE7F03EE20E7140D
105 | :1004F600EF2408F87984E7072448F9E6F7EF1F7038
106 | :10050600EB1E80E8AE29AF2A12007CE4FE7F03EEE4
107 | :0305160020E714C7
108 | :10051900EF2408F87984E7072448F9E6F7EF1F7014
109 | :10052900EB1E80E8E51025E0FF1200267984E70735
110 | :100539002448F8A608E7072448F8A609E4F52BF5A6
111 | :0F0549002CE52B6480B48005E52CB510005037ED
112 | :10055800E52C252C2486F8860608860712007C7967
113 | :1005680084E7072448F8A60BE7072448F8A60AE713
114 | :10057800072448F8A609E7072448F8A608052CE543
115 | :0D0588002C70BF052B80BB12010A0201413F
116 | :10059500C2A7758920758DF4758BF4D28E75985028
117 | :0305A500D2AC22B3
118 | :1005A800E4F53DF53EF53FF540E53FB50605E54088
119 | :0505B800B50700501220
120 | :1005BD00053EE53E7002053D0540E54070E6053F10
121 | :0305CD0080E222A7
122 | :0A05D000C299C29B8F993099FD2259
123 | :1005DA00C0E0C0F0C0D0C000C001C006C00730995A
124 | :0105EA0037D9
125 | :1005EB00C29920A70FD007D006D001D000D0D0D011
126 | :1005FB00F0D0E032798487F07885E6B5F0005012C0
127 | :10060B00E4FE7F641205A88607EF062448F8869956
128 | :02061B00800A53
129 | :08061D0012012F80CE3098CBB2
130 | :04062500C29880C730
131 | :10062900120595E4F511F512D2AF7E867FA0120569
132 | :01063900A818
133 | :10063A007F05E4FC7D01AA11AB121203A90512E59C
134 | :10064A001270020511641445117005E4F511F512D2
135 | :10065A007E867FA01205A8E51545167008E4F515F3
136 | :10066A007516018005E4F515F5167E867FA012053C
137 | :10067A00A87F05E4FC7D02FA7B051203A97E867F2A
138 | :06068A00A01205A880AAE1
139 | :00000001FF
140 |
--------------------------------------------------------------------------------
/C_Code_Slave/main.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 |
6 | #define MMOD 1009
7 |
8 | int level = 0;
9 | int cant = 1;
10 | int led_count = 0;
11 | int sec_count = 0;
12 |
13 | int last_data_count = 0;
14 | int last_hash = 0;
15 |
16 | uint8 idata _7seg[10] = {0x7E,0x42,0xEC,0xE6,0xD2,0xB6,0x9E,0x62,0xFE,0xF2};
17 |
18 | sbit LED1 = P1^3;
19 | sbit EN_D = P3^7;
20 | sbit ONE = P2^0;
21 | uint8 BUSY = 0;
22 |
23 | void Serial_PWM_Init()
24 | {
25 | RS485En = 0;
26 |
27 | TMOD = 0x21; //
28 |
29 | TH1 = TIMER_HIGHT_1;
30 | TL1 = TIMER_LOW_1; //2400 BAUDS
31 |
32 | TH0 = TIMER_HIGHT_0; // 2 ms
33 | TL0 = TIMER_LOW_0;
34 |
35 | SetHoldingRegisterValue(1, 1); // level 5 full bright
36 | level = 5;
37 |
38 | ET0 = 1;
39 | TR0 = 1;
40 |
41 | SCON = 0x50; //mode 1 8 bits 1 start, 8 data, 1 stop
42 |
43 | ES = 1;
44 | PS = 1;
45 | PT1 = 1;
46 |
47 | TR1 = 1;
48 | }
49 |
50 | int make_hash()
51 | {
52 | int i, h = 0;
53 | for ( i = 0; i < data_count; i++ ) {
54 | h += (char)ascii_frame[i] * ( i + 1 );
55 | }
56 | return ( 19 * h ) % MMOD;
57 | }
58 |
59 | void delay_ms(unsigned int d)
60 | {
61 | int k = 0;
62 | int s = 0;
63 | for ( k = 0; k < d; k++ )
64 | {
65 | s++;
66 | }
67 | }
68 |
69 | void PWM() interrupt 1
70 | {
71 | int curr = 0;
72 | int off = GetCoilValue(0);
73 |
74 | TH0 = TIMER_HIGHT_0;
75 | TL0 = TIMER_LOW_0;
76 |
77 | if ( cant <= 0 )
78 | {
79 | EN_D = DISPLAY_OFF;
80 | }
81 | else
82 | {
83 | EN_D = !(DISPLAY_ON ^ off);
84 | }
85 |
86 | if ( cant >= level )
87 | {
88 | cant = level - 5;
89 | }
90 |
91 | cant++;
92 |
93 | led_count++;
94 | if (led_count == 500) // 1 second
95 | {
96 | led_count = 0;
97 | LED1 = ~LED1;
98 |
99 | /* curr = make_hash();
100 |
101 | if ( last_hash == curr )
102 | {
103 | clear_frame();
104 | last_hash = curr = 0;
105 | }
106 | last_hash = curr; */
107 | }
108 |
109 | TF0 = 0;
110 | TR0 = 1;
111 | }
112 |
113 | void SerialPortInt() interrupt 4
114 | {
115 | uint8 rx = 0;
116 |
117 | if( TI == 1 )
118 | {
119 | TI = 0;
120 | if ( RS485En == 0 )
121 | {
122 | return;
123 | }
124 |
125 | if ( send_count < data_count )
126 | {
127 | TB8 = 0;
128 | SBUF = ascii_frame[send_count];
129 | send_count++;
130 | }
131 | else
132 | {
133 | RS485En = 0; //rx
134 | clear_frame();
135 | }
136 |
137 | }
138 | else
139 | if( RI == 1 )
140 | {
141 |
142 | if ( RS485En == 0 && BUSY == 1 ) // rx and not busy
143 | {
144 | rx = SBUF;
145 | RI = 0;
146 | if ( rx == 0 ) return; //discard bad characters
147 |
148 | if ( data_count == 0 )
149 | {
150 | if ( rx == ':' ) // new frame
151 | {
152 | ascii_frame[data_count++] = rx;
153 | }
154 | }
155 | else
156 | {
157 | ascii_frame[data_count++] = rx;
158 |
159 | if ( data_count >= 9 )
160 | {
161 | if ( (ascii_frame[data_count-1] == LF) && (ascii_frame[data_count-2] == CR) )
162 | {
163 | BUSY = 0; // device busy = true
164 |
165 | execute_modbus_command();
166 |
167 | BUSY = 1; // device busy = false
168 | }
169 | }
170 | if ( data_count == ASCII_FRAME_SIZE ) // bad frame size
171 | {
172 | clear_frame();
173 | }
174 | }
175 | }
176 | else
177 | RI = 0;
178 | }
179 | }
180 |
181 | void update_display()
182 | {
183 | int x = (int)GetHoldingRegisterValue(0); // number
184 | int L = (int)GetHoldingRegisterValue(1); // bright
185 |
186 | if ( x >= 0 && x <= 9 )
187 | {
188 | P2 = _7seg[x];
189 | ONE = 0; //off 1
190 | }
191 | else
192 | {
193 | if ( x < 20 )
194 | {
195 | x = x % 10;
196 | P2 = _7seg[x];
197 | ONE = 1;
198 | }
199 | }
200 |
201 | if ( L >= 0 && L <= 5 )
202 | level = L;
203 | }
204 |
205 | void main(void)
206 | {
207 | Serial_PWM_Init();
208 |
209 | SetCoilValue(0,1);
210 | SetHoldingRegisterValue(0,1);
211 |
212 | EN_D = DISPLAY_OFF;
213 | LED1 = 1;
214 | RS485En = 0;
215 | BUSY = 1;
216 |
217 | clear_frame();
218 |
219 | EA = 1;
220 |
221 | while (1)
222 | {
223 | update_display();
224 | delay_ms(1000);
225 | }
226 | }
--------------------------------------------------------------------------------
/C_Code_Slave/U2.STANDARD.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/C_Code_Master/master.h:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | /* ASCII FRAME size */
4 | #define ASCII_FRAME_SIZE 60 //CHANGE
5 |
6 | /* ASCII FRAME END CHARS */
7 | #define CR 0x0D
8 | #define LF 0x0A
9 |
10 | /* ASCII FRAME */
11 | uint8 idata ascii_frame[ASCII_FRAME_SIZE]; // !!!size = 255
12 | uint8 idata data_count = 0;
13 |
14 | uint8 idata send_count = 0;
15 |
16 | bit broadcast = 0;
17 |
18 | /* functions codes parameters */
19 | uint16 idata parameters[10];
20 | uint8 byte_count = 0;
21 |
22 | /* functions prototypes*/
23 | void gen_start();
24 | void gen_dir(uint8);
25 | void gen_function(uint8);
26 | void gen_lrc();
27 | void clear_frame();
28 | uint8 lrc_calc();
29 | void tx_assci_frame();
30 |
31 | /* functions Prototypes */
32 | void ReadCoilStatus_01(uint8, uint16, uint16);
33 | void ReadInputStatus_02(uint8, uint16, uint16);
34 | void ReadHoldingRegisters_03(uint8, uint16, uint16);
35 | void ReadInputRegisters_04(uint8, uint16, uint16);
36 | void ForceSingleCoil_05(uint8, uint16, uint8);
37 | void PresetSingleRegister_06(uint8, uint16, uint16);
38 | void ForceMultipleCoils_15(uint8, uint16, uint16);
39 | void PresetMultipleRegisters_16(uint8, uint16, uint16);
40 |
41 | /* aux functions */
42 | void gen_start()
43 | {
44 | ascii_frame[0] = 0x3A;
45 | }
46 |
47 | void gen_dir(uint8 val) //Gen dir data
48 | {
49 | ByteToAscii(val);
50 | ascii_frame[1] = ascii[0];
51 | ascii_frame[2] = ascii[1];
52 | }
53 |
54 | void gen_function(uint8 val) // Gen func code
55 | {
56 | ByteToAscii(val);
57 | ascii_frame[3] = ascii[0];
58 | ascii_frame[4] = ascii[1];
59 | }
60 |
61 | void gen_lrc()
62 | {
63 | ByteToAscii(lrc_calc());
64 | ascii_frame[data_count++] = ascii[0];
65 | ascii_frame[data_count++] = ascii[1];
66 |
67 | ascii_frame[data_count++] = CR;
68 | ascii_frame[data_count++] = LF;
69 | }
70 |
71 | void clear_frame()
72 | {
73 | uint8 i = 0;
74 | data_count = 0;
75 | send_count = 0;
76 | for ( i = 0; i < ASCII_FRAME_SIZE; i++ )
77 | {
78 | ascii_frame[i] = 0;
79 | }
80 | }
81 |
82 | void tx_assci_frame()
83 | {
84 | RS485En = 1; // set for tx
85 |
86 | send_count = 1;
87 | TI = 0;
88 | TB8 = 0;
89 | SBUF = ascii_frame[0];
90 | while ( send_count != 0 );
91 | }
92 |
93 | uint8 lrc_calc()
94 | {
95 | uint8 result = 0, i = 0;
96 |
97 | for ( i = 1; i < data_count; i+=2 )
98 | {
99 | result += AsciiToByte(ascii_frame[i], ascii_frame[i+1]);
100 | }
101 |
102 | result = ~result;
103 | return ( result + 1 );
104 | }
105 |
106 | void tx_byte2(char byte) //transmit a single byte
107 | {
108 | TI = 0;
109 | TB8 = 0;
110 | SBUF = byte;
111 | while (!TI);
112 | }
113 |
114 | /* functions Codes */
115 | void ReadCoilStatus_01(uint8 dir, uint16 start, uint16 cant) // 0x01, OK
116 | {
117 | int i = 0;
118 |
119 | gen_start();
120 | gen_dir(dir);
121 | gen_function(1); // 0x01
122 | data_count = 5;
123 |
124 | TwoByteToAscii(start - 1);
125 | for ( i = 3; i >= 0; i-- )
126 | {
127 | ascii_frame[data_count++] = ascii[i];
128 | }
129 |
130 | TwoByteToAscii(cant);
131 | for ( i = 3; i >= 0; i-- )
132 | {
133 | ascii_frame[data_count++] = ascii[i];
134 | }
135 | gen_lrc();
136 |
137 | tx_assci_frame();
138 | }
139 |
140 | void ReadInputStatus_02(uint8 dir, uint16 start, uint16 cant) // 0x02, OK!!!
141 | {
142 | int i = 0;
143 |
144 | gen_start();
145 | gen_dir(dir);
146 | gen_function(2); // 0x02
147 | data_count = 5;
148 |
149 | TwoByteToAscii(start - 1);
150 | for ( i = 3; i >= 0; i-- )
151 | {
152 | ascii_frame[data_count++] = ascii[i];
153 | }
154 |
155 | TwoByteToAscii(cant);
156 | for ( i = 3; i >= 0; i-- )
157 | {
158 | ascii_frame[data_count++] = ascii[i];
159 | }
160 | gen_lrc();
161 |
162 | tx_assci_frame();
163 | }
164 |
165 |
166 | void ReadHoldingRegisters_03(uint8 dir, uint16 start, uint16 cant) // 0x03, OK!!
167 | {
168 | int i = 0;
169 |
170 | gen_start();
171 | gen_dir(dir);
172 | gen_function(3); // 0x03
173 | data_count = 5;
174 |
175 | TwoByteToAscii(start - 1);
176 | for ( i = 3; i >= 0; i-- )
177 | {
178 | ascii_frame[data_count++] = ascii[i];
179 | }
180 |
181 | TwoByteToAscii(cant);
182 | for ( i = 3; i >= 0; i-- )
183 | {
184 | ascii_frame[data_count++] = ascii[i];
185 | }
186 | gen_lrc();
187 |
188 | tx_assci_frame();
189 | }
190 |
191 |
192 | void ReadInputRegisters_04(uint8 dir, uint16 start, uint16 cant) // 0x04 , OK!!!
193 | {
194 | int i = 0;
195 |
196 | gen_start();
197 | gen_dir(dir);
198 | gen_function(4); // 0x04
199 | data_count = 5;
200 |
201 | TwoByteToAscii(start - 1);
202 | for ( i = 3; i >= 0; i-- )
203 | {
204 | ascii_frame[data_count++] = ascii[i];
205 | }
206 |
207 | TwoByteToAscii(cant);
208 | for ( i = 3; i >= 0; i-- )
209 | {
210 | ascii_frame[data_count++] = ascii[i];
211 | }
212 | gen_lrc();
213 |
214 | tx_assci_frame();
215 | }
216 |
217 | void ForceSingleCoil_05(uint8 dir, uint16 coilID, uint8 value) // 0x05, OK!!
218 | {
219 | int i = 0;
220 |
221 | gen_start();
222 | gen_dir(dir);
223 | gen_function(5); // 0x05
224 | data_count = 5;
225 |
226 | TwoByteToAscii(coilID - 1);
227 | for ( i = 3; i >= 0; i-- )
228 | {
229 | ascii_frame[data_count++] = ascii[i];
230 | }
231 |
232 | if ( value > 0 )
233 | {
234 | TwoByteToAscii(65280); // value FF00
235 | }
236 | else
237 | {
238 | TwoByteToAscii(0); // value 0000
239 | }
240 |
241 | for ( i = 3; i >= 0; i-- )
242 | {
243 | ascii_frame[data_count++] = ascii[i];
244 | }
245 |
246 | gen_lrc();
247 |
248 | tx_assci_frame();
249 | }
250 |
251 | void PresetSingleRegister_06(uint8 dir, uint16 registerID, uint16 value) // 0x06, OK!!!
252 | {
253 | int i = 0;
254 |
255 | gen_start();
256 | gen_dir(dir);
257 | gen_function(6); // 0x06
258 | data_count = 5;
259 |
260 | TwoByteToAscii(registerID - 1);
261 | for ( i = 3; i >= 0; i-- )
262 | {
263 | ascii_frame[data_count++] = ascii[i];
264 | }
265 |
266 | TwoByteToAscii(value);
267 | for ( i = 3; i >= 0; i-- )
268 | {
269 | ascii_frame[data_count++] = ascii[i];
270 | }
271 |
272 | gen_lrc();
273 |
274 | tx_assci_frame();
275 | }
276 |
277 | void ForceMultipleCoils_15(uint8 dir, uint16 start, uint16 cant) //15 OKKK!!!
278 | {
279 | int i = 0;
280 |
281 | gen_start();
282 | gen_dir(dir);
283 | gen_function(15); // 0x0F
284 | data_count = 5;
285 |
286 | TwoByteToAscii(start - 1);
287 | for ( i = 3; i >= 0; i-- )
288 | {
289 | ascii_frame[data_count++] = ascii[i];
290 | }
291 |
292 | TwoByteToAscii(cant);
293 | for ( i = 3; i >= 0; i-- )
294 | {
295 | ascii_frame[data_count++] = ascii[i];
296 | }
297 |
298 | ByteToAscii(byte_count);
299 | ascii_frame[data_count++] = ascii[0];
300 | ascii_frame[data_count++] = ascii[1];
301 |
302 | for ( i = 0; i < byte_count; i++ )
303 | {
304 | ByteToAscii((uint8)parameters[i]);
305 | ascii_frame[data_count++] = ascii[0];
306 | ascii_frame[data_count++] = ascii[1];
307 | }
308 |
309 | gen_lrc();
310 |
311 | tx_assci_frame();
312 | }
313 |
314 | void PresetMultipleRegisters_16(uint8 dir, uint16 start, uint16 cant) //16, OK!!!
315 | {
316 | int i = 0;
317 |
318 | gen_start();
319 | gen_dir(dir);
320 | gen_function(16); // 0x10h
321 | data_count = 5;
322 |
323 | TwoByteToAscii(start - 1);
324 | for ( i = 3; i >= 0; i-- )
325 | {
326 | ascii_frame[data_count++] = ascii[i];
327 | }
328 |
329 | TwoByteToAscii(cant);
330 | for ( i = 3; i >= 0; i-- )
331 | {
332 | ascii_frame[data_count++] = ascii[i];
333 | }
334 |
335 | ByteToAscii(byte_count * 2);
336 | ascii_frame[data_count++] = ascii[0];
337 | ascii_frame[data_count++] = ascii[1];
338 |
339 | for ( i = 0; i < byte_count; i++ )
340 | {
341 | TwoByteToAscii(parameters[i]);
342 |
343 | ascii_frame[data_count++] = ascii[3];
344 | ascii_frame[data_count++] = ascii[2];
345 | ascii_frame[data_count++] = ascii[1];
346 | ascii_frame[data_count++] = ascii[0];
347 | }
348 |
349 | gen_lrc();
350 |
351 | tx_assci_frame();
352 | }
353 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2.HEX:
--------------------------------------------------------------------------------
1 | :03000000020142B8
2 | :03000B00020B40A5
3 | :06000E00BF0901D35005FB
4 | :05001400EF2430FF2283
5 | :05001900EF2437FF2277
6 | :03002300020BDBF2
7 | :10002600E0A3FEE0FFEF8DF0A4CFC5F0CCA42CFC3E
8 | :09003600EE60038DF0A42CFE2203
9 | :10003F00C2D1C2D5EE30E707D2D1D2D51200ECEC47
10 | :10004F0030E705B2D11200F412006730D10312006D
11 | :10005F00EC30D5031200F422BC000EBE0032EF8D3F
12 | :10006F00F08420D226FFADF0227B0075F008EF2F31
13 | :10007F00FFEE33FEEB33FBEE9DEB9C4005FBEE9D5D
14 | :10008F00FE0FD5F0E9E4CECDCBCC227EFF7FFF2251
15 | :10009F00EDB410005022EE8DF084FEEF54F045F0D9
16 | :1000AF00C48DF084C4FCEF540FC445F0C48DF084AC
17 | :1000BF00FFADF0E4CC4FFF22EE8DF08420D2CC7E4A
18 | :1000CF0008CEC5F0CDCBEF2FFFED33FD10D7079B3B
19 | :1000DF005005D5F0F1229BFD0FD5F0EA22C3E49F26
20 | :0D00EF00FFE49EFE22C3E49DFDE49CFC2284
21 | :1000FC00E58124FBF9EC6480FCE76480F78005E57E
22 | :10010C008124FBF9E5D054184404F87A04E687F00E
23 | :10011C00B5F00A0908DAF6E4FEFF020133E45004F4
24 | :07012C00FE0480F5F480F1F0
25 | :0F01330074FCD083D0822581F581C082C08322E5
26 | :100142007581B9E4787FF6D8FD900D38E49370029A
27 | :10015200804EC31392D5C31392D1FFA3E493F8B098
28 | :10016200D5402130D505E4A393F5A0E420D102A324
29 | :100172009320D507F608DFF3A380D1F208B800F682
30 | :1001820005A080F2E8030303541F2420F9E8540772
31 | :10019200F8E4D333B80002800333D8FD47F780D8A0
32 | :0601A20075A0FF020D0C28
33 | :0B01A800751800BE0003BF08004003F4
34 | :1001B300E4FF228F038E02EA75F003C313CB13CB44
35 | :1001C300D5F0F88B19EF5407FA74010A8002C33390
36 | :1001D300DAFCFEE519243EF8EE56B40001D3E44000
37 | :0401E3000104FF22F2
38 | :1001E7008E1A8F1BE51AB40005E51BB40800400101
39 | :1001F70022AB1B75F003E51AC313CB13CBD5F0F86D
40 | :100207008B04E51B5407FFFA0A74018002C333DA33
41 | :0E021700FCFEEC243EF8EE56B40001D3400489
42 | :040225007E018002D4
43 | :10022900E4FEBE0105EDB4010122EE7004ED70019A
44 | :0802390022EE7017EDB4011371
45 | :10024100EC243EF874018F030B8002C333DBFCFA0C
46 | :0A025100E64AF6EEB40117ED701452
47 | :10025B00EC243EF874018F030B8002C333DBFCF4F8
48 | :05026B00FAE65AF6223C
49 | :08027000BE0003BF02004004C0
50 | :04027800E4FEFF227F
51 | :0B027C00EF2F2440F8860608860722BA
52 | :100287008E128F138C148D15E512B40005E513B487
53 | :1002970002005015E4C0E0C0E0C014C015FCFD74B6
54 | :0902A700FFFEFF1200FCBF010183
55 | :0102B000222B
56 | :0D02B100E51325132440F8A61408A6152215
57 | :0B02BE00751800BE0003BF08004003DD
58 | :1002C900E4FF228F038E02EA75F003C313CB13CB2D
59 | :1002D900D5F0F88B19EF5407FA74010A8002C33379
60 | :1002E900DAFCFEE519243FF8EE56B40001D3E440E8
61 | :0402F9000104FF22DB
62 | :0802FD00BE0003BF0200400433
63 | :04030500E4FEFF22F1
64 | :0B030900EF2F2444F886060886072228
65 | :1003140075F010EF84FEEF540FFDBE0901D35007B2
66 | :07032400EE2430F5218005F5
67 | :0C032B00EE2437F521EDB40901D3500693
68 | :06033700ED2430F5222246
69 | :06033D00ED2437F5222239
70 | :05034300BF410040066F
71 | :06034800EF24C9FF800450
72 | :0A034E00EF24D0FFEDB4410040069B
73 | :06035800ED24C9FD800444
74 | :0C035E00ED24D0FDEF75F010A42DFF225F
75 | :10036A0078047925E4F709D8FCE4FCFDBE0004BF53
76 | :05037A000001D3402248
77 | :10037F00EF540FFAED2425F8A6028F03EE75F00463
78 | :10038F00C313CB13CBD5F0F8FE8B070DED70D80C44
79 | :10039F0080D5E4FBEB2425F8860712000EEB242111
80 | :0803AF00F8A6070BBB04ED22C8
81 | :1003B700AF21AD221203438F03AF23AD24120343B2
82 | :1003C700751C008F1DE4251DF51FEB351CF51EAEB2
83 | :0403D7001EAF1F2214
84 | :1003DB00750900750A00750B007984B70900500385
85 | :1003EB000204A67984E724FEF7FE2446F88607EE7E
86 | :1003FB002447F886051203438F0BE724FEF71204FC
87 | :08040B00D1EF8F0A650B6003BD
88 | :100413000204A679498707794A8705120343EF8FB8
89 | :0304230009700459
90 | :04042600D200800B75
91 | :08042A00C200E509640560034E
92 | :100432000204A6794B8707794C87051203438F0A7A
93 | :10044200BF0502802D5010E50A14601A14601A14B8
94 | :10045200601A14601A8027E50A24FA601824F760EB
95 | :060462001714601780185A
96 | :030468000205008A
97 | :03046B000205CFB8
98 | :03046E0002069EE5
99 | :0304710002074837
100 | :030474000207F28A
101 | :0304770002087800
102 | :03047A000208BFB6
103 | :03047D000209CAA7
104 | :010480002259
105 | :100481001204D11203147984E7072448F8A621E75E
106 | :10049100072448F8A622E7072448F8760DE7072441
107 | :0504A10048F8760A2274
108 | :1004A60079847700798577007E3C7948E4F709DE20
109 | :0204B600FC2226
110 | :0304B8003000070A
111 | :1004BB00C2B2C2000204A6D2B279857701C299C238
112 | :0604CB009B79488799228D
113 | :1004D1007E00751A01798487F0E51AB5F000501A8B
114 | :1004E100E51A2448F88607E51A2449F88605120317
115 | :0F04F10043EE2FFE051A051A80DBEEF404FF22FE
116 | :10050000E4F513F514F515F50EF51679847707FB68
117 | :10051000EB244DF8EB2421F9E6F70BBB04F21203B0
118 | :07052000B78E0F8F10E4FB02
119 | :10052700EB2451F8EB2421F9E6F70BBB04F2120395
120 | :10053700B78E118F12EF2510F514E511350FF5134E
121 | :10054700850F0C85100DE50CB51305E50DB51400E9
122 | :020557005063EF
123 | :10055900E4F50EF515E50EB408005033E50D250E4A
124 | :0D056900FEE4350CB51304EEB5140050226D
125 | :10057600E50D250EFFE4350CFE1201A88F17BF010D
126 | :010586000D67
127 | :0F0587007401AB0E0B8002C333DBFC4215050E73
128 | :1005960080C6AF151203147984E7072448F8A6210C
129 | :1005A600E7072448F8A6220516E50D2408F50DE40C
130 | :1005B600350CF50C8091AF16120314794DA72179ED
131 | :0905C6004EA7221204810204B8C0
132 | :1005CF00E4F513F514F515F50EF51679847707FB99
133 | :1005DF00EB244DF8EB2421F9E6F70BBB04F21203E1
134 | :0705EF00B78E0F8F10E4FB33
135 | :1005F600EB2451F8EB2421F9E6F70BBB04F21203C6
136 | :10060600B78E118F12EF2510F514E511350FF5137E
137 | :10061600850F0C85100DE50CB51305E50DB5140019
138 | :0206260050631F
139 | :10062800E4F50EF515E50EB408005033E50D250E7A
140 | :0D063800FEE4350CB51304EEB5140050229D
141 | :10064500E50D250EFFE4350CFE1202BE8F17BF0126
142 | :010655000D97
143 | :0F0656007401AB0E0B8002C333DBFC4215050EA3
144 | :1006650080C6AF151203147984E7072448F8A6213C
145 | :10067500E7072448F8A6220516E50D2408F50DE43C
146 | :10068500350CF50C8091AF16120314794DA721791D
147 | :090695004EA7221204810204B8F0
148 | :10069E00E4F50CF50DF50EF50FF51079847707FBE3
149 | :1006AE00EB244DF8EB2421F9E6F70BBB04F2120311
150 | :0706BE00B78E118F12E4FB5F
151 | :1006C500EB2451F8EB2421F9E6F70BBB04F21203F6
152 | :1006D500B78E138F14EF2512F50DE5133511F50CB3
153 | :1006E500851115851216E515B50C05E516B50D0030
154 | :0206F500503E75
155 | :1006F700AE15AF161202708E0E8F0FAE0EAF0F1221
156 | :10070700036A7984E7072448F8A624E7072448F80A
157 | :10071700A623E7072448F8A622E7072448F8A621D6
158 | :10072700051005100516E51670BA051580B6AF1049
159 | :10073700120314794DA721794EA7221204810204CE
160 | :01074700B8F9
161 | :10074800E4F50CF50DF50EF50FF51079847707FB38
162 | :10075800EB244DF8EB2421F9E6F70BBB04F2120366
163 | :07076800B78E118F12E4FBB4
164 | :10076F00EB2451F8EB2421F9E6F70BBB04F212034B
165 | :10077F00B78E138F14EF2512F50DE5133511F50C08
166 | :10078F00851115851216E515B50C05E516B50D0085
167 | :02079F00503ECA
168 | :1007A100AE15AF161202FD8E0E8F0FAE0EAF0F12E9
169 | :1007B100036A7984E7072448F8A624E7072448F860
170 | :1007C100A623E7072448F8A622E7072448F8A6212C
171 | :1007D100051005100516E51670BA051580B6AF109F
172 | :1007E100120314794DA721794EA722120481020424
173 | :0107F100B84F
174 | :1007F200E4F50EF50FF510F511F50CF50DF50CF508
175 | :010802000DE8
176 | :10080300E50D244DF8E50D2421F9E6F7050DE50D79
177 | :0F081300B404ED1203B78E0E8F0FE4F50CF50D44
178 | :10082200E50D2451F8E50D2421F9E6F7050DE50D56
179 | :10083200B404ED1203B78E108F11E5104511601448
180 | :10084200E4FFFDFCC0E0C0E0C010C0117EFF120159
181 | :040852000BBF0019BF
182 | :10085600AE0EAF0FE510B40006E511B40001D3E407
183 | :09086600400104FD1201E78003CA
184 | :09086F000204A61204810204B87F
185 | :05087800E4F50CF50D94
186 | :10087D00E50D244DF8E50D2421F9E6F7050DE50DFF
187 | :0C088D00B404ED1203B78E0E8F0FE4FBD5
188 | :10089900EB2451F8EB2421F9E6F70BBB04F2120320
189 | :1008A900B78E108F11AE0EAF0FAC10AD11120287BB
190 | :0608B9001204810204B8E4
191 | :1008BF00E4F50CF50DF50EF50FF510F511F512F534
192 | :0508CF0013F514F515FE
193 | :1008D400E515244DF8E5152421F9E6F70515E51588
194 | :0C08E400B404ED1203B78E168F17E4FB6E
195 | :1008F000EB2451F8EB2421F9E6F70BBB04F21203C9
196 | :10090000B78E188F19EF2517F50DE5183516F50C6C
197 | :1009100079558707795687051203438F10798477B5
198 | :100920000F79907700E4F514F515E514B40005E5AA
199 | :0609300015B51000502F68
200 | :100936007984E72448F88607E72449F886051203F0
201 | :10094600438F0EE72402F77990E70725E02491F814
202 | :10095600760008A60E0515E51570C9051480C5852F
203 | :100966001614851715E514B50C05E515B50D0050DB
204 | :010976004937
205 | :10097700E515C39517F51175F008E51184F512E52E
206 | :10098700115407F5137401AA130A8002C333DAFC62
207 | :10099700FEE51225122491F909EE57F50FAE14AFB3
208 | :1009A70015E50FB40001D3E4400104FD1201E7058A
209 | :1009B70015E51570AF051480AB7984770D120481A6
210 | :0309C7000204B86F
211 | :0F09CA00E4F50CF50DF50EF50FF510F511F5121E
212 | :1009D900E512244DF8E5122421F9E6F70512E5128E
213 | :0C09E900B404ED1203B78E138F14E4FB6E
214 | :1009F500EB2451F8EB2421F9E6F70BBB04F21203C3
215 | :100A0500B78E158F167955870779568705120343D3
216 | :100A15007990A7077984770F75F0027990E784F7C5
217 | :100A2500E4F511F5127990E7FBE511B40005E5123F
218 | :050A3500B5030050486C
219 | :030A3A0075100034
220 | :100A3D007984870207EA2448F8E5102421F9E6F7BE
221 | :100A4D000510E5103395E0FCE51064044C70E112DF
222 | :100A5D0003B78E0E8F0FAB140514E514700205133A
223 | :100A6D00EBC3332440F8A60E08A60F0512E512704D
224 | :0F0A7D00AC051180A87984770D1204810204B8AA
225 | :100A8C00C2B2758921758DF4758BF4758CF7758AE6
226 | :100A9C0086E4FE7F01FC7D01120287E4F529752AAC
227 | :100AAC0005D2A9D28C759850D2ACD2BCD2BBD28E06
228 | :010ABC002217
229 | :100ABD00E4F536F537F538F5397984E7FBE5386433
230 | :0B0ACD0080B48005E539B50300502916
231 | :100AD800E5392401FFE43538FEE5392448F8E6FD18
232 | :100AE8007C0012002BE5372FF537E5363EF5360545
233 | :100AF80039E53970C9053880C5AE36AF37E4FC7DB5
234 | :100B08001312002B7C037DF112003F8C068D072207
235 | :100B1800E4F53AF53BF53CF53DE53CB50605E53D24
236 | :050B2800B507005012AA
237 | :100B2D00053BE53B7002053A053DE53D70E6053CAC
238 | :030B3D0080E22231
239 | :100B4000C0E0C0F0C0D0C000C002C003C004C005F7
240 | :100B5000C006C007E4FEFF1201A87C008F05758C5B
241 | :100B6000F7758A86E52B6480B48006E52CB4000115
242 | :030B7000D350045B
243 | :040B7300D2B7800B6A
244 | :100B7700EDFBECFEEE4B24FFB392B78529F0B2F7FD
245 | :0E0B8700E52B6480B5F005E52CB52A00400C86
246 | :100B9500E52A24FBF52CE52934FFF52B052CE52C5E
247 | :100BA5007002052B052EE52E7002052DE52DB401ED
248 | :060BB5000CE52EB4F4076C
249 | :100BBB00E4F52DF52EB293C28DD28CD007D006D092
250 | :100BCB0005D004D003D002D000D0D0D0F0D0E0328A
251 | :100BDB00C0E0C0F0C083C082C0D0C000C001C00262
252 | :100BEB00C003C004C005C006C00775080030993E9D
253 | :050BFB00C29920B21BAD
254 | :100C0000D007D006D005D004D003D002D001D00048
255 | :100C1000D0D0D082D083D0F0D0E032798487F07801
256 | :070C200085E6B5F000500B62
257 | :0B0C2700C29BE62448F987990680660E
258 | :0A0C3200C2B21204A680C73098C4B5
259 | :080C3C0020B257E535B4015266
260 | :100C4400859908C298E508700280B17984E7700E2E
261 | :050C5400E508B43A3A86
262 | :090C5900E7072448F8A6088036DC
263 | :100C62007984870607EE2448F8A6088706B70900A4
264 | :020C7200401729
265 | :0E0C7400EE2447F8B60A10EE2446F9B70D0933
266 | :0E0C8200E4F5351203DB7535017984B73C08C3
267 | :0B0C90001204A6020C00C298020C0027
268 | :100C9B00E4FEFF1202708E3A8F3BE4FE7F011202DC
269 | :100CAB00708E3C8F3DE53A20E7186480B48006E5F2
270 | :070CBB003BB40901D3500B0B
271 | :0B0CC200E53B2486F886A0C2A0802637
272 | :0E0CCD00E53A6480B48005E53BB4140050188D
273 | :100CDB00AE3AAF3BE4FC7D0A12003F8C3A8D3BE50C
274 | :100CEB003B2486F886A0D2A0E53C20E7136480B4B1
275 | :100CFB008006E53DB40501D35006853C29853D2A88
276 | :010D0B0022C5
277 | :100D0C00120A8CE4FEFF7D011201E7E4FCFEFF12E7
278 | :100D1C000287D2B7D293C2B27535011204A6D2AFF4
279 | :0C0D2C00120C9B7E037FE8120B1880F471
280 | :100D3800082B000128867E42ECE6D2B69E62FEF2BF
281 | :010D480000AA
282 | :00000001FF
283 |
--------------------------------------------------------------------------------
/C_Code_Slave/modbus.h:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | /* ASCII FRAME size */
5 | #define ASCII_FRAME_SIZE 60 //CHANGE
6 |
7 | /* ASCII FRAME END CHARS */
8 | #define CR 0x0D
9 | #define LF 0x0A
10 |
11 | /* ASCII FRAME */
12 | uint8 idata ascii_frame[ASCII_FRAME_SIZE]; // max size = 255
13 | uint8 idata data_count = 0;
14 | uint8 idata send_count = 0;
15 | bit broadcast = 0;
16 |
17 | /* functions prototypes*/
18 | void execute_modbus_command();
19 | void gen_lrc();
20 | void clear_frame();
21 | uint8 lrc_calc();
22 | void tx_assci_frame();
23 |
24 | void ResponseReadCoilsStatus_01();
25 | void ResponseReadInputStatus_02();
26 | void ResponseReadHoldingRegisters_03();
27 | void ResponseReadInputRegisters_04();
28 | void ResponseForceSingleCoil_05();
29 | void ResponsePresetSingleRegister_06();
30 | void ResponseForceMultipleCoils_15();
31 | void ResponsePresetMultipleRegisters_16();
32 |
33 | void execute_modbus_command()
34 | {
35 | uint8 is_me = 0, fun = 0, lrc = 0;
36 | if ( data_count < 9 )
37 | {
38 | clear_frame(); // bad frame discard , minimun 9 characters for valid
39 | return;
40 | }
41 | data_count -= 2; //skip cr lf
42 | lrc = AsciiToByte(ascii_frame[data_count-2], ascii_frame[data_count-1]);
43 | data_count -= 2; //skip lrc
44 | fun = lrc_calc();
45 | if ( fun != lrc )
46 | {
47 | clear_frame(); // bad LRC, frame discard
48 | return;
49 | }
50 |
51 | /* frame ok */
52 | is_me = AsciiToByte(ascii_frame[1], ascii_frame[2]);
53 | if ( is_me == 0 )
54 | {
55 | broadcast = 1;
56 | }
57 | else
58 | {
59 | broadcast = 0;
60 | if ( DIR != is_me )
61 | {
62 | clear_frame();
63 | return;
64 | }
65 | }
66 |
67 | fun = AsciiToByte(ascii_frame[3], ascii_frame[4]);
68 | switch ( fun )
69 | {
70 | case 1:
71 | {
72 | ResponseReadCoilsStatus_01();
73 | break;
74 | }
75 | case 2:
76 | {
77 | ResponseReadInputStatus_02();
78 | break;
79 | }
80 | case 3:
81 | {
82 | ResponseReadHoldingRegisters_03();
83 | break;
84 | }
85 | case 4:
86 | {
87 | ResponseReadInputRegisters_04();
88 | break;
89 | }
90 | case 5:
91 | {
92 | ResponseForceSingleCoil_05();
93 | break;
94 | }
95 | case 6:
96 | {
97 | ResponsePresetSingleRegister_06();
98 | break;
99 | }
100 | case 15:
101 | {
102 | ResponseForceMultipleCoils_15();
103 | break;
104 | }
105 | case 16:
106 | {
107 | ResponsePresetMultipleRegisters_16();
108 | break;
109 | }
110 | default:
111 | {
112 | break;
113 | }
114 | }
115 | }
116 |
117 | void gen_lrc()
118 | {
119 | ByteToAscii(lrc_calc());
120 | ascii_frame[data_count++] = ascii[0];
121 | ascii_frame[data_count++] = ascii[1];
122 |
123 | ascii_frame[data_count++] = CR;
124 | ascii_frame[data_count++] = LF;
125 | }
126 | void clear_frame()
127 | {
128 | uint8 i = 0;
129 | data_count = 0;
130 | send_count = 0;
131 | for ( i = 0; i < ASCII_FRAME_SIZE; i++ )
132 | {
133 | ascii_frame[i] = 0;
134 | }
135 | }
136 | void tx_assci_frame()
137 | {
138 | if ( broadcast == 1 )
139 | {
140 | RS485En = 0; //rx
141 | broadcast = 0;
142 | clear_frame();
143 | return ;
144 | }
145 |
146 | RS485En = 1; // set for tx
147 | send_count = 1;
148 | TI = 0;
149 | TB8 = 0;
150 | SBUF = ascii_frame[0];
151 | }
152 | uint8 lrc_calc()
153 | {
154 | uint8 result = 0, i = 0;
155 | for ( i = 1; i < data_count; i+=2 )
156 | {
157 | result += AsciiToByte(ascii_frame[i], ascii_frame[i+1]);
158 | }
159 | result = ~result;
160 | return ( result + 1 );
161 | }
162 |
163 | /* function codes */
164 | void ResponseReadCoilsStatus_01() // 0x01, OK
165 | {
166 | uint16 start = 0, cant = 0;
167 | uint16 i = 0, limit = 0;
168 | uint8 coils = 0, k = 0, new_data_count = 0;
169 | data_count = 7; // data count byte reserved
170 | for ( i = 0; i < 4; i++ )
171 | {
172 | ascii[i] = ascii_frame[i + 5];
173 | }
174 | start = AsciiToTwoByte();
175 | for ( i = 0; i < 4; i++ )
176 | {
177 | ascii[i] = ascii_frame[i + 9];
178 | }
179 | cant = AsciiToTwoByte();
180 | limit = start + cant;
181 |
182 | /* querying coils status */
183 | for ( i = start; i < limit; i += 8 )
184 | {
185 | k = 0;
186 | coils = 0;
187 | while ( k < 8 && i + k < limit)
188 | {
189 | uint8 val = GetCoilValue(i + k); // status of coil i+k
190 | if ( val == 1 ) //coil active
191 | {
192 | coils |= (1 << k);
193 | }
194 | k++;
195 | }
196 | ByteToAscii(coils);
197 | ascii_frame[data_count++] = ascii[0];
198 | ascii_frame[data_count++] = ascii[1];
199 | new_data_count++; // add one byte to response frame
200 | }
201 |
202 | ByteToAscii(new_data_count);
203 | ascii_frame[5] = ascii[0];
204 | ascii_frame[6] = ascii[1];
205 |
206 | gen_lrc();
207 |
208 | tx_assci_frame();
209 | return;
210 | }
211 | void ResponseReadInputStatus_02() // 0x02, OK!!!
212 | {
213 | uint16 start = 0, cant = 0;
214 | uint16 i = 0, limit = 0;
215 | uint8 inputs = 0, k = 0, new_data_count = 0;
216 | data_count = 7; // data count byte reserved
217 | for ( i = 0; i < 4; i++ )
218 | {
219 | ascii[i] = ascii_frame[i + 5];
220 | }
221 | start = AsciiToTwoByte();
222 | for ( i = 0; i < 4; i++ )
223 | {
224 | ascii[i] = ascii_frame[i + 9];
225 | }
226 |
227 | cant = AsciiToTwoByte();
228 | limit = start + cant;
229 |
230 | /* querying inputs status */
231 | for ( i = start; i < limit; i += 8 )
232 | {
233 | k = 0;
234 | inputs = 0;
235 | while ( k < 8 && i + k < limit)
236 | {
237 | uint8 val = GetInputValue(i + k); // status of input i+k
238 | if ( val == 1 ) //input active
239 | {
240 | inputs |= (1 << k);
241 | }
242 | k++;
243 | }
244 | ByteToAscii(inputs);
245 | ascii_frame[data_count++] = ascii[0];
246 | ascii_frame[data_count++] = ascii[1];
247 |
248 | new_data_count++; // add one byte to response frame
249 | }
250 |
251 | ByteToAscii(new_data_count);
252 | ascii_frame[5] = ascii[0];
253 | ascii_frame[6] = ascii[1];
254 |
255 | gen_lrc();
256 |
257 | tx_assci_frame();
258 | return;
259 | }
260 | void ResponseReadHoldingRegisters_03() // 0x03, OK!!!
261 | {
262 | uint16 start = 0, cant = 0;
263 | uint16 i = 0, limit = 0, status = 0;
264 | uint8 new_data_count = 0;
265 | data_count = 7; // data count byte reserved
266 | for ( i = 0; i < 4; i++ )
267 | {
268 | ascii[i] = ascii_frame[i + 5];
269 | }
270 | start = AsciiToTwoByte();
271 | for ( i = 0; i < 4; i++ )
272 | {
273 | ascii[i] = ascii_frame[i + 9];
274 | }
275 | cant = AsciiToTwoByte();
276 | limit = start + cant;
277 |
278 | /* querying holding registers status */
279 | for ( i = start; i < limit; i++ )
280 | {
281 | status = GetHoldingRegisterValue(i);
282 | TwoByteToAscii(status);
283 |
284 | ascii_frame[data_count++] = ascii[3];
285 | ascii_frame[data_count++] = ascii[2];
286 | ascii_frame[data_count++] = ascii[1];
287 | ascii_frame[data_count++] = ascii[0];
288 |
289 | new_data_count+=2; // add two bytes to response frame
290 | }
291 |
292 | ByteToAscii(new_data_count);
293 | ascii_frame[5] = ascii[0];
294 | ascii_frame[6] = ascii[1];
295 |
296 | gen_lrc();
297 |
298 | tx_assci_frame();
299 | return;
300 | }
301 | void ResponseReadInputRegisters_04() // 0x04, OK!!!!
302 | {
303 | uint16 start = 0, cant = 0;
304 | uint16 i = 0, limit = 0, status = 0;
305 | uint8 new_data_count = 0;
306 | data_count = 7; // data count byte reserved
307 | for ( i = 0; i < 4; i++ )
308 | {
309 | ascii[i] = ascii_frame[i + 5];
310 | }
311 | start = AsciiToTwoByte();
312 | for ( i = 0; i < 4; i++ )
313 | {
314 | ascii[i] = ascii_frame[i + 9];
315 | }
316 |
317 | cant = AsciiToTwoByte();
318 | limit = start + cant;
319 |
320 | /* querying input registers status */
321 | for ( i = start; i < limit; i++ )
322 | {
323 | status = GetInputRegisterValue(i);
324 |
325 | TwoByteToAscii(status);
326 | ascii_frame[data_count++] = ascii[3];
327 | ascii_frame[data_count++] = ascii[2];
328 | ascii_frame[data_count++] = ascii[1];
329 | ascii_frame[data_count++] = ascii[0];
330 |
331 | new_data_count+=2; // add two bytes to response frame
332 | }
333 |
334 | ByteToAscii(new_data_count);
335 | ascii_frame[5] = ascii[0];
336 | ascii_frame[6] = ascii[1];
337 |
338 | gen_lrc();
339 |
340 | tx_assci_frame();
341 | return;
342 | }
343 | void ResponseForceSingleCoil_05() // 0x05, OK!!!!
344 | {
345 | uint16 coilID = 0;
346 | uint16 value = 0;
347 | uint16 i = 0;
348 | for ( i = 0; i < 4; i++ )
349 | {
350 | ascii[i] = ascii_frame[i + 5];
351 | }
352 | coilID = AsciiToTwoByte(); //coil index
353 | for ( i = 0; i < 4; i++ )
354 | {
355 | ascii[i] = ascii_frame[i + 9];
356 | }
357 | value = AsciiToTwoByte(); //coil value
358 | if ( value == 0 || value == 65280 ) // 0 or 1, 0000h or FF00h
359 | {
360 | SetCoilValue(coilID, value > 0);
361 | }
362 | else
363 | {
364 | clear_frame();
365 | return ;
366 | }
367 |
368 | gen_lrc();
369 |
370 | tx_assci_frame();
371 | return;
372 | }
373 |
374 | void ResponsePresetSingleRegister_06() //0x06, OK!!!!
375 | {
376 | uint16 registerID = 0;
377 | uint16 value = 0;
378 | uint16 i = 0;
379 | for ( i = 0; i < 4; i++ )
380 | {
381 | ascii[i] = ascii_frame[i + 5];
382 | }
383 | registerID = AsciiToTwoByte(); //register index
384 | for ( i = 0; i < 4; i++ )
385 | {
386 | ascii[i] = ascii_frame[i + 9];
387 | }
388 | value = AsciiToTwoByte(); //register value
389 | SetHoldingRegisterValue(registerID, value);
390 |
391 | gen_lrc();
392 |
393 | tx_assci_frame();
394 | return;
395 | }
396 |
397 | void ResponseForceMultipleCoils_15() // 0x0F, OK
398 | {
399 | uint16 start = 0, cant = 0;
400 | uint16 i = 0, limit = 0;
401 | uint8 coils = 0, k = 0, new_data_count = 0, tempAdr = 0;
402 | uint8 index = 0, offset = 0;
403 | uint16 idata parameters[20];
404 | uint8 idata byte_count;
405 | for ( i = 0; i < 4; i++ )
406 | {
407 | ascii[i] = ascii_frame[i + 5];
408 | }
409 | start = AsciiToTwoByte();
410 | for ( i = 0; i < 4; i++ )
411 | {
412 | ascii[i] = ascii_frame[i + 9];
413 | }
414 | cant = AsciiToTwoByte();
415 | limit = start + cant;
416 |
417 | new_data_count = AsciiToByte(ascii_frame[13], ascii_frame[14] );
418 | data_count = 15;
419 |
420 | /* read new coils values */
421 | byte_count = 0;
422 | for ( i = 0; i < new_data_count; i++ )
423 | {
424 | coils = AsciiToByte(ascii_frame[data_count], ascii_frame[data_count+1]);
425 | data_count += 2;
426 | parameters[byte_count++] = coils;
427 | }
428 |
429 | /* force coils status */
430 | for ( i = start; i < limit; i++ )
431 | {
432 | tempAdr = i - start;
433 | index = tempAdr / 8;
434 | offset = tempAdr % 8;
435 | k = ( parameters[index] & ( 1 << offset ) );
436 | SetCoilValue(i, k > 0); // force status of coil i with k
437 | }
438 | /* response frame */
439 | data_count = 13;
440 |
441 | gen_lrc();
442 |
443 | tx_assci_frame();
444 | return;
445 | }
446 |
447 | void ResponsePresetMultipleRegisters_16() // 0x10, OK!!!
448 | {
449 | uint16 start = 0, cant = 0;
450 | uint16 i = 0, limit = 0, reg_value = 0;
451 | signed char j = 0;
452 | uint8 idata byte_count;
453 | for ( i = 0; i < 4; i++ )
454 | {
455 | ascii[i] = ascii_frame[i + 5];
456 | }
457 | start = AsciiToTwoByte();
458 | for ( i = 0; i < 4; i++ )
459 | {
460 | ascii[i] = ascii_frame[i + 9];
461 | }
462 | cant = AsciiToTwoByte();
463 | limit = start + cant;
464 |
465 | byte_count = AsciiToByte(ascii_frame[13], ascii_frame[14] );
466 | data_count = 15;
467 |
468 | /* read and set new holding registers values */
469 | byte_count /= 2;
470 | for ( i = 0; i < byte_count; i++ )
471 | {
472 | for ( j = 0; j < 4; j++ )
473 | {
474 | ascii[j] = ascii_frame[data_count++];
475 | }
476 | reg_value = AsciiToTwoByte();
477 | holding_registers_array[start++] = reg_value;
478 | }
479 |
480 | data_count = 13;
481 |
482 | gen_lrc();
483 |
484 | tx_assci_frame();
485 | return;
486 | }
487 |
--------------------------------------------------------------------------------
/C_Code_Master/U1.M51:
--------------------------------------------------------------------------------
1 | LX51 CODE BANKING LINKER/LOCATOR V05.08.10.309 06/23/15 22:21:24
2 | MS-DOS LX51 CODE BANKING LINKER/LOCATOR V05.08.10.309, INVOKED BY:
3 | C:\Program Files (x86)\Raisonance\Ride\Bin\LX51.EXE F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code&
4 | _Master\main.obj TO(F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code_Master\U1.aof) LIBPATH(C:\Progr&
5 | am Files (x86)\Raisonance\Ride\Lib\51) GENERATEDEPFILE MAP IX RS(256) RSI(128) CSIZE(65536) XSIZE&
6 | (65536) DEFN(XSTACKLEN,256) DEFN(TIM1_INIT,E8h) CO(0) DT(0) ID(0) XD(0) BI(0) ABSCODEOFFS(0) XMLM&
7 | (No,F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code_Master\U1-modules.Standard.xml) XMLF(No,8000,F:&
8 | \Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code_Master\U1-flash.Standard.xml) XML(F:\Reinier\Estudio\&
9 | TESIS\PROTEUS\Cap03\C_Code_Master\U1.Standard.xml) XMLRIDE(F:\Reinier\Estudio\TESIS\PROTEUS\Cap03&
10 | \C_Code_Master\U1-globals.Standard.xml)
11 |
12 |
13 | MEMORY MODEL: SMALL WITHOUT ANY FLOATING POINT ARITHMETIC
14 |
15 |
16 | INPUT MODULES INCLUDED
17 | F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ(MAIN)
18 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(C3S)
19 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(HPD)
20 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(_C_IDATALEN)
21 |
22 |
23 | LINK MAP OF MODULE: F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_MASTER\U1.AOF (U1)
24 |
25 | TYPE BASE LENGTH RELOCATION SEGMENT NAME
26 | ---- ---- ------ ---------- ------------
27 |
28 | * * * * * * * DATA/IDATA M E M O R Y * * * * * * *
29 | REG 0000H 0008H ABSOLUTE "REG BANK 0"
30 | DATA 0008H 000FH UNIT ?DT?MAIN
31 | DATA 0017H 0007H OVERLAID UNIT _DGROUP07_
32 | 0017H 0006H ------------- ?DT?_ForceMultipleCoils_15?MAIN
33 | 001DH 0001H ------------- ?DT?lrc_calc?MAIN
34 | 001EH 0002H *** GAP ***
35 | BIT 0020H.0 0000H.1 UNIT ?BI?MAIN
36 | 0020H.1 0000H.7 *** GAP ***
37 | DATA 0021H 0006H OVERLAID UNIT _DGROUP00_
38 | 0021H 0006H ------------- ?DT?AsciiToTwoByte?MAIN
39 | DATA 0027H 0006H OVERLAID UNIT _DGROUP08_
40 | 0027H 0006H ------------- ?DT?_PresetMultipleRegisters_16?MAIN
41 | DATA 002DH 0004H OVERLAID UNIT _DGROUP02_
42 | 002DH 0004H ------------- ?DT?_ReadCoilStatus_01?MAIN
43 | DATA 0031H 0004H OVERLAID UNIT _DGROUP03_
44 | 0031H 0004H ------------- ?DT?_ReadInputStatus_02?MAIN
45 | DATA 0035H 0004H OVERLAID UNIT _DGROUP04_
46 | 0035H 0004H ------------- ?DT?_ReadHoldingRegisters_03?MAIN
47 | DATA 0039H 0004H OVERLAID UNIT _DGROUP05_
48 | 0039H 0004H ------------- ?DT?_ReadInputRegisters_04?MAIN
49 | DATA 003DH 0004H OVERLAID UNIT _DGROUP10_
50 | 003DH 0004H ------------- ?DT?_delay_ms?MAIN
51 | DATA 0041H 0004H OVERLAID UNIT _DGROUP11_
52 | 0041H 0004H ------------- ?DT?_PresetSingleRegister_06?MAIN
53 | DATA 0045H 0003H OVERLAID UNIT _DGROUP06_
54 | 0045H 0003H ------------- ?DT?_ForceSingleCoil_05?MAIN
55 | IDATA 0048H 0052H UNIT ?ID?MAIN
56 | IDATA 009AH 0001H * * STACK * * _STACK
57 |
58 | * * * * * * * CODE M E M O R Y * * * * * * *
59 | CODE 0000H 0003H ABSOLUTE
60 | CODE 0003H 000FH UNIT ?PR?C51_STARTUP?
61 | CODE 0012H 0010H UNIT ?PR?_NibbleToAscii?MAIN
62 | 0022H 0001H *** GAP ***
63 | CODE 0023H 0003H ABSOLUTE
64 | CODE 0026H 002FH UNIT ?PR?_ByteToAscii?MAIN
65 | CODE 0055H 0027H UNIT ?PR?_AsciiToByte?MAIN
66 | CODE 007CH 004DH UNIT ?PR?_TwoByteToAscii?MAIN
67 | CODE 00C9H 0024H UNIT ?PR?AsciiToTwoByte?MAIN
68 | CODE 00EDH 0005H UNIT ?PR?gen_start?MAIN
69 | CODE 00F2H 000CH UNIT ?PR?_gen_dir?MAIN
70 | CODE 00FEH 000CH UNIT ?PR?_gen_function?MAIN
71 | CODE 010AH 0025H UNIT ?PR?gen_lrc?MAIN
72 | CODE 012FH 0012H UNIT ?PR?clear_frame?MAIN
73 | CODE 0141H 0014H UNIT ?PR?tx_assci_frame?MAIN
74 | CODE 0155H 002FH UNIT ?PR?lrc_calc?MAIN
75 | CODE 0184H 000AH UNIT ?PR?_tx_byte2?MAIN
76 | CODE 018EH 0069H UNIT ?PR?_ReadCoilStatus_01?MAIN
77 | CODE 01F7H 0069H UNIT ?PR?_ReadInputStatus_02?MAIN
78 | CODE 0260H 0069H UNIT ?PR?_ReadHoldingRegisters_03?MAIN
79 | CODE 02C9H 0069H UNIT ?PR?_ReadInputRegisters_04?MAIN
80 | CODE 0332H 0077H UNIT ?PR?_ForceSingleCoil_05?MAIN
81 | CODE 03A9H 0069H UNIT ?PR?_PresetSingleRegister_06?MAIN
82 | CODE 0412H 00B8H UNIT ?PR?_ForceMultipleCoils_15?MAIN
83 | CODE 04CAH 00CBH UNIT ?PR?_PresetMultipleRegisters_16?MAIN
84 | CODE 0595H 0013H UNIT ?PR?Serial_Init?MAIN
85 | CODE 05A8H 0028H UNIT ?PR?_delay_ms?MAIN
86 | CODE 05D0H 000AH UNIT ?PR?_tx_byte?MAIN
87 | CODE 05DAH 004FH UNIT ?PR?SerialPortInt?MAIN
88 | CODE 0629H 0067H UNIT ?PR?main?MAIN
89 |
90 | EXECUTABLE SUMMARY:
91 | -------------------
92 | Total INTERNAL RAM storage requirement: 0097H.1 (151.1)
93 | Total EXTERNAL RAM storage requirement: 0000H (0)
94 | Total CODE storage requirement: 068FH (1679)
95 | Note: Summary does not include dynamic stack requirements
96 |
97 |
98 | REFERENCE MAP OF MODULE: F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_MASTER\U1.AOF (U1)
99 |
100 | SEGMENT BI_GROUP DT_GROUP ID_GROUP XD_GROUP
101 | +--> CALLED SEGMENT START LENGTH START LENGTH START LENGTH START LENGTH
102 | --------------------------------------------------------------------------------------
103 |
104 | ?PR?AsciiToTwoByte?MAIN --------------- 0021H 0006H --------------- ---------------
105 | +--> ?PR?_AsciiToByte?MAIN
106 |
107 | ?PR?_AsciiToByte?MAIN --------------- --------------- --------------- ---------------
108 |
109 | ?PR?_tx_byte2?MAIN --------------- --------------- --------------- ---------------
110 |
111 | ?PR?_ReadCoilStatus_01?MAIN --------------- 002DH 0004H --------------- ---------------
112 | +--> ?PR?gen_start?MAIN
113 | +--> ?PR?_gen_dir?MAIN
114 | +--> ?PR?_gen_function?MAIN
115 | +--> ?PR?_TwoByteToAscii?MAIN
116 | +--> ?PR?gen_lrc?MAIN
117 | +--> ?PR?tx_assci_frame?MAIN
118 |
119 | ?PR?gen_start?MAIN --------------- --------------- --------------- ---------------
120 |
121 | ?PR?_gen_dir?MAIN --------------- --------------- --------------- ---------------
122 | +--> ?PR?_ByteToAscii?MAIN
123 |
124 | ?PR?_ByteToAscii?MAIN --------------- --------------- --------------- ---------------
125 |
126 | ?PR?_gen_function?MAIN --------------- --------------- --------------- ---------------
127 | +--> ?PR?_ByteToAscii?MAIN
128 |
129 | ?PR?_TwoByteToAscii?MAIN --------------- --------------- --------------- ---------------
130 | +--> ?PR?_NibbleToAscii?MAIN
131 |
132 | ?PR?_NibbleToAscii?MAIN --------------- --------------- --------------- ---------------
133 |
134 | ?PR?gen_lrc?MAIN --------------- --------------- --------------- ---------------
135 | +--> ?PR?lrc_calc?MAIN
136 | +--> ?PR?_ByteToAscii?MAIN
137 |
138 | ?PR?lrc_calc?MAIN --------------- 001DH 0001H --------------- ---------------
139 | +--> ?PR?_AsciiToByte?MAIN
140 |
141 | ?PR?tx_assci_frame?MAIN --------------- --------------- --------------- ---------------
142 |
143 | ?PR?_ReadInputStatus_02?MAIN --------------- 0031H 0004H --------------- ---------------
144 | +--> ?PR?gen_start?MAIN
145 | +--> ?PR?_gen_dir?MAIN
146 | +--> ?PR?_gen_function?MAIN
147 | +--> ?PR?_TwoByteToAscii?MAIN
148 | +--> ?PR?gen_lrc?MAIN
149 | +--> ?PR?tx_assci_frame?MAIN
150 |
151 | ?PR?_ReadHoldingRegisters_03?MAIN--------------- 0035H 0004H --------------- ---------------
152 | +--> ?PR?gen_start?MAIN
153 | +--> ?PR?_gen_dir?MAIN
154 | +--> ?PR?_gen_function?MAIN
155 | +--> ?PR?_TwoByteToAscii?MAIN
156 | +--> ?PR?gen_lrc?MAIN
157 | +--> ?PR?tx_assci_frame?MAIN
158 |
159 | ?PR?_ReadInputRegisters_04?MAIN--------------- 0039H 0004H --------------- ---------------
160 | +--> ?PR?gen_start?MAIN
161 | +--> ?PR?_gen_dir?MAIN
162 | +--> ?PR?_gen_function?MAIN
163 | +--> ?PR?_TwoByteToAscii?MAIN
164 | +--> ?PR?gen_lrc?MAIN
165 | +--> ?PR?tx_assci_frame?MAIN
166 |
167 | ?PR?_ForceSingleCoil_05?MAIN --------------- 0045H 0003H --------------- ---------------
168 | +--> ?PR?gen_start?MAIN
169 | +--> ?PR?_gen_dir?MAIN
170 | +--> ?PR?_gen_function?MAIN
171 | +--> ?PR?_TwoByteToAscii?MAIN
172 | +--> ?PR?gen_lrc?MAIN
173 | +--> ?PR?tx_assci_frame?MAIN
174 |
175 | ?PR?_ForceMultipleCoils_15?MAIN--------------- 0017H 0006H --------------- ---------------
176 | +--> ?PR?gen_start?MAIN
177 | +--> ?PR?_gen_dir?MAIN
178 | +--> ?PR?_ByteToAscii?MAIN
179 | +--> ?PR?_gen_function?MAIN
180 | +--> ?PR?_TwoByteToAscii?MAIN
181 | +--> ?PR?gen_lrc?MAIN
182 | +--> ?PR?tx_assci_frame?MAIN
183 |
184 | ?PR?_PresetMultipleRegisters_16?MAIN---------------0027H 0006H --------------- ---------------
185 | +--> ?PR?gen_start?MAIN
186 | +--> ?PR?_gen_dir?MAIN
187 | +--> ?PR?_ByteToAscii?MAIN
188 | +--> ?PR?_gen_function?MAIN
189 | +--> ?PR?_TwoByteToAscii?MAIN
190 | +--> ?PR?gen_lrc?MAIN
191 | +--> ?PR?tx_assci_frame?MAIN
192 |
193 | ?PR?_tx_byte?MAIN --------------- --------------- --------------- ---------------
194 |
195 | ?PR?SerialPortInt?MAIN --------------- --------------- --------------- ---------------
196 | +--> ?PR?_delay_ms?MAIN
197 | +--> ?PR?clear_frame?MAIN
198 |
199 | ?PR?_delay_ms?MAIN --------------- 003DH 0004H --------------- ---------------
200 |
201 | ?PR?clear_frame?MAIN --------------- --------------- --------------- ---------------
202 |
203 | ?PR?main?MAIN --------------- --------------- --------------- ---------------
204 | +--> ?PR?Serial_Init?MAIN
205 | +--> ?PR?_PresetSingleRegister_06?MAIN
206 | +--> ?PR?_delay_ms?MAIN
207 |
208 | ?PR?Serial_Init?MAIN --------------- --------------- --------------- ---------------
209 |
210 | ?PR?_PresetSingleRegister_06?MAIN--------------- 0041H 0004H --------------- ---------------
211 | +--> ?PR?gen_start?MAIN
212 | +--> ?PR?_gen_dir?MAIN
213 | +--> ?PR?_gen_function?MAIN
214 | +--> ?PR?_TwoByteToAscii?MAIN
215 | +--> ?PR?gen_lrc?MAIN
216 | +--> ?PR?tx_assci_frame?MAIN
217 |
218 | SYMBOL TABLE FOR F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_MASTER\U1.AOF(MAIN)
219 | -----------------------------------------------------------------------------------
220 |
221 | VALUE TYPE NAME
222 | ----- ---- ----
223 |
224 | ------- MODULE main
225 | C:0000H SYMBOL _ICE_DUMMY_
226 | C:0629H PUBLIC main
227 | C:05DAH PUBLIC SerialPortInt
228 | C:05D0H PUBLIC _tx_byte
229 | C:0595H PUBLIC Serial_Init
230 | D:0015H PUBLIC coil
231 | D:0013H PUBLIC i
232 | D:0011H PUBLIC word
233 | C:0184H PUBLIC _tx_byte2
234 | C:04CAH PUBLIC _PresetMultipleRegisters_16
235 | C:0412H PUBLIC _ForceMultipleCoils_15
236 | C:03A9H PUBLIC _PresetSingleRegister_06
237 | C:0332H PUBLIC _ForceSingleCoil_05
238 | C:02C9H PUBLIC _ReadInputRegisters_04
239 | C:0260H PUBLIC _ReadHoldingRegisters_03
240 | C:01F7H PUBLIC _ReadInputStatus_02
241 | C:018EH PUBLIC _ReadCoilStatus_01
242 | C:0141H PUBLIC tx_assci_frame
243 | C:0155H PUBLIC lrc_calc
244 | C:012FH PUBLIC clear_frame
245 | C:010AH PUBLIC gen_lrc
246 | C:00FEH PUBLIC _gen_function
247 | C:00F2H PUBLIC _gen_dir
248 | C:00EDH PUBLIC gen_start
249 | D:0010H PUBLIC byte_count
250 | I:0086H PUBLIC parameters
251 | B:0000H PUBLIC broadcast
252 | I:0085H PUBLIC send_count
253 | I:0084H PUBLIC data_count
254 | I:0048H PUBLIC ascii_frame
255 | C:00C9H PUBLIC AsciiToTwoByte
256 | C:007CH PUBLIC _TwoByteToAscii
257 | C:0055H PUBLIC _AsciiToByte
258 | C:0012H PUBLIC _NibbleToAscii
259 | C:0026H PUBLIC _ByteToAscii
260 | D:000CH PUBLIC hexa
261 | D:0008H PUBLIC ascii
262 | C:05A8H PUBLIC _delay_ms
263 | B:00A7H SYMBOL RS485En
264 | B:00C8H SYMBOL CP_RL2
265 | B:00C9H SYMBOL C_T2
266 | B:00CAH SYMBOL TR2
267 | B:00CBH SYMBOL EXEN2
268 | B:00CCH SYMBOL TCLK
269 | B:00CDH SYMBOL RCLK
270 | B:00CEH SYMBOL EXF2
271 | B:00CFH SYMBOL TF2
272 | B:0090H SYMBOL T2
273 | B:0091H SYMBOL T2EX
274 | B:00BDH SYMBOL PT2
275 | B:00ADH SYMBOL ET2
276 | B:0098H SYMBOL RI
277 | B:0099H SYMBOL TI
278 | B:009AH SYMBOL RB8
279 | B:009BH SYMBOL TB8
280 | B:009CH SYMBOL REN
281 | B:009DH SYMBOL SM2
282 | B:009EH SYMBOL SM1
283 | B:009FH SYMBOL SM0
284 | B:00B0H SYMBOL RXD
285 | B:00B1H SYMBOL TXD
286 | B:00B2H SYMBOL INT0
287 | B:00B3H SYMBOL INT1
288 | B:00B4H SYMBOL T0
289 | B:00B5H SYMBOL T1
290 | B:00B6H SYMBOL WR
291 | B:00B7H SYMBOL RD
292 | B:00B8H SYMBOL PX0
293 | B:00B9H SYMBOL PT0
294 | B:00BAH SYMBOL PX1
295 | B:00BBH SYMBOL PT1
296 | B:00BCH SYMBOL PS
297 | B:00A8H SYMBOL EX0
298 | B:00A9H SYMBOL ET0
299 | B:00AAH SYMBOL EX1
300 | B:00ABH SYMBOL ET1
301 | B:00ACH SYMBOL ES
302 | B:00AFH SYMBOL EA
303 | B:0088H SYMBOL IT0
304 | B:0089H SYMBOL IE0
305 | B:008AH SYMBOL IT1
306 | B:008BH SYMBOL IE1
307 | B:008CH SYMBOL TR0
308 | B:008DH SYMBOL TF0
309 | B:008EH SYMBOL TR1
310 | B:008FH SYMBOL TF1
311 | B:00D0H SYMBOL P
312 | B:00D1H SYMBOL F1
313 | B:00D2H SYMBOL OV
314 | B:00D3H SYMBOL RS0
315 | B:00D4H SYMBOL RS1
316 | B:00D5H SYMBOL F0
317 | B:00D6H SYMBOL AC
318 | B:00D7H SYMBOL CY
319 | D:00CDH SYMBOL TH2
320 | D:00CCH SYMBOL TL2
321 | D:00CBH SYMBOL RCAP2H
322 | D:00CAH SYMBOL RCAP2L
323 | D:00C8H SYMBOL T2CON
324 | D:0099H SYMBOL SBUF
325 | D:0098H SYMBOL SCON
326 | D:00B8H SYMBOL IP
327 | D:00A8H SYMBOL IE
328 | D:008DH SYMBOL TH1
329 | D:008CH SYMBOL TH0
330 | D:008BH SYMBOL TL1
331 | D:008AH SYMBOL TL0
332 | D:0089H SYMBOL TMOD
333 | D:0088H SYMBOL TCON
334 | D:0087H SYMBOL PCON
335 | D:0083H SYMBOL DPH
336 | D:0082H SYMBOL DPL
337 | D:0081H SYMBOL SP
338 | D:00F0H SYMBOL B
339 | D:00E0H SYMBOL ACC
340 | D:00D0H SYMBOL PSW
341 | D:00B0H SYMBOL P3
342 | D:00A0H SYMBOL P2
343 | D:0090H SYMBOL P1
344 | D:0080H SYMBOL P0
345 | D:0081H SYMBOL __SP__
346 | ------- PROC _ByteToAscii
347 | C:0026H LINE# 17
348 | C:0026H LINE# 17
349 | C:0026H LINE# 19
350 | C:002CH LINE# 20
351 | C:0030H LINE# 22
352 | C:0036H LINE# 24
353 | C:003DH LINE# 28
354 | C:0042H LINE# 31
355 | C:0049H LINE# 33
356 | C:004FH LINE# 37
357 | C:0054H LINE# 40
358 | C:0054H LINE# 40
359 | ------- ENDPROC _ByteToAscii
360 | ------- PROC _NibbleToAscii
361 | C:0012H LINE# 42
362 | C:0012H LINE# 42
363 | C:0012H LINE# 44
364 | C:0018H LINE# 46
365 | C:001CH LINE# 52
366 | C:001DH LINE# 50
367 | C:0021H LINE# 52
368 | C:0021H LINE# 52
369 | ------- ENDPROC _NibbleToAscii
370 | ------- PROC _AsciiToByte
371 | C:0055H LINE# 54
372 | C:0055H LINE# 54
373 | C:0055H LINE# 56
374 | C:005AH LINE# 58
375 | C:0060H LINE# 62
376 | C:0064H LINE# 65
377 | C:006AH LINE# 67
378 | C:0070H LINE# 71
379 | C:0074H LINE# 74
380 | C:007BH LINE# 75
381 | C:007BH LINE# 75
382 | ------- ENDPROC _AsciiToByte
383 | ------- PROC _TwoByteToAscii
384 | C:007CH LINE# 77
385 | C:007CH LINE# 77
386 | C:007CH LINE# 80
387 | C:0085H LINE# 83
388 | C:0088H LINE# 84
389 | C:0091H LINE# 86
390 | C:009BH LINE# 87
391 | C:00ACH LINE# 88
392 | C:00B3H LINE# 91
393 | C:00B5H LINE# 92
394 | C:00C4H LINE# 91
395 | C:00C8H LINE# 95
396 | C:00C8H LINE# 95
397 | ------- ENDPROC _TwoByteToAscii
398 | ------- PROC AsciiToTwoByte
399 | D:0002H SYMBOL a
400 | D:0023H SYMBOL b
401 | D:0025H SYMBOL result
402 | C:00C9H LINE# 97
403 | C:00C9H LINE# 97
404 | C:00C9H LINE# 99
405 | C:00D2H LINE# 100
406 | C:00DEH LINE# 102
407 | C:00E8H LINE# 104
408 | C:00ECH LINE# 105
409 | C:00ECH LINE# 105
410 | ------- ENDPROC AsciiToTwoByte
411 | ------- PROC gen_start
412 | C:00EDH LINE# 42
413 | C:00EDH LINE# 42
414 | C:00EDH LINE# 44
415 | C:00F1H LINE# 45
416 | C:00F1H LINE# 45
417 | ------- ENDPROC gen_start
418 | ------- PROC _gen_dir
419 | C:00F2H LINE# 47
420 | C:00F2H LINE# 47
421 | C:00F2H LINE# 49
422 | C:00F5H LINE# 50
423 | C:00F9H LINE# 51
424 | C:00FDH LINE# 52
425 | C:00FDH LINE# 52
426 | ------- ENDPROC _gen_dir
427 | ------- PROC _gen_function
428 | C:00FEH LINE# 54
429 | C:00FEH LINE# 54
430 | C:00FEH LINE# 56
431 | C:0101H LINE# 57
432 | C:0105H LINE# 58
433 | C:0109H LINE# 59
434 | C:0109H LINE# 59
435 | ------- ENDPROC _gen_function
436 | ------- PROC gen_lrc
437 | C:010AH LINE# 61
438 | C:010AH LINE# 61
439 | C:010AH LINE# 63
440 | C:0110H LINE# 64
441 | C:0119H LINE# 65
442 | C:0120H LINE# 67
443 | C:0127H LINE# 68
444 | C:012EH LINE# 69
445 | C:012EH LINE# 69
446 | ------- ENDPROC gen_lrc
447 | ------- PROC clear_frame
448 | C:012FH LINE# 71
449 | C:012FH LINE# 71
450 | C:012FH LINE# 74
451 | C:0133H LINE# 75
452 | C:0137H LINE# 76
453 | C:0140H LINE# 80
454 | C:0140H LINE# 80
455 | ------- ENDPROC clear_frame
456 | ------- PROC tx_assci_frame
457 | C:0141H LINE# 82
458 | C:0141H LINE# 82
459 | C:0141H LINE# 84
460 | C:0143H LINE# 86
461 | C:0147H LINE# 87
462 | C:0149H LINE# 88
463 | C:014BH LINE# 89
464 | C:014FH LINE# 90
465 | C:0154H LINE# 91
466 | C:0154H LINE# 91
467 | ------- ENDPROC tx_assci_frame
468 | ------- PROC lrc_calc
469 | D:0013H PUBLIC i
470 | C:0155H LINE# 93
471 | C:0155H LINE# 93
472 | C:0155H LINE# 95
473 | C:0157H LINE# 97
474 | C:0165H LINE# 99
475 | C:0179H LINE# 97
476 | C:017FH LINE# 102
477 | C:0181H LINE# 103
478 | C:0183H LINE# 104
479 | C:0183H LINE# 104
480 | ------- ENDPROC lrc_calc
481 | ------- PROC _tx_byte2
482 | C:0184H LINE# 106
483 | C:0184H LINE# 106
484 | C:0184H LINE# 108
485 | C:0186H LINE# 109
486 | C:0188H LINE# 110
487 | C:018AH LINE# 111
488 | C:018DH LINE# 112
489 | C:018DH LINE# 112
490 | ------- ENDPROC _tx_byte2
491 | ------- PROC _ReadCoilStatus_01
492 | D:002DH SYMBOL start
493 | D:002FH SYMBOL cant
494 | C:018EH LINE# 115
495 | C:018EH LINE# 115
496 | C:0196H LINE# 119
497 | C:0199H LINE# 120
498 | C:019CH LINE# 121
499 | C:01A1H LINE# 122
500 | C:01A5H LINE# 124
501 | C:01B2H LINE# 125
502 | C:01BAH LINE# 127
503 | C:01C7H LINE# 125
504 | C:01CEH LINE# 130
505 | C:01D5H LINE# 131
506 | C:01DDH LINE# 133
507 | C:01EAH LINE# 131
508 | C:01F1H LINE# 135
509 | C:01F4H LINE# 137
510 | C:01F4H LINE# 138
511 | ------- ENDPROC _ReadCoilStatus_01
512 | ------- PROC _ReadInputStatus_02
513 | D:0031H SYMBOL start
514 | D:0033H SYMBOL cant
515 | C:01F7H LINE# 140
516 | C:01F7H LINE# 140
517 | C:01FFH LINE# 144
518 | C:0202H LINE# 145
519 | C:0205H LINE# 146
520 | C:020AH LINE# 147
521 | C:020EH LINE# 149
522 | C:021BH LINE# 150
523 | C:0223H LINE# 152
524 | C:0230H LINE# 150
525 | C:0237H LINE# 155
526 | C:023EH LINE# 156
527 | C:0246H LINE# 158
528 | C:0253H LINE# 156
529 | C:025AH LINE# 160
530 | C:025DH LINE# 162
531 | C:025DH LINE# 163
532 | ------- ENDPROC _ReadInputStatus_02
533 | ------- PROC _ReadHoldingRegisters_03
534 | D:0035H SYMBOL start
535 | D:0037H SYMBOL cant
536 | C:0260H LINE# 166
537 | C:0260H LINE# 166
538 | C:0268H LINE# 170
539 | C:026BH LINE# 171
540 | C:026EH LINE# 172
541 | C:0273H LINE# 173
542 | C:0277H LINE# 175
543 | C:0284H LINE# 176
544 | C:028CH LINE# 178
545 | C:0299H LINE# 176
546 | C:02A0H LINE# 181
547 | C:02A7H LINE# 182
548 | C:02AFH LINE# 184
549 | C:02BCH LINE# 182
550 | C:02C3H LINE# 186
551 | C:02C6H LINE# 188
552 | C:02C6H LINE# 189
553 | ------- ENDPROC _ReadHoldingRegisters_03
554 | ------- PROC _ReadInputRegisters_04
555 | D:0039H SYMBOL start
556 | D:003BH SYMBOL cant
557 | C:02C9H LINE# 192
558 | C:02C9H LINE# 192
559 | C:02D1H LINE# 196
560 | C:02D4H LINE# 197
561 | C:02D7H LINE# 198
562 | C:02DCH LINE# 199
563 | C:02E0H LINE# 201
564 | C:02EDH LINE# 202
565 | C:02F5H LINE# 204
566 | C:0302H LINE# 202
567 | C:0309H LINE# 207
568 | C:0310H LINE# 208
569 | C:0318H LINE# 210
570 | C:0325H LINE# 208
571 | C:032CH LINE# 212
572 | C:032FH LINE# 214
573 | C:032FH LINE# 215
574 | ------- ENDPROC _ReadInputRegisters_04
575 | ------- PROC _ForceSingleCoil_05
576 | D:0045H SYMBOL coilID
577 | D:0047H SYMBOL value
578 | C:0332H LINE# 217
579 | C:0332H LINE# 217
580 | C:0338H LINE# 221
581 | C:033BH LINE# 222
582 | C:033EH LINE# 223
583 | C:0343H LINE# 224
584 | C:0347H LINE# 226
585 | C:0354H LINE# 227
586 | C:035CH LINE# 229
587 | C:0369H LINE# 227
588 | C:0370H LINE# 232
589 | C:0378H LINE# 234
590 | C:0381H LINE# 238
591 | C:0387H LINE# 241
592 | C:038FH LINE# 243
593 | C:039CH LINE# 241
594 | C:03A3H LINE# 246
595 | C:03A6H LINE# 248
596 | C:03A6H LINE# 249
597 | ------- ENDPROC _ForceSingleCoil_05
598 | ------- PROC _PresetSingleRegister_06
599 | D:0041H SYMBOL registerID
600 | D:0043H SYMBOL value
601 | C:03A9H LINE# 251
602 | C:03A9H LINE# 251
603 | C:03B1H LINE# 255
604 | C:03B4H LINE# 256
605 | C:03B7H LINE# 257
606 | C:03BCH LINE# 258
607 | C:03C0H LINE# 260
608 | C:03CDH LINE# 261
609 | C:03D5H LINE# 263
610 | C:03E2H LINE# 261
611 | C:03E9H LINE# 266
612 | C:03F0H LINE# 267
613 | C:03F8H LINE# 269
614 | C:0405H LINE# 267
615 | C:040CH LINE# 272
616 | C:040FH LINE# 274
617 | C:040FH LINE# 275
618 | ------- ENDPROC _PresetSingleRegister_06
619 | ------- PROC _ForceMultipleCoils_15
620 | D:0017H SYMBOL start
621 | D:0019H SYMBOL cant
622 | D:0013H PUBLIC i
623 | C:0412H LINE# 277
624 | C:0412H LINE# 277
625 | C:041AH LINE# 281
626 | C:041DH LINE# 282
627 | C:0420H LINE# 283
628 | C:0425H LINE# 284
629 | C:0429H LINE# 286
630 | C:0436H LINE# 287
631 | C:043EH LINE# 289
632 | C:044BH LINE# 287
633 | C:0452H LINE# 292
634 | C:0459H LINE# 293
635 | C:0461H LINE# 295
636 | C:046EH LINE# 293
637 | C:0475H LINE# 298
638 | C:047AH LINE# 299
639 | C:0483H LINE# 300
640 | C:048AH LINE# 302
641 | C:049DH LINE# 304
642 | C:04AAH LINE# 305
643 | C:04B3H LINE# 306
644 | C:04BAH LINE# 302
645 | C:04C4H LINE# 309
646 | C:04C7H LINE# 311
647 | C:04C7H LINE# 312
648 | ------- ENDPROC _ForceMultipleCoils_15
649 | ------- PROC _PresetMultipleRegisters_16
650 | D:0027H SYMBOL start
651 | D:0029H SYMBOL cant
652 | D:0013H PUBLIC i
653 | C:04CAH LINE# 314
654 | C:04CAH LINE# 314
655 | C:04D2H LINE# 318
656 | C:04D5H LINE# 319
657 | C:04D8H LINE# 320
658 | C:04DDH LINE# 321
659 | C:04E1H LINE# 323
660 | C:04EEH LINE# 324
661 | C:04F6H LINE# 326
662 | C:0503H LINE# 324
663 | C:050AH LINE# 329
664 | C:0511H LINE# 330
665 | C:0519H LINE# 332
666 | C:0526H LINE# 330
667 | C:052DH LINE# 335
668 | C:0535H LINE# 336
669 | C:053EH LINE# 337
670 | C:0545H LINE# 339
671 | C:0558H LINE# 341
672 | C:0567H LINE# 343
673 | C:0570H LINE# 344
674 | C:0577H LINE# 345
675 | C:057EH LINE# 346
676 | C:0585H LINE# 339
677 | C:058FH LINE# 349
678 | C:0592H LINE# 351
679 | C:0592H LINE# 352
680 | ------- ENDPROC _PresetMultipleRegisters_16
681 | ------- PROC Serial_Init
682 | C:0595H LINE# 11
683 | C:0595H LINE# 11
684 | C:0595H LINE# 13
685 | C:0597H LINE# 15
686 | C:059AH LINE# 16
687 | C:059DH LINE# 17
688 | C:05A0H LINE# 18
689 | C:05A2H LINE# 19
690 | C:05A5H LINE# 21
691 | C:05A7H LINE# 22
692 | C:05A7H LINE# 22
693 | ------- ENDPROC Serial_Init
694 | ------- PROC _delay_ms
695 | D:0004H SYMBOL k
696 | D:003DH SYMBOL s
697 | C:05A8H LINE# 24
698 | C:05A8H LINE# 24
699 | C:05A8H LINE# 27
700 | C:05ADH LINE# 28
701 | C:05BDH LINE# 30
702 | C:05C5H LINE# 28
703 | C:05CFH LINE# 32
704 | C:05CFH LINE# 32
705 | ------- ENDPROC _delay_ms
706 | ------- PROC _tx_byte
707 | C:05D0H LINE# 33
708 | C:05D0H LINE# 33
709 | C:05D0H LINE# 35
710 | C:05D2H LINE# 36
711 | C:05D4H LINE# 37
712 | C:05D6H LINE# 38
713 | C:05D9H LINE# 39
714 | C:05D9H LINE# 39
715 | ------- ENDPROC _tx_byte
716 | ------- PROC SerialPortInt
717 | C:05DAH LINE# 41
718 | C:05E8H LINE# 41
719 | C:05E8H LINE# 43
720 | C:05EBH LINE# 45
721 | C:05EDH LINE# 46
722 | C:05F0H LINE# 62
723 | C:05FEH LINE# 64
724 | C:05FFH LINE# 48
725 | C:060BH LINE# 50
726 | C:0612H LINE# 51
727 | C:061DH LINE# 56
728 | C:0622H LINE# 60
729 | C:0625H LINE# 62
730 | C:0627H LINE# 64
731 | ------- ENDPROC SerialPortInt
732 | ------- PROC main
733 | C:0629H LINE# 66
734 | C:0629H LINE# 66
735 | C:0629H LINE# 68
736 | C:062CH LINE# 70
737 | C:0631H LINE# 71
738 | C:0633H LINE# 72
739 | C:063AH LINE# 76
740 | C:0647H LINE# 77
741 | C:064FH LINE# 78
742 | C:065AH LINE# 80
743 | C:0661H LINE# 86
744 | C:066FH LINE# 87
745 | C:0674H LINE# 89
746 | C:067BH LINE# 90
747 | C:0687H LINE# 93
748 | C:068EH LINE# 95
749 | ------- ENDPROC main
750 | ------- ENDMOD main
751 | C:0003H PUBLIC ?C_START3
752 | D:00A0H PUBLIC HPD_ADDR
753 | N:007FH PUBLIC IDATALEN
754 | N:00FFH PUBLIC _INITP2?
755 |
756 | UNCALLED SEGMENTS:
757 | ------------------
758 | ?PR?AsciiToTwoByte?MAIN: Function AsciiToTwoByte in file F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP&
759 | 03\C_CODE_MASTER\MAIN.OBJ was not called
760 | ?PR?_ForceMultipleCoils_15?MAIN: Function _ForceMultipleCoils_15 in file F:\REINIER\ESTUDIO\T&
761 | ESIS\PROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ was not called
762 | ?PR?_ForceSingleCoil_05?MAIN: Function _ForceSingleCoil_05 in file F:\REINIER\ESTUDIO\TESIS\P&
763 | ROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ was not called
764 | ?PR?_PresetMultipleRegisters_16?MAIN: Function _PresetMultipleRegisters_16 in file F:\REINIER&
765 | \ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ was not called
766 | ?PR?_ReadCoilStatus_01?MAIN: Function _ReadCoilStatus_01 in file F:\REINIER\ESTUDIO\TESIS\PRO&
767 | TEUS\CAP03\C_CODE_MASTER\MAIN.OBJ was not called
768 | ?PR?_ReadHoldingRegisters_03?MAIN: Function _ReadHoldingRegisters_03 in file F:\REINIER\ESTUD&
769 | IO\TESIS\PROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ was not called
770 | ?PR?_ReadInputRegisters_04?MAIN: Function _ReadInputRegisters_04 in file F:\REINIER\ESTUDIO\T&
771 | ESIS\PROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ was not called
772 | ?PR?_ReadInputStatus_02?MAIN: Function _ReadInputStatus_02 in file F:\REINIER\ESTUDIO\TESIS\P&
773 | ROTEUS\CAP03\C_CODE_MASTER\MAIN.OBJ was not called
774 | ?PR?_tx_byte2?MAIN: Function _tx_byte2 in file F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_&
775 | MASTER\MAIN.OBJ was not called
776 | ?PR?_tx_byte?MAIN: Function _tx_byte in file F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_MA&
777 | STER\MAIN.OBJ was not called
778 |
779 | ----------------------
780 | SUGGESTED OPTIMIZATION
781 | ----------------------
782 | Warning: 59 (3BH) data bytes in the range [00H-80H] are available for storage.
783 | Consider using some of these for 'data' variables in your source files.
784 |
785 |
786 | LINK/LOCATE RUN COMPLETE, NO ERROR FOUND.
787 |
788 |
--------------------------------------------------------------------------------
/C_Code_Slave/U2.M51:
--------------------------------------------------------------------------------
1 | LX51 CODE BANKING LINKER/LOCATOR V05.08.10.309 06/23/15 22:20:55
2 | MS-DOS LX51 CODE BANKING LINKER/LOCATOR V05.08.10.309, INVOKED BY:
3 | C:\Program Files (x86)\Raisonance\Ride\Bin\LX51.EXE F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code&
4 | _Slave\main.obj TO(F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code_Slave\U2.aof) LIBPATH(C:\Program&
5 | Files (x86)\Raisonance\Ride\Lib\51) GENERATEDEPFILE MAP IX RS(256) RSI(128) CSIZE(65536) XSIZE(6&
6 | 5536) DEFN(XSTACKLEN,256) DEFN(TIM1_INIT,E8h) CO(0) DT(0) ID(0) XD(0) BI(0) ABSCODEOFFS(0) XMLM(N&
7 | o,F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Code_Slave\U2-modules.Standard.xml) XMLF(No,8000,F:\Re&
8 | inier\Estudio\TESIS\PROTEUS\Cap03\C_Code_Slave\U2-flash.Standard.xml) XML(F:\Reinier\Estudio\TESI&
9 | S\PROTEUS\Cap03\C_Code_Slave\U2.Standard.xml) XMLRIDE(F:\Reinier\Estudio\TESIS\PROTEUS\Cap03\C_Co&
10 | de_Slave\U2-globals.Standard.xml)
11 |
12 |
13 | MEMORY MODEL: SMALL WITHOUT ANY FLOATING POINT ARITHMETIC
14 |
15 |
16 | INPUT MODULES INCLUDED
17 | F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_SLAVE\MAIN.OBJ(MAIN)
18 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(C1S)
19 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(MULS)
20 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(DIVS)
21 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(CMPL)
22 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(RSTSTK4)
23 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(HPD)
24 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(_C_INITD)
25 | C:\Program Files (x86)\Raisonance\Ride\Lib\51\RC51S.LIB(_C_IDATALEN)
26 |
27 |
28 | LINK MAP OF MODULE: F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_SLAVE\U2.AOF (U2)
29 |
30 | TYPE BASE LENGTH RELOCATION SEGMENT NAME
31 | ---- ---- ------ ---------- ------------
32 |
33 | * * * * * * * DATA/IDATA M E M O R Y * * * * * * *
34 | REG 0000H 0008H ABSOLUTE "REG BANK 0"
35 | DATA 0008H 0018H OVERLAID UNIT _DGROUP02_
36 | 0008H 0001H ------------- ?DT?SerialPortInt?MAIN
37 | 0009H 0003H ------------- ?DT?execute_modbus_command?MAIN
38 | 000CH 000CH ------------- ?DT?ResponseReadCoilsStatus_01?MAIN
39 | 0018H 0002H ------------- ?DT?_GetCoilValue?MAIN
40 | 000CH 000CH ------------- ?DT?ResponseReadInputStatus_02?MAIN
41 | 0018H 0002H ------------- ?DT?_GetInputValue?MAIN
42 | 000CH 000BH ------------- ?DT?ResponseReadHoldingRegisters_03?MAIN
43 | 000CH 000BH ------------- ?DT?ResponseReadInputRegisters_04?MAIN
44 | 000CH 0006H ------------- ?DT?ResponseForceSingleCoil_05?MAIN
45 | 000CH 0006H ------------- ?DT?ResponsePresetSingleRegister_06?MAIN
46 | 0012H 0004H ------------- ?DT?_SetHoldingRegisterValue?MAIN
47 | 000CH 000EH ------------- ?DT?ResponseForceMultipleCoils_15?MAIN
48 | 001AH 0006H ------------- ?DT?AsciiToTwoByte?MAIN
49 | 001AH 0002H ------------- ?DT?_SetCoilValue?MAIN
50 | 001AH 0001H ------------- ?DT?lrc_calc?MAIN
51 | 000CH 000BH ------------- ?DT?ResponsePresetMultipleRegisters_16?MAIN
52 | BIT 0020H.0 0000H.1 UNIT ?BI?MAIN
53 | 0020H.1 0000H.7 *** GAP ***
54 | DATA 0021H 0015H UNIT ?DT?MAIN
55 | DATA 0036H 0004H OVERLAID UNIT _DGROUP00_
56 | 0036H 0004H ------------- ?DT?make_hash?MAIN
57 | DATA 003AH 0004H OVERLAID UNIT _DGROUP03_
58 | 003AH 0004H ------------- ?DT?update_display?MAIN
59 | 003AH 0004H ------------- ?DT?_delay_ms?MAIN
60 | IDATA 003EH 0052H UNIT ?ID?MAIN
61 | IDATA 0090H 0029H OVERLAID UNIT _IGROUP02_
62 | 0090H 0029H ------------- ?ID?ResponseForceMultipleCoils_15?MAIN
63 | 0090H 0001H ------------- ?ID?ResponsePresetMultipleRegisters_16?MAIN
64 | IDATA 00B9H 0001H * * STACK * * _STACK
65 |
66 | * * * * * * * CODE M E M O R Y * * * * * * *
67 | CODE 0000H 0003H ABSOLUTE
68 | 0003H 0008H *** GAP ***
69 | CODE 000BH 0003H ABSOLUTE
70 | CODE 000EH 0010H UNIT ?PR?_NibbleToAscii?MAIN
71 | 001EH 0005H *** GAP ***
72 | CODE 0023H 0003H ABSOLUTE
73 | CODE 0026H 011CH UNIT ?PR?LIB51
74 | CODE 0142H 0066H UNIT ?PR?C51_STARTUP?
75 | CODE 01A8H 003FH UNIT ?PR?_GetCoilValue?MAIN
76 | CODE 01E7H 0089H UNIT ?PR?_SetCoilValue?MAIN
77 | CODE 0270H 0017H UNIT ?PR?_GetHoldingRegisterValue?MAIN
78 | CODE 0287H 0037H UNIT ?PR?_SetHoldingRegisterValue?MAIN
79 | CODE 02BEH 003FH UNIT ?PR?_GetInputValue?MAIN
80 | CODE 02FDH 0017H UNIT ?PR?_GetInputRegisterValue?MAIN
81 | CODE 0314H 002FH UNIT ?PR?_ByteToAscii?MAIN
82 | CODE 0343H 0027H UNIT ?PR?_AsciiToByte?MAIN
83 | CODE 036AH 004DH UNIT ?PR?_TwoByteToAscii?MAIN
84 | CODE 03B7H 0024H UNIT ?PR?AsciiToTwoByte?MAIN
85 | CODE 03DBH 00A6H UNIT ?PR?execute_modbus_command?MAIN
86 | CODE 0481H 0025H UNIT ?PR?gen_lrc?MAIN
87 | CODE 04A6H 0012H UNIT ?PR?clear_frame?MAIN
88 | CODE 04B8H 0019H UNIT ?PR?tx_assci_frame?MAIN
89 | CODE 04D1H 002FH UNIT ?PR?lrc_calc?MAIN
90 | CODE 0500H 00CFH UNIT ?PR?ResponseReadCoilsStatus_01?MAIN
91 | CODE 05CFH 00CFH UNIT ?PR?ResponseReadInputStatus_02?MAIN
92 | CODE 069EH 00AAH UNIT ?PR?ResponseReadHoldingRegisters_03?MAIN
93 | CODE 0748H 00AAH UNIT ?PR?ResponseReadInputRegisters_04?MAIN
94 | CODE 07F2H 0086H UNIT ?PR?ResponseForceSingleCoil_05?MAIN
95 | CODE 0878H 0047H UNIT ?PR?ResponsePresetSingleRegister_06?MAIN
96 | CODE 08BFH 010BH UNIT ?PR?ResponseForceMultipleCoils_15?MAIN
97 | CODE 09CAH 00C2H UNIT ?PR?ResponsePresetMultipleRegisters_16?MAIN
98 | CODE 0A8CH 0031H UNIT ?PR?Serial_PWM_Init?MAIN
99 | CODE 0ABDH 005BH UNIT ?PR?make_hash?MAIN
100 | CODE 0B18H 0028H UNIT ?PR?_delay_ms?MAIN
101 | CODE 0B40H 009BH UNIT ?PR?PWM?MAIN
102 | CODE 0BDBH 00C0H UNIT ?PR?SerialPortInt?MAIN
103 | CODE 0C9BH 0071H UNIT ?PR?update_display?MAIN
104 | CODE 0D0CH 002CH UNIT ?PR?main?MAIN
105 | CODE 0D38H 0011H UNIT _C_INITD?CD
106 |
107 | EXECUTABLE SUMMARY:
108 | -------------------
109 | Total INTERNAL RAM storage requirement: 00B8H.1 (184.1)
110 | Total EXTERNAL RAM storage requirement: 0000H (0)
111 | Total CODE storage requirement: 0D3CH (3388)
112 | Note: Summary does not include dynamic stack requirements
113 |
114 |
115 | REFERENCE MAP OF MODULE: F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_SLAVE\U2.AOF (U2)
116 |
117 | SEGMENT BI_GROUP DT_GROUP ID_GROUP XD_GROUP
118 | +--> CALLED SEGMENT START LENGTH START LENGTH START LENGTH START LENGTH
119 | --------------------------------------------------------------------------------------
120 |
121 | ?PR?make_hash?MAIN --------------- 0036H 0004H --------------- ---------------
122 |
123 | ?PR?PWM?MAIN --------------- --------------- --------------- ---------------
124 | +--> ?PR?_GetCoilValue?MAIN
125 |
126 | ?PR?_GetCoilValue?MAIN --------------- 0018H 0002H --------------- ---------------
127 |
128 | ?PR?SerialPortInt?MAIN --------------- 0008H 0001H --------------- ---------------
129 | +--> ?PR?execute_modbus_command?MAIN
130 | +--> ?PR?clear_frame?MAIN
131 |
132 | ?PR?execute_modbus_command?MAIN--------------- 0009H 0003H --------------- ---------------
133 | +--> ?PR?ResponseReadCoilsStatus_01?MAIN
134 | +--> ?PR?ResponseReadInputStatus_02?MAIN
135 | +--> ?PR?ResponseReadHoldingRegisters_03?MAIN
136 | +--> ?PR?ResponseReadInputRegisters_04?MAIN
137 | +--> ?PR?ResponseForceSingleCoil_05?MAIN
138 | +--> ?PR?ResponsePresetSingleRegister_06?MAIN
139 | +--> ?PR?ResponseForceMultipleCoils_15?MAIN
140 | +--> ?PR?ResponsePresetMultipleRegisters_16?MAIN
141 | +--> ?PR?clear_frame?MAIN
142 | +--> ?PR?_AsciiToByte?MAIN
143 | +--> ?PR?lrc_calc?MAIN
144 |
145 | ?PR?ResponseReadCoilsStatus_01?MAIN--------------- 000CH 000CH --------------- ---------------
146 | +--> ?PR?AsciiToTwoByte?MAIN
147 | +--> ?PR?_GetCoilValue?MAIN
148 | +--> ?PR?gen_lrc?MAIN
149 | +--> ?PR?tx_assci_frame?MAIN
150 | +--> ?PR?_ByteToAscii?MAIN
151 |
152 | ?PR?AsciiToTwoByte?MAIN --------------- 001AH 0006H --------------- ---------------
153 | +--> ?PR?_AsciiToByte?MAIN
154 |
155 | ?PR?_AsciiToByte?MAIN --------------- --------------- --------------- ---------------
156 |
157 | ?PR?gen_lrc?MAIN --------------- --------------- --------------- ---------------
158 | +--> ?PR?lrc_calc?MAIN
159 | +--> ?PR?_ByteToAscii?MAIN
160 |
161 | ?PR?lrc_calc?MAIN --------------- 001AH 0001H --------------- ---------------
162 | +--> ?PR?_AsciiToByte?MAIN
163 |
164 | ?PR?_ByteToAscii?MAIN --------------- --------------- --------------- ---------------
165 |
166 | ?PR?tx_assci_frame?MAIN --------------- --------------- --------------- ---------------
167 | +--> ?PR?clear_frame?MAIN
168 |
169 | ?PR?clear_frame?MAIN --------------- --------------- --------------- ---------------
170 |
171 | ?PR?ResponseReadInputStatus_02?MAIN--------------- 000CH 000CH --------------- ---------------
172 | +--> ?PR?_GetInputValue?MAIN
173 | +--> ?PR?AsciiToTwoByte?MAIN
174 | +--> ?PR?_ByteToAscii?MAIN
175 | +--> ?PR?gen_lrc?MAIN
176 | +--> ?PR?tx_assci_frame?MAIN
177 |
178 | ?PR?_GetInputValue?MAIN --------------- 0018H 0002H --------------- ---------------
179 |
180 | ?PR?ResponseReadHoldingRegisters_03?MAIN--------------- 000CH 000BH --------------- ---------------&
181 |
182 | +--> ?PR?_GetHoldingRegisterValue?MAIN
183 | +--> ?PR?_TwoByteToAscii?MAIN
184 | +--> ?PR?AsciiToTwoByte?MAIN
185 | +--> ?PR?_ByteToAscii?MAIN
186 | +--> ?PR?gen_lrc?MAIN
187 | +--> ?PR?tx_assci_frame?MAIN
188 |
189 | ?PR?_GetHoldingRegisterValue?MAIN--------------- --------------- --------------- ---------------
190 |
191 | ?PR?_TwoByteToAscii?MAIN --------------- --------------- --------------- ---------------
192 | +--> ?PR?_NibbleToAscii?MAIN
193 |
194 | ?PR?_NibbleToAscii?MAIN --------------- --------------- --------------- ---------------
195 |
196 | ?PR?ResponseReadInputRegisters_04?MAIN--------------- 000CH 000BH --------------- ---------------
197 | +--> ?PR?_GetInputRegisterValue?MAIN
198 | +--> ?PR?AsciiToTwoByte?MAIN
199 | +--> ?PR?_ByteToAscii?MAIN
200 | +--> ?PR?gen_lrc?MAIN
201 | +--> ?PR?tx_assci_frame?MAIN
202 | +--> ?PR?_TwoByteToAscii?MAIN
203 |
204 | ?PR?_GetInputRegisterValue?MAIN--------------- --------------- --------------- ---------------
205 |
206 | ?PR?ResponseForceSingleCoil_05?MAIN--------------- 000CH 0006H --------------- ---------------
207 | +--> ?PR?_SetCoilValue?MAIN
208 | +--> ?PR?clear_frame?MAIN
209 | +--> ?PR?AsciiToTwoByte?MAIN
210 | +--> ?PR?gen_lrc?MAIN
211 | +--> ?PR?tx_assci_frame?MAIN
212 |
213 | ?PR?_SetCoilValue?MAIN --------------- 001AH 0002H --------------- ---------------
214 |
215 | ?PR?ResponsePresetSingleRegister_06?MAIN--------------- 000CH 0006H --------------- ---------------&
216 |
217 | +--> ?PR?_SetHoldingRegisterValue?MAIN
218 | +--> ?PR?AsciiToTwoByte?MAIN
219 | +--> ?PR?gen_lrc?MAIN
220 | +--> ?PR?tx_assci_frame?MAIN
221 |
222 | ?PR?_SetHoldingRegisterValue?MAIN--------------- 0012H 0004H --------------- ---------------
223 |
224 | ?PR?ResponseForceMultipleCoils_15?MAIN--------------- 000CH 000EH 0090H 0029H ---------------
225 | +--> ?PR?_AsciiToByte?MAIN
226 | +--> ?PR?AsciiToTwoByte?MAIN
227 | +--> ?PR?gen_lrc?MAIN
228 | +--> ?PR?tx_assci_frame?MAIN
229 | +--> ?PR?_SetCoilValue?MAIN
230 |
231 | ?PR?ResponsePresetMultipleRegisters_16?MAIN--------------- 000CH 000BH 0090H 0001H -------------&
232 | --
233 | +--> ?PR?_AsciiToByte?MAIN
234 | +--> ?PR?AsciiToTwoByte?MAIN
235 | +--> ?PR?gen_lrc?MAIN
236 | +--> ?PR?tx_assci_frame?MAIN
237 |
238 | ?PR?main?MAIN --------------- --------------- --------------- ---------------
239 | +--> ?PR?Serial_PWM_Init?MAIN
240 | +--> ?PR?update_display?MAIN
241 | +--> ?PR?_delay_ms?MAIN
242 | +--> ?PR?clear_frame?MAIN
243 | +--> ?PR?_SetCoilValue?MAIN
244 | +--> ?PR?_SetHoldingRegisterValue?MAIN
245 |
246 | ?PR?Serial_PWM_Init?MAIN --------------- --------------- --------------- ---------------
247 | +--> ?PR?_SetHoldingRegisterValue?MAIN
248 |
249 | ?PR?update_display?MAIN --------------- 003AH 0004H --------------- ---------------
250 | +--> ?PR?_GetHoldingRegisterValue?MAIN
251 |
252 | ?PR?_delay_ms?MAIN --------------- 003AH 0004H --------------- ---------------
253 |
254 | SYMBOL TABLE FOR F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_SLAVE\U2.AOF(MAIN)
255 | ----------------------------------------------------------------------------------
256 |
257 | VALUE TYPE NAME
258 | ----- ---- ----
259 |
260 | ------- MODULE main
261 | C:0000H SYMBOL _ICE_DUMMY_
262 | C:0D0CH PUBLIC main
263 | C:0C9BH PUBLIC update_display
264 | C:0BDBH PUBLIC SerialPortInt
265 | C:0B40H PUBLIC PWM
266 | C:0ABDH PUBLIC make_hash
267 | C:0A8CH PUBLIC Serial_PWM_Init
268 | D:0035H PUBLIC BUSY
269 | B:00A0H SYMBOL ONE
270 | B:00B7H SYMBOL EN_D
271 | B:0093H SYMBOL LED1
272 | I:0086H PUBLIC _7seg
273 | D:0033H PUBLIC last_hash
274 | D:0031H PUBLIC last_data_count
275 | D:002FH PUBLIC sec_count
276 | D:002DH PUBLIC led_count
277 | D:002BH PUBLIC cant
278 | D:0029H PUBLIC level
279 | B:00C8H SYMBOL CP_RL2
280 | B:00C9H SYMBOL C_T2
281 | B:00CAH SYMBOL TR2
282 | B:00CBH SYMBOL EXEN2
283 | B:00CCH SYMBOL TCLK
284 | B:00CDH SYMBOL RCLK
285 | B:00CEH SYMBOL EXF2
286 | B:00CFH SYMBOL TF2
287 | B:0090H SYMBOL T2
288 | B:0091H SYMBOL T2EX
289 | B:00BDH SYMBOL PT2
290 | B:00ADH SYMBOL ET2
291 | B:0098H SYMBOL RI
292 | B:009AH SYMBOL RB8
293 | B:009CH SYMBOL REN
294 | B:009DH SYMBOL SM2
295 | B:009EH SYMBOL SM1
296 | B:009FH SYMBOL SM0
297 | B:00B0H SYMBOL RXD
298 | B:00B1H SYMBOL TXD
299 | B:00B2H SYMBOL INT0
300 | B:00B3H SYMBOL INT1
301 | B:00B4H SYMBOL T0
302 | B:00B5H SYMBOL T1
303 | B:00B6H SYMBOL WR
304 | B:00B7H SYMBOL RD
305 | B:00B8H SYMBOL PX0
306 | B:00B9H SYMBOL PT0
307 | B:00BAH SYMBOL PX1
308 | B:00BBH SYMBOL PT1
309 | B:00BCH SYMBOL PS
310 | B:00A8H SYMBOL EX0
311 | B:00A9H SYMBOL ET0
312 | B:00AAH SYMBOL EX1
313 | B:00ABH SYMBOL ET1
314 | B:00ACH SYMBOL ES
315 | B:00AFH SYMBOL EA
316 | B:0088H SYMBOL IT0
317 | B:0089H SYMBOL IE0
318 | B:008AH SYMBOL IT1
319 | B:008BH SYMBOL IE1
320 | B:008CH SYMBOL TR0
321 | B:008DH SYMBOL TF0
322 | B:008EH SYMBOL TR1
323 | B:008FH SYMBOL TF1
324 | B:00D0H SYMBOL P
325 | B:00D1H SYMBOL F1
326 | B:00D2H SYMBOL OV
327 | B:00D3H SYMBOL RS0
328 | B:00D4H SYMBOL RS1
329 | B:00D5H SYMBOL F0
330 | B:00D6H SYMBOL AC
331 | B:00D7H SYMBOL CY
332 | D:00CDH SYMBOL TH2
333 | D:00CCH SYMBOL TL2
334 | D:00CBH SYMBOL RCAP2H
335 | D:00CAH SYMBOL RCAP2L
336 | D:00C8H SYMBOL T2CON
337 | D:0098H SYMBOL SCON
338 | D:00B8H SYMBOL IP
339 | D:00A8H SYMBOL IE
340 | D:008DH SYMBOL TH1
341 | D:008CH SYMBOL TH0
342 | D:008BH SYMBOL TL1
343 | D:008AH SYMBOL TL0
344 | D:0089H SYMBOL TMOD
345 | D:0088H SYMBOL TCON
346 | D:0087H SYMBOL PCON
347 | D:0083H SYMBOL DPH
348 | D:0082H SYMBOL DPL
349 | D:0081H SYMBOL SP
350 | D:00F0H SYMBOL B
351 | D:00E0H SYMBOL ACC
352 | D:00D0H SYMBOL PSW
353 | D:00A0H SYMBOL P2
354 | D:0090H SYMBOL P1
355 | D:0080H SYMBOL P0
356 | C:09CAH PUBLIC ResponsePresetMultipleRegisters_16
357 | C:08BFH PUBLIC ResponseForceMultipleCoils_15
358 | C:0878H PUBLIC ResponsePresetSingleRegister_06
359 | C:07F2H PUBLIC ResponseForceSingleCoil_05
360 | C:0748H PUBLIC ResponseReadInputRegisters_04
361 | C:069EH PUBLIC ResponseReadHoldingRegisters_03
362 | C:05CFH PUBLIC ResponseReadInputStatus_02
363 | C:0500H PUBLIC ResponseReadCoilsStatus_01
364 | C:04B8H PUBLIC tx_assci_frame
365 | C:04D1H PUBLIC lrc_calc
366 | C:04A6H PUBLIC clear_frame
367 | C:0481H PUBLIC gen_lrc
368 | C:03DBH PUBLIC execute_modbus_command
369 | B:0000H PUBLIC broadcast
370 | I:0085H PUBLIC send_count
371 | I:0084H PUBLIC data_count
372 | I:0048H PUBLIC ascii_frame
373 | C:03B7H PUBLIC AsciiToTwoByte
374 | C:036AH PUBLIC _TwoByteToAscii
375 | C:0343H PUBLIC _AsciiToByte
376 | C:000EH PUBLIC _NibbleToAscii
377 | C:0314H PUBLIC _ByteToAscii
378 | D:0025H PUBLIC hexa
379 | D:0021H PUBLIC ascii
380 | C:02FDH PUBLIC _GetInputRegisterValue
381 | C:0287H PUBLIC _SetHoldingRegisterValue
382 | C:0270H PUBLIC _GetHoldingRegisterValue
383 | C:02BEH PUBLIC _GetInputValue
384 | C:01E7H PUBLIC _SetCoilValue
385 | C:01A8H PUBLIC _GetCoilValue
386 | I:0044H PUBLIC inputs_registers_array
387 | I:0040H PUBLIC holding_registers_array
388 | I:003FH PUBLIC inputs_array
389 | I:003EH PUBLIC coils_array
390 | C:0B18H PUBLIC _delay_ms
391 | B:00B2H SYMBOL RS485En
392 | B:00C8H SYMBOL CP_RL2
393 | B:00C9H SYMBOL C_T2
394 | B:00CAH SYMBOL TR2
395 | B:00CBH SYMBOL EXEN2
396 | B:00CCH SYMBOL TCLK
397 | B:00CDH SYMBOL RCLK
398 | B:00CEH SYMBOL EXF2
399 | B:00CFH SYMBOL TF2
400 | B:0090H SYMBOL T2
401 | B:0091H SYMBOL T2EX
402 | B:00BDH SYMBOL PT2
403 | B:00ADH SYMBOL ET2
404 | B:0098H SYMBOL RI
405 | B:0099H SYMBOL TI
406 | B:009AH SYMBOL RB8
407 | B:009BH SYMBOL TB8
408 | B:009CH SYMBOL REN
409 | B:009DH SYMBOL SM2
410 | B:009EH SYMBOL SM1
411 | B:009FH SYMBOL SM0
412 | B:00B0H SYMBOL RXD
413 | B:00B1H SYMBOL TXD
414 | B:00B2H SYMBOL INT0
415 | B:00B3H SYMBOL INT1
416 | B:00B4H SYMBOL T0
417 | B:00B5H SYMBOL T1
418 | B:00B6H SYMBOL WR
419 | B:00B7H SYMBOL RD
420 | B:00B8H SYMBOL PX0
421 | B:00B9H SYMBOL PT0
422 | B:00BAH SYMBOL PX1
423 | B:00BBH SYMBOL PT1
424 | B:00BCH SYMBOL PS
425 | B:00A8H SYMBOL EX0
426 | B:00A9H SYMBOL ET0
427 | B:00AAH SYMBOL EX1
428 | B:00ABH SYMBOL ET1
429 | B:00ACH SYMBOL ES
430 | B:00AFH SYMBOL EA
431 | B:0088H SYMBOL IT0
432 | B:0089H SYMBOL IE0
433 | B:008AH SYMBOL IT1
434 | B:008BH SYMBOL IE1
435 | B:008CH SYMBOL TR0
436 | B:008DH SYMBOL TF0
437 | B:008EH SYMBOL TR1
438 | B:008FH SYMBOL TF1
439 | B:00D0H SYMBOL P
440 | B:00D1H SYMBOL F1
441 | B:00D2H SYMBOL OV
442 | B:00D3H SYMBOL RS0
443 | B:00D4H SYMBOL RS1
444 | B:00D5H SYMBOL F0
445 | B:00D6H SYMBOL AC
446 | B:00D7H SYMBOL CY
447 | D:00CDH SYMBOL TH2
448 | D:00CCH SYMBOL TL2
449 | D:00CBH SYMBOL RCAP2H
450 | D:00CAH SYMBOL RCAP2L
451 | D:00C8H SYMBOL T2CON
452 | D:0099H SYMBOL SBUF
453 | D:0098H SYMBOL SCON
454 | D:00B8H SYMBOL IP
455 | D:00A8H SYMBOL IE
456 | D:008DH SYMBOL TH1
457 | D:008CH SYMBOL TH0
458 | D:008BH SYMBOL TL1
459 | D:008AH SYMBOL TL0
460 | D:0089H SYMBOL TMOD
461 | D:0088H SYMBOL TCON
462 | D:0087H SYMBOL PCON
463 | D:0083H SYMBOL DPH
464 | D:0082H SYMBOL DPL
465 | D:0081H SYMBOL SP
466 | D:00F0H SYMBOL B
467 | D:00E0H SYMBOL ACC
468 | D:00D0H SYMBOL PSW
469 | D:00B0H SYMBOL P3
470 | D:00A0H SYMBOL P2
471 | D:0090H SYMBOL P1
472 | D:0080H SYMBOL P0
473 | D:0081H SYMBOL __SP__
474 | ------- PROC _GetCoilValue
475 | D:0002H SYMBOL i
476 | D:0018H SYMBOL d
477 | C:01A8H LINE# 31
478 | C:01A8H LINE# 31
479 | C:01A8H LINE# 33
480 | C:01ABH LINE# 34
481 | C:01B3H LINE# 36
482 | C:01B5H LINE# 42
483 | C:01B6H LINE# 38
484 | C:01C8H LINE# 39
485 | C:01CBH LINE# 40
486 | C:01DDH LINE# 41
487 | C:01E6H LINE# 42
488 | C:01E6H LINE# 42
489 | ------- ENDPROC _GetCoilValue
490 | ------- PROC _SetCoilValue
491 | D:001AH SYMBOL adr
492 | C:01E7H LINE# 44
493 | C:01E7H LINE# 44
494 | C:01EBH LINE# 47
495 | C:01F7H LINE# 73
496 | C:01F8H LINE# 51
497 | C:0209H LINE# 52
498 | C:020EH LINE# 53
499 | C:021FH LINE# 54
500 | C:0225H LINE# 56
501 | C:0229H LINE# 60
502 | C:022BH LINE# 62
503 | C:0232H LINE# 73
504 | C:0233H LINE# 63
505 | C:0239H LINE# 73
506 | C:023AH LINE# 64
507 | C:0241H LINE# 66
508 | C:0254H LINE# 68
509 | C:025BH LINE# 70
510 | C:026FH LINE# 73
511 | C:026FH LINE# 73
512 | ------- ENDPROC _SetCoilValue
513 | ------- PROC _GetHoldingRegisterValue
514 | C:0270H LINE# 76
515 | C:0270H LINE# 76
516 | C:0270H LINE# 78
517 | C:0278H LINE# 80
518 | C:027BH LINE# 86
519 | C:027CH LINE# 84
520 | C:0286H LINE# 86
521 | C:0286H LINE# 86
522 | ------- ENDPROC _GetHoldingRegisterValue
523 | ------- PROC _SetHoldingRegisterValue
524 | D:0012H SYMBOL adr
525 | D:0014H SYMBOL value
526 | C:0287H LINE# 88
527 | C:0287H LINE# 88
528 | C:028FH LINE# 90
529 | C:02B0H LINE# 98
530 | C:02B1H LINE# 96
531 | C:02BDH LINE# 98
532 | C:02BDH LINE# 98
533 | ------- ENDPROC _SetHoldingRegisterValue
534 | ------- PROC _GetInputValue
535 | D:0002H SYMBOL i
536 | D:0018H SYMBOL d
537 | C:02BEH LINE# 101
538 | C:02BEH LINE# 101
539 | C:02BEH LINE# 103
540 | C:02C1H LINE# 104
541 | C:02C9H LINE# 106
542 | C:02CBH LINE# 112
543 | C:02CCH LINE# 108
544 | C:02DEH LINE# 109
545 | C:02E1H LINE# 110
546 | C:02F3H LINE# 111
547 | C:02FCH LINE# 112
548 | C:02FCH LINE# 112
549 | ------- ENDPROC _GetInputValue
550 | ------- PROC _GetInputRegisterValue
551 | C:02FDH LINE# 114
552 | C:02FDH LINE# 114
553 | C:02FDH LINE# 116
554 | C:0305H LINE# 118
555 | C:0308H LINE# 124
556 | C:0309H LINE# 122
557 | C:0313H LINE# 124
558 | C:0313H LINE# 124
559 | ------- ENDPROC _GetInputRegisterValue
560 | ------- PROC _ByteToAscii
561 | C:0314H LINE# 18
562 | C:0314H LINE# 18
563 | C:0314H LINE# 20
564 | C:031AH LINE# 21
565 | C:031EH LINE# 22
566 | C:0324H LINE# 24
567 | C:032BH LINE# 28
568 | C:0330H LINE# 30
569 | C:0337H LINE# 32
570 | C:033DH LINE# 36
571 | C:0342H LINE# 39
572 | C:0342H LINE# 39
573 | ------- ENDPROC _ByteToAscii
574 | ------- PROC _NibbleToAscii
575 | C:000EH LINE# 41
576 | C:000EH LINE# 41
577 | C:000EH LINE# 43
578 | C:0014H LINE# 45
579 | C:0018H LINE# 51
580 | C:0019H LINE# 49
581 | C:001DH LINE# 51
582 | C:001DH LINE# 51
583 | ------- ENDPROC _NibbleToAscii
584 | ------- PROC _AsciiToByte
585 | C:0343H LINE# 53
586 | C:0343H LINE# 53
587 | C:0343H LINE# 55
588 | C:0348H LINE# 57
589 | C:034EH LINE# 61
590 | C:0352H LINE# 63
591 | C:0358H LINE# 65
592 | C:035EH LINE# 69
593 | C:0362H LINE# 71
594 | C:0369H LINE# 72
595 | C:0369H LINE# 72
596 | ------- ENDPROC _AsciiToByte
597 | ------- PROC _TwoByteToAscii
598 | C:036AH LINE# 74
599 | C:036AH LINE# 74
600 | C:036AH LINE# 77
601 | C:0373H LINE# 79
602 | C:0376H LINE# 80
603 | C:037FH LINE# 82
604 | C:0389H LINE# 83
605 | C:039AH LINE# 84
606 | C:03A1H LINE# 86
607 | C:03A3H LINE# 87
608 | C:03B2H LINE# 86
609 | C:03B6H LINE# 89
610 | C:03B6H LINE# 89
611 | ------- ENDPROC _TwoByteToAscii
612 | ------- PROC AsciiToTwoByte
613 | D:0002H SYMBOL a
614 | D:001CH SYMBOL b
615 | D:001EH SYMBOL result
616 | C:03B7H LINE# 91
617 | C:03B7H LINE# 91
618 | C:03B7H LINE# 93
619 | C:03C0H LINE# 94
620 | C:03CCH LINE# 95
621 | C:03D6H LINE# 96
622 | C:03DAH LINE# 97
623 | C:03DAH LINE# 97
624 | ------- ENDPROC AsciiToTwoByte
625 | ------- PROC execute_modbus_command
626 | D:0009H SYMBOL is_me
627 | D:000AH SYMBOL fun
628 | D:000BH SYMBOL lrc
629 | C:03DBH LINE# 33
630 | C:03DBH LINE# 33
631 | C:03DBH LINE# 35
632 | C:03E4H LINE# 36
633 | C:03EBH LINE# 38
634 | C:03EEH LINE# 41
635 | C:03F4H LINE# 42
636 | C:0405H LINE# 43
637 | C:0409H LINE# 44
638 | C:040CH LINE# 45
639 | C:040DH LINE# 44
640 | C:040FH LINE# 45
641 | C:0413H LINE# 47
642 | C:0416H LINE# 52
643 | C:0421H LINE# 53
644 | C:0422H LINE# 52
645 | C:0424H LINE# 53
646 | C:0426H LINE# 55
647 | C:042AH LINE# 59
648 | C:042CH LINE# 60
649 | C:0432H LINE# 62
650 | C:0435H LINE# 67
651 | C:0442H LINE# 68
652 | C:0468H LINE# 72
653 | C:046BH LINE# 77
654 | C:046EH LINE# 82
655 | C:0471H LINE# 87
656 | C:0474H LINE# 92
657 | C:0477H LINE# 97
658 | C:047AH LINE# 102
659 | C:047DH LINE# 107
660 | C:0480H LINE# 115
661 | C:0480H LINE# 115
662 | ------- ENDPROC execute_modbus_command
663 | ------- PROC gen_lrc
664 | C:0481H LINE# 117
665 | C:0481H LINE# 117
666 | C:0481H LINE# 119
667 | C:0487H LINE# 120
668 | C:0490H LINE# 121
669 | C:0497H LINE# 123
670 | C:049EH LINE# 124
671 | C:04A5H LINE# 125
672 | C:04A5H LINE# 125
673 | ------- ENDPROC gen_lrc
674 | ------- PROC clear_frame
675 | C:04A6H LINE# 126
676 | C:04A6H LINE# 126
677 | C:04A6H LINE# 129
678 | C:04AAH LINE# 130
679 | C:04AEH LINE# 131
680 | C:04B7H LINE# 135
681 | C:04B7H LINE# 135
682 | ------- ENDPROC clear_frame
683 | ------- PROC tx_assci_frame
684 | C:04B8H LINE# 136
685 | C:04B8H LINE# 136
686 | C:04B8H LINE# 138
687 | C:04BBH LINE# 140
688 | C:04BDH LINE# 141
689 | C:04BFH LINE# 142
690 | C:04C2H LINE# 146
691 | C:04C4H LINE# 147
692 | C:04C8H LINE# 148
693 | C:04CAH LINE# 149
694 | C:04CCH LINE# 150
695 | C:04D0H LINE# 151
696 | C:04D0H LINE# 151
697 | ------- ENDPROC tx_assci_frame
698 | ------- PROC lrc_calc
699 | D:0004H SYMBOL i
700 | C:04D1H LINE# 152
701 | C:04D1H LINE# 152
702 | C:04D1H LINE# 154
703 | C:04D3H LINE# 155
704 | C:04E1H LINE# 157
705 | C:04F5H LINE# 155
706 | C:04FBH LINE# 159
707 | C:04FDH LINE# 160
708 | C:04FFH LINE# 161
709 | C:04FFH LINE# 161
710 | ------- ENDPROC lrc_calc
711 | ------- PROC ResponseReadCoilsStatus_01
712 | D:0002H SYMBOL start
713 | D:002BH PUBLIC cant
714 | D:0006H SYMBOL i
715 | D:0013H SYMBOL limit
716 | D:0015H SYMBOL coils
717 | D:000EH SYMBOL k
718 | D:0016H SYMBOL new_data_count
719 | C:0500H LINE# 164
720 | C:0500H LINE# 164
721 | C:0500H LINE# 167
722 | C:0505H LINE# 168
723 | C:050BH LINE# 169
724 | C:050FH LINE# 170
725 | C:0510H LINE# 172
726 | C:051AH LINE# 170
727 | C:051EH LINE# 174
728 | C:0525H LINE# 175
729 | C:0527H LINE# 177
730 | C:0531H LINE# 175
731 | C:0535H LINE# 179
732 | C:053CH LINE# 180
733 | C:0547H LINE# 183
734 | C:0559H LINE# 185
735 | C:055CH LINE# 186
736 | C:055EH LINE# 187
737 | D:0017H SYMBOL val
738 | C:0576H LINE# 189
739 | C:0584H LINE# 190
740 | C:0587H LINE# 192
741 | C:0594H LINE# 194
742 | C:0598H LINE# 196
743 | C:059DH LINE# 197
744 | C:05A6H LINE# 198
745 | C:05ADH LINE# 199
746 | C:05AFH LINE# 183
747 | C:05BCH LINE# 202
748 | C:05C1H LINE# 203
749 | C:05C5H LINE# 204
750 | C:05C9H LINE# 206
751 | C:05CCH LINE# 208
752 | C:05CCH LINE# 210
753 | ------- ENDPROC ResponseReadCoilsStatus_01
754 | ------- PROC ResponseReadInputStatus_02
755 | D:0002H SYMBOL start
756 | D:002BH PUBLIC cant
757 | D:0006H SYMBOL i
758 | D:0013H SYMBOL limit
759 | D:0015H SYMBOL inputs
760 | D:000EH SYMBOL k
761 | D:0016H SYMBOL new_data_count
762 | C:05CFH LINE# 211
763 | C:05CFH LINE# 211
764 | C:05CFH LINE# 214
765 | C:05D4H LINE# 215
766 | C:05DAH LINE# 216
767 | C:05DEH LINE# 217
768 | C:05DFH LINE# 219
769 | C:05E9H LINE# 217
770 | C:05EDH LINE# 221
771 | C:05F4H LINE# 222
772 | C:05F6H LINE# 224
773 | C:0600H LINE# 222
774 | C:0604H LINE# 227
775 | C:060BH LINE# 228
776 | C:0616H LINE# 231
777 | C:0628H LINE# 233
778 | C:062BH LINE# 234
779 | C:062DH LINE# 235
780 | D:0017H SYMBOL val
781 | C:0645H LINE# 237
782 | C:0653H LINE# 238
783 | C:0656H LINE# 240
784 | C:0663H LINE# 242
785 | C:0667H LINE# 244
786 | C:066CH LINE# 245
787 | C:0675H LINE# 246
788 | C:067CH LINE# 248
789 | C:067EH LINE# 231
790 | C:068BH LINE# 251
791 | C:0690H LINE# 252
792 | C:0694H LINE# 253
793 | C:0698H LINE# 255
794 | C:069BH LINE# 257
795 | C:069BH LINE# 259
796 | ------- ENDPROC ResponseReadInputStatus_02
797 | ------- PROC ResponseReadHoldingRegisters_03
798 | D:0002H SYMBOL start
799 | D:002BH PUBLIC cant
800 | D:0006H SYMBOL i
801 | D:000CH SYMBOL limit
802 | D:000EH SYMBOL status
803 | D:0010H SYMBOL new_data_count
804 | C:069EH LINE# 260
805 | C:069EH LINE# 260
806 | C:069EH LINE# 263
807 | C:06A7H LINE# 264
808 | C:06A9H LINE# 265
809 | C:06ADH LINE# 266
810 | C:06AEH LINE# 268
811 | C:06B8H LINE# 266
812 | C:06BCH LINE# 270
813 | C:06C3H LINE# 271
814 | C:06C5H LINE# 273
815 | C:06CFH LINE# 271
816 | C:06D3H LINE# 275
817 | C:06DAH LINE# 276
818 | C:06E5H LINE# 279
819 | C:06F7H LINE# 281
820 | C:0702H LINE# 282
821 | C:0709H LINE# 284
822 | C:0712H LINE# 285
823 | C:0719H LINE# 286
824 | C:0720H LINE# 287
825 | C:0727H LINE# 289
826 | C:072BH LINE# 279
827 | C:0735H LINE# 292
828 | C:073AH LINE# 293
829 | C:073EH LINE# 294
830 | C:0742H LINE# 296
831 | C:0745H LINE# 298
832 | C:0745H LINE# 300
833 | ------- ENDPROC ResponseReadHoldingRegisters_03
834 | ------- PROC ResponseReadInputRegisters_04
835 | D:0002H SYMBOL start
836 | D:002BH PUBLIC cant
837 | D:0006H SYMBOL i
838 | D:000CH SYMBOL limit
839 | D:000EH SYMBOL status
840 | D:0010H SYMBOL new_data_count
841 | C:0748H LINE# 301
842 | C:0748H LINE# 301
843 | C:0748H LINE# 304
844 | C:0751H LINE# 305
845 | C:0753H LINE# 306
846 | C:0757H LINE# 307
847 | C:0758H LINE# 309
848 | C:0762H LINE# 307
849 | C:0766H LINE# 311
850 | C:076DH LINE# 312
851 | C:076FH LINE# 314
852 | C:0779H LINE# 312
853 | C:077DH LINE# 317
854 | C:0784H LINE# 318
855 | C:078FH LINE# 321
856 | C:07A1H LINE# 323
857 | C:07ACH LINE# 325
858 | C:07B3H LINE# 326
859 | C:07BCH LINE# 327
860 | C:07C3H LINE# 328
861 | C:07CAH LINE# 329
862 | C:07D1H LINE# 331
863 | C:07D5H LINE# 321
864 | C:07DFH LINE# 334
865 | C:07E4H LINE# 335
866 | C:07E8H LINE# 336
867 | C:07ECH LINE# 338
868 | C:07EFH LINE# 340
869 | C:07EFH LINE# 342
870 | ------- ENDPROC ResponseReadInputRegisters_04
871 | ------- PROC ResponseForceSingleCoil_05
872 | D:000EH SYMBOL coilID
873 | D:0010H SYMBOL value
874 | D:000CH SYMBOL i
875 | C:07F2H LINE# 343
876 | C:07F2H LINE# 343
877 | C:07F2H LINE# 345
878 | C:07F7H LINE# 346
879 | C:07FBH LINE# 347
880 | C:07FFH LINE# 348
881 | C:0803H LINE# 350
882 | C:080FH LINE# 348
883 | C:0816H LINE# 352
884 | C:081DH LINE# 353
885 | C:0822H LINE# 355
886 | C:082EH LINE# 353
887 | C:0835H LINE# 357
888 | C:083CH LINE# 358
889 | C:0856H LINE# 360
890 | C:086FH LINE# 364
891 | C:0872H LINE# 368
892 | C:0875H LINE# 370
893 | C:0875H LINE# 372
894 | ------- ENDPROC ResponseForceSingleCoil_05
895 | ------- PROC ResponsePresetSingleRegister_06
896 | D:0002H SYMBOL registerID
897 | D:0004H SYMBOL value
898 | D:0006H SYMBOL i
899 | C:0878H LINE# 374
900 | C:0878H LINE# 374
901 | C:0878H LINE# 379
902 | C:087DH LINE# 381
903 | C:0889H LINE# 379
904 | C:0890H LINE# 383
905 | C:0897H LINE# 384
906 | C:0899H LINE# 386
907 | C:08A3H LINE# 384
908 | C:08A7H LINE# 388
909 | C:08AEH LINE# 389
910 | C:08B9H LINE# 391
911 | C:08BCH LINE# 393
912 | C:08BCH LINE# 395
913 | ------- ENDPROC ResponsePresetSingleRegister_06
914 | ------- PROC ResponseForceMultipleCoils_15
915 | D:0002H SYMBOL start
916 | D:002BH PUBLIC cant
917 | D:0006H SYMBOL i
918 | D:000CH SYMBOL limit
919 | D:000EH SYMBOL coils
920 | D:000FH SYMBOL k
921 | D:0010H SYMBOL new_data_count
922 | D:0011H SYMBOL tempAdr
923 | D:0012H SYMBOL index
924 | D:0013H SYMBOL offset
925 | I:0091H SYMBOL parameters
926 | I:0090H SYMBOL byte_count
927 | C:08BFH LINE# 397
928 | C:08BFH LINE# 397
929 | C:08BFH LINE# 400
930 | C:08C4H LINE# 401
931 | C:08CCH LINE# 402
932 | C:08D0H LINE# 405
933 | C:08D4H LINE# 407
934 | C:08E0H LINE# 405
935 | C:08E7H LINE# 409
936 | C:08EEH LINE# 410
937 | C:08F0H LINE# 412
938 | C:08FAH LINE# 410
939 | C:08FEH LINE# 414
940 | C:0905H LINE# 415
941 | C:0910H LINE# 417
942 | C:091DH LINE# 418
943 | C:0921H LINE# 421
944 | C:0925H LINE# 422
945 | C:0936H LINE# 424
946 | C:0949H LINE# 425
947 | C:094DH LINE# 426
948 | C:095BH LINE# 422
949 | C:0965H LINE# 430
950 | C:0977H LINE# 432
951 | C:097EH LINE# 433
952 | C:0986H LINE# 434
953 | C:098CH LINE# 435
954 | C:09A4H LINE# 436
955 | C:09B6H LINE# 430
956 | C:09C0H LINE# 439
957 | C:09C4H LINE# 441
958 | C:09C7H LINE# 443
959 | C:09C7H LINE# 445
960 | ------- ENDPROC ResponseForceMultipleCoils_15
961 | ------- PROC ResponsePresetMultipleRegisters_16
962 | D:0002H SYMBOL start
963 | D:002BH PUBLIC cant
964 | D:0006H SYMBOL i
965 | D:000CH SYMBOL limit
966 | D:000EH SYMBOL reg_value
967 | D:0010H SYMBOL j
968 | I:0090H SYMBOL byte_count
969 | C:09CAH LINE# 447
970 | C:09CAH LINE# 447
971 | C:09CAH LINE# 450
972 | C:09D3H LINE# 451
973 | C:09D5H LINE# 453
974 | C:09D9H LINE# 455
975 | C:09E5H LINE# 453
976 | C:09ECH LINE# 457
977 | C:09F3H LINE# 458
978 | C:09F5H LINE# 460
979 | C:09FFH LINE# 458
980 | C:0A03H LINE# 462
981 | C:0A0AH LINE# 465
982 | C:0A19H LINE# 466
983 | C:0A1DH LINE# 469
984 | C:0A25H LINE# 470
985 | C:0A3AH LINE# 472
986 | C:0A3DH LINE# 474
987 | C:0A4DH LINE# 472
988 | C:0A5CH LINE# 476
989 | C:0A63H LINE# 477
990 | C:0A78H LINE# 470
991 | C:0A82H LINE# 480
992 | C:0A86H LINE# 482
993 | C:0A89H LINE# 484
994 | C:0A89H LINE# 486
995 | ------- ENDPROC ResponsePresetMultipleRegisters_16
996 | ------- PROC Serial_PWM_Init
997 | C:0A8CH LINE# 23
998 | C:0A8CH LINE# 23
999 | C:0A8CH LINE# 25
1000 | C:0A8EH LINE# 27
1001 | C:0A91H LINE# 29
1002 | C:0A94H LINE# 30
1003 | C:0A97H LINE# 32
1004 | C:0A9AH LINE# 33
1005 | C:0A9DH LINE# 35
1006 | C:0AA7H LINE# 36
1007 | C:0AADH LINE# 38
1008 | C:0AAFH LINE# 39
1009 | C:0AB1H LINE# 41
1010 | C:0AB4H LINE# 43
1011 | C:0AB6H LINE# 44
1012 | C:0AB8H LINE# 45
1013 | C:0ABAH LINE# 47
1014 | C:0ABCH LINE# 48
1015 | C:0ABCH LINE# 48
1016 | ------- ENDPROC Serial_PWM_Init
1017 | ------- PROC make_hash
1018 | D:0038H SYMBOL i
1019 | D:0036H SYMBOL h
1020 | C:0ABDH LINE# 50
1021 | C:0ABDH LINE# 50
1022 | C:0ABDH LINE# 52
1023 | C:0AC2H LINE# 53
1024 | C:0AD8H LINE# 54
1025 | C:0AF7H LINE# 53
1026 | C:0B01H LINE# 56
1027 | C:0B17H LINE# 57
1028 | C:0B17H LINE# 57
1029 | ------- ENDPROC make_hash
1030 | ------- PROC _delay_ms
1031 | D:0004H SYMBOL k
1032 | D:003AH SYMBOL s
1033 | C:0B18H LINE# 59
1034 | C:0B18H LINE# 59
1035 | C:0B18H LINE# 62
1036 | C:0B1DH LINE# 63
1037 | C:0B2DH LINE# 65
1038 | C:0B35H LINE# 63
1039 | C:0B3FH LINE# 67
1040 | C:0B3FH LINE# 67
1041 | ------- ENDPROC _delay_ms
1042 | ------- PROC PWM
1043 | C:0B40H LINE# 69
1044 | C:0B54H LINE# 69
1045 | C:0B54H LINE# 72
1046 | C:0B5EH LINE# 74
1047 | C:0B61H LINE# 75
1048 | C:0B64H LINE# 77
1049 | C:0B73H LINE# 79
1050 | C:0B77H LINE# 83
1051 | C:0B82H LINE# 86
1052 | C:0B95H LINE# 88
1053 | C:0BA1H LINE# 91
1054 | C:0BA9H LINE# 93
1055 | C:0BB1H LINE# 94
1056 | C:0BBBH LINE# 96
1057 | C:0BC0H LINE# 97
1058 | C:0BC2H LINE# 109
1059 | C:0BC4H LINE# 110
1060 | C:0BDAH LINE# 111
1061 | C:0BDAH LINE# 111
1062 | ------- ENDPROC PWM
1063 | ------- PROC SerialPortInt
1064 | D:0008H SYMBOL rx
1065 | C:0BDBH LINE# 113
1066 | C:0BF5H LINE# 113
1067 | C:0BF5H LINE# 115
1068 | C:0BF8H LINE# 117
1069 | C:0BFBH LINE# 119
1070 | C:0BFDH LINE# 120
1071 | C:0C00H LINE# 177
1072 | C:0C1AH LINE# 179
1073 | C:0C1BH LINE# 125
1074 | C:0C27H LINE# 127
1075 | C:0C29H LINE# 128
1076 | C:0C2FH LINE# 129
1077 | C:0C32H LINE# 133
1078 | C:0C34H LINE# 134
1079 | C:0C39H LINE# 139
1080 | C:0C3CH LINE# 142
1081 | C:0C44H LINE# 144
1082 | C:0C47H LINE# 145
1083 | C:0C49H LINE# 146
1084 | C:0C4FH LINE# 148
1085 | C:0C54H LINE# 150
1086 | C:0C59H LINE# 152
1087 | C:0C62H LINE# 157
1088 | C:0C6DH LINE# 159
1089 | C:0C74H LINE# 161
1090 | C:0C82H LINE# 163
1091 | C:0C85H LINE# 165
1092 | C:0C88H LINE# 167
1093 | C:0C8BH LINE# 170
1094 | C:0C90H LINE# 172
1095 | C:0C96H LINE# 177
1096 | C:0C98H LINE# 179
1097 | ------- ENDPROC SerialPortInt
1098 | ------- PROC update_display
1099 | D:003AH SYMBOL x
1100 | D:003CH SYMBOL L
1101 | C:0C9BH LINE# 181
1102 | C:0C9BH LINE# 181
1103 | C:0C9BH LINE# 183
1104 | C:0CA5H LINE# 184
1105 | C:0CB0H LINE# 186
1106 | C:0CC2H LINE# 188
1107 | C:0CC9H LINE# 189
1108 | C:0CCDH LINE# 193
1109 | C:0CDBH LINE# 195
1110 | C:0CEAH LINE# 196
1111 | C:0CF1H LINE# 197
1112 | C:0CF3H LINE# 201
1113 | C:0D05H LINE# 202
1114 | C:0D0BH LINE# 203
1115 | C:0D0BH LINE# 203
1116 | ------- ENDPROC update_display
1117 | ------- PROC main
1118 | C:0D0CH LINE# 205
1119 | C:0D0CH LINE# 205
1120 | C:0D0CH LINE# 207
1121 | C:0D0FH LINE# 209
1122 | C:0D17H LINE# 210
1123 | C:0D1EH LINE# 212
1124 | C:0D20H LINE# 213
1125 | C:0D22H LINE# 214
1126 | C:0D24H LINE# 215
1127 | C:0D27H LINE# 217
1128 | C:0D2AH LINE# 219
1129 | C:0D2CH LINE# 223
1130 | C:0D2FH LINE# 224
1131 | C:0D36H LINE# 226
1132 | ------- ENDPROC main
1133 | ------- ENDMOD main
1134 | C:0142H PUBLIC ?C_START1
1135 | C:0026H PUBLIC ?C_IMULX
1136 | C:002BH PUBLIC ?C_IMUL
1137 | C:003FH PUBLIC ?C_SIDIV
1138 | C:0067H PUBLIC ?C_UIDIV
1139 | C:00ECH PUBLIC CPL_R4R5
1140 | C:00F4H PUBLIC CPL_R6R7
1141 | C:009FH PUBLIC DIV_2
1142 | C:00FCH PUBLIC ?C_CMPLS
1143 | C:010BH PUBLIC ?C_CMPL
1144 | C:0133H PUBLIC RST_STK4?C
1145 | D:00A0H PUBLIC HPD_ADDR
1146 | C:0D38H PUBLIC ?C_INITSEGSTART
1147 | N:007FH PUBLIC IDATALEN
1148 | N:00FFH PUBLIC _INITP2?
1149 |
1150 | UNCALLED SEGMENTS:
1151 | ------------------
1152 | ?PR?make_hash?MAIN: Function make_hash in file F:\REINIER\ESTUDIO\TESIS\PROTEUS\CAP03\C_CODE_&
1153 | SLAVE\MAIN.OBJ was not called
1154 |
1155 | ----------------------
1156 | SUGGESTED OPTIMIZATION
1157 | ----------------------
1158 | Warning: 67 (43H) data bytes in the range [00H-80H] are available for storage.
1159 | Consider using some of these for 'data' variables in your source files.
1160 |
1161 |
1162 | LINK/LOCATE RUN COMPLETE, NO ERROR FOUND.
1163 |
1164 |
--------------------------------------------------------------------------------