├── _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 |
8 | 9 | 10 |
11 | 12 |
13 | 14 |
15 | 16 | 17 |
18 |
19 | 20 | 21 | 22 |
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>45 7 | <1>50 8 | <2>27 9 | <3>183 10 | <4>16 11 | <5>41 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>60 7 | <1>66 8 | <2>36 9 | <3>249 10 | <4>20 11 | <5>43 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 |
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 |
-------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------