== Release 5.4.1.1 * Fixed: Reset the Pull-up resistors when you start a new program. Fix #222 * Added PWM on Atmega128. Fix #221 * Fixed: BUS TRASER for PICs MCU. * Wiki: BUS TRASER https://github.com/LDmicro/LDmicro/wiki/BUS-TRASER == Release 5.4.1.0 * Added "Microchip PIC12F1840 8-pin packages" (Sponsored by MGP, thank you very much.) * New: Element ODR: ONE DROP if RISING is the inversion of the element OSR: ONE-SHOT RISING, _ _ _ --[_/ ODR \_/ ]-- ONE DROP if RISING _ _ --[_/ OSR_/ \_]-- ONE-SHOT RISING * Rename: Element OSL: ONE-SHOT LOW LEVEL to new name ODF: ONE DROP if FALLING _ _ _ --[ \_ODF \_/ ]-- ONE DROP if FALLING _ _ --[ \_OSF_/ \_]-- ONE-SHOT FALLING * Wiki: OSR, OSF, ODR, ODF, OSC https://github.com/LDmicro/LDmicro/wiki/OSR,-OSF,-ODR,-ODF,-OSC * Fixed error: 'true' undeclared (first use in this function). Issue BuildAVR.bat fixed #227 while(true) replaced at while(1) * Fixed: BUS TRACER element. * Wiki: HOW TO: 7 segment display (7SEG & BUS) https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-7-segment-display,-7SEG-&-BUS * Fix: WIP: SPI Atmel AVR-GCC for ATmega2560. == Release 5.4.0.5 * Refactor EEPROM RERSIST_ELEM for AVR * Fixed bug: LDmicro Forum - A problem with substracting 2 values #214 ELEM_ADD & ELEM_SUB refactoring * Added "Atmel AVR ATmega1284 44-Pin packages" * Fixed PWM for AVR ATmega1284. Six PWM Channels are available. * Fixed AVR ATtiny85 == Release 5.4.0.4 * Fixed the bug in ladder.h generated by version 5.4.0.x when compiling for AVR-GCC (double include). * PULSER instruction tested with ATmega2560 (both HEX->ASM and AVR-GCC compilers) PULSER instruction tested with PIC16F887 (both HEX->ASM and HI-TECH C compilers) See: https://github.com/LDmicro/LDmicro/wiki/PULSER * Fixed: Convert manual-es.txt from 65001 UTF-8 code page to 1252 code page == Release 5.4.0.3 * Modified menu Settings * Fixed lang-fr.txt * Some minor hotfixes == Release 5.4.0.2 * Fixed Microchip PIC16F887 44-TQFP UART, ISP,I2C pins. * Fixed Quad Encoder Output dialog Dir pin name. * Fixed Atmel AVR ATmega32U4 pins mapping for Arduino. * Fixed Spanish locale. Thank you very much, Paulino Cano. lang-es.txt, manual-es.txt updated. == Release 5.4.0.1 String type support * Added "Atmel AVR ATmega32U4 44-Pin packages", "Atmel AVR ATmega32 44-Pin packages", "Atmel AVR ATmega328 32-Pin packages", "Atmel AVR ATtiny85 8-Pin packages", "Atmel AVR ATtiny85 20-Pin packages", "Microchip PIC16F1512 28-Pin SPDIP, SOIC, SSOP", "Microchip PIC16F1516 28-Pin SPDIP, SOIC, SSOP", "Microchip PIC16F1527 64-Pin packages", "Microchip PIC16F1824 14-Pin PDIP, SOIC, TSSOP", "Microchip PIC16F1827 18-Pin PDIP, SOIC", "Microchip PIC10F202 6-SOT", "Microchip PIC16F887 44-TQFP" * Added LIBRARIES_FOR\Pic16\UartLib.* LIBRARIES_FOR\AVR\UartLib.* * Added "9-SEGMENT FONT converter" "14-SEGMENT FONT converter" "16-SEGMENT FONT converter" * Added "BUS tracer" support * Added STRING type support in generated C code Tested ATmega2560, * Added Blue color scheme by Jose GILLES * Added by Jose GILLES "Microchip PIC18F4520 40-PDIP" == Release 5.3.1.0 * Fixed flashMcu.bat and LIBRARIES_FOR ARM,AVR, PIC by Jose GILLES * Modified "St ARM STM32F40X 144-LQFP" by Jose GILLES * Added "St ARM STM32F10X 48-LQFP / Bluepill" by Jose GILLES * Fixed OSR, OSF, OSL, OSC show error. * Fixed AVR compilation stack overflow error. * Fixed flashMcu.bat for AVR * Fixed LUT index range in simulation. * Fixed PIC UART baud rate calculation. * Fixed PICs PORTA outputs still stay in analog mode in generated C source code. Added setPortDigitalIO() * Fixed When compiling Hex/Asm with PIC target and then calling FlashMcu, the window still closes immediately without a word... == Release 5.3.0.5 * Fixed flashMcu.bat and LIBRARIES_FOR ARM,AVR, PIC by Jose GILLES * Added: Microchip PIC12F675 8-pin packages * Added: Microchip PIC16F72 28-Pin PDIP, SOIC, SSOP * Added: Atmel AVR ATtiny10 6-Pin packages == Release 5.3.0.4 * Added: Menu Settings->Set Pull-up input resistors. All input pins try to set Pull-up registers by default. Attention: Not all ports have a pull-up resistor. See datasheets of the controller for details. * Added: PIC12F683 8-pin. * Added: ESP8266. ANSIC compiler only. * Fixed: Pins PB6 and PB7 are available for general I/O use when the internal clock source is selected. MCU list: ATmega8, ATmega48, ATmega88, ATmega168, ATmega328. Note: LDmicro not provided any clock source manipulation. Discussion here: http://cq.cx/ladder-forum.pl?action=viewthread&parent=8416&tt=1555027659 * Fixed: General variable name as Timer parameter, Issue #172 * Fixed: Quadrature Encoder, Issue #175 Output Dir can be Y (pin) or R (internal relay). == Release 5.3.0.3 * Fixed crash when save LD. * Fixed LDLANG_IT, Italian locale. Thank you very much, Claudio Birello. manual-it.txt updated. == Release 5.3.0.2 * Fixed flashMcu.bat and LIBRARIES_FOR ARM,AVR, PIC by Jose GILLES * Fixed LDLANG_IT, Italian locale. Thanks, Claudio Birello. == Release 5.3.0.1 * Fixed: Shift + 6 problem (insert rung before) #155 * Fixed: Undoredo bug #160 * Fixed: Cannot set a value greater than 0x7FFFFFFF in a variable of 4 bytes. #146 == Release 5.3.0.0 * Added Release 5.2.0.a by Jose GILLES * LdMicro32 release 5.2 http://cq.cx/ladder-forum.pl?action=viewthread&parent=8128&tt=1549645797 * LdMicro32 on Github http://cq.cx/ladder-forum.pl?action=viewthread&parent=7956&tt=1548617794 == Release 4.4.4.0 * Fixed: LDmicro closes unexpectedly #144 * Fixed: Compile as Interpretable Byte Code fails with the error: "Must choose a target microcontroller before compiling" #141 * Fixed: LDmicro compiles sketch for Arduino even if PIC MCU is selected #101 * Fixed: Cannot set a value greater than 0x7FFFFFFF in a variable of 4 bytes. #146 * Fixed: In simulation mode when pressing an input, if not selected pin MCU, then LDmicro is closed. Issue #132 * Fixed: The code generated by "Compile ANSIC" for the SRAND insyruction #133 * Updated: Italian locale. Thanks, Claudio Birello. * Wiki: UART communication FAQ https://github.com/LDmicro/LDmicro/wiki/UART-communication-FAQ * Updated: The UART RECEIVE, UART SEND instructions can receive/send a more than one-byte length variables. "Number of bytes to transmit:" parameter must be less or equal to the size of the used variable. Value 1 byte is compatible with the previous LDmicro version. The parameter "Wait until all bytes are transmitted:" controls the algorithm of the transmission: if 1 - all bytes are transmitted in one package, if 0 - one byte per a PLC cycle. When all bytes are has transmitted, the output condition is "true" during one PLC cycle. Value 0 is compatible with the previous LDmicro version. See: UART communication FAQ part 2 https://github.com/LDmicro/LDmicro/wiki/UART-communication-FAQ-part-2 == Release 4.4.3.1 * Fixed: ADC conversion time Tad for PIC16F88 * Fixed: PWM timer can not be equal to the PLC cycle timer. == Release 4.4.3.0 * New: 7-SEGMENT FONT CONVERTER instruction. * New: BINARY TO BCD CONVERTER instruction. * Fixed: QUADRATURE ENCODER start value. * Fixed: build failed in CCS when disabling pull up resistor #128 * Fixed: #USE RS232 & #USE DELAY ansi c generator for PICC build fails depending on their position #127 * Fixed: Russian localization * PIC: You can flash the PIC MCU thru the PICkit 3 Command Line Interface. Press F6 to call flashMcu.bat See flashMcu.bat and readMcu.bat == Release 4.4.2.0 * New: Incremental QUADRATURE ENCODER instruction. See manual.txt and https://github.com/LDmicro/LDmicro/wiki/Incremental-QUADRATURE-ENCODER Incremental QUADRATURE ENCODER controls the brightness of the LED (PWM out) https://github.com/LDmicro/LDmicro/wiki/Incremental-QUADRATURE-ENCODER-controls-the-brightness-of-the-LED-(PWM-out) * Fixed: Bug: UART box shows up even if UART is deleted from the ladder diagram after simulating.(#126) * Fixed: The code generated for the Reset instruction of any Counter type looks incorrect as the counter variable is reset to 0 and not to the counter's "Start Value" value.(#125) * Fixed: The code generated by "Compile ANSIC" for the Look-Up Table instruction [LUT] does not include a declaration for the table's index variable.(#124) * Fixed: The code generated by "Compile ANSIC" for the Logical Shift instruction generates a declaration "STATIC SBYTE 1 = 0;" (#123) * Fixed: For the PWL instruction display the Index variable in the GUI and allow its size to be edited.(#122) * Fixed: Bug in FORMATTED STRING OVER UART element, when using command \0xFE instead of \xFE ldmicro closes.(#120) == Release 4.4.1.1 * Fixed: Bug in insert SET BIT instructions with arduino (#118) == Release 4.4.1.0 * Fixed: "Compile ANSIC" fails and LDmico exits with an error when the INT_SET_VARIABLE_NEG instruction is used. #117 * Fixed: Test bit instructions (IF SET bit) with arduino #116 * New: Kind of inputs of ladder elements https://github.com/LDmicro/LDmicro/wiki/Kind-of-inputs-of-ladder-elements '-' Direct static logic input. Active at external 1. 'o' Inverse static logic input. Logic negation at input. External 0 produces internal 1. '/' Dynamic input active on 0 to 1 transition for positive logic. '\' Dynamic input active on 1 to 0 transition for positive logic. * New: Timer with variable delay https://github.com/LDmicro/LDmicro/wiki/Timer-with-variable-delay == Release 4.4.0.2 * Optimized: PIECEWISE LINEAR TABLE (reduced size 10%), ADD and SUB operations for PIC's. * Fixed: READ ADC for EnhancedMidrangeCore14bit PIC's. * Fixed: AUTO_PAGING version 4.3 for PIC's. * Wiki: Disable Pull up resistors https://github.com/LDmicro/LDmicro/wiki/Disable-Pull-up-resistors * Wiki: Pull down resistors https://github.com/LDmicro/LDmicro/wiki/Pull-down-resistors * Added: REFS parameter for ADC Voltage Reference. * Wiki: ADC Voltage Reference https://github.com/LDmicro/LDmicro/wiki/ADC-Voltage-Reference How to measure battery voltage (Atmel AVR) https://github.com/LDmicro/LDmicro/wiki/How-to-measure-battery-voltage How to measure voltage (PIC) https://github.com/LDmicro/LDmicro/wiki/How-to-measure-voltage-(PIC) == Release 4.4.0.0 * New: The variable name that begins with a '#' character and subsequent as a general-purpose variable name treated as the indirect address of hardware register. Value like #VarName is the indirect address of hardware register (Indirect Address Pointer). See manual.txt Note: Only for PIC,AVR implemented. * Wiki: LDmicro indirect addressing https://github.com/LDmicro/LDmicro/wiki/LDmicro-indirect-addressing == Release 4.3.9.6 * Wiki: HOW TO: Change USART Baud Rate https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Change-USART-Baud-Rate == Release 4.3.9.5 * Fixed: Re-enable ANSI C compilation with no MCU #95 * Wiki: Replace the obsolete elements. https://github.com/LDmicro/LDmicro/wiki/Replace-the-obsolete-elements == Release 4.3.9.4 * Fixed: LDmicro Forum - pic16f887 http://cq.cx/ladder-forum.pl?action=viewthread&parent=7317&tt=1526403799 Recovered backward compatibility with version 2.3 for the SET PWM operation. Recovered the READ_ADC operation for PIC16F887, PIC16F877, PIC16F88, PIC16F72. Attention: Releases 4.3.8.5 - 4.3.9.3 has the bug with PIC's MCU READ_ADC: only RA0 analog input is available! * Fixed: The GEQ instruction does not work with neg.numbers #57 Try simulate GEQ.LD from the page https://github.com/LDmicro/LDmicro/issues/57 == Release 4.3.9.3 * Fixed: SET PWM instruction in Arduino Sketch. * Wiki: LDmicro, Arduino, LCD https://github.com/LDmicro/LDmicro/wiki/LDmicro,-Arduino,-LCD == Release 4.3.9.2 * Fixed: Problem "PERSIST" Arduino Mega. #82 * Updated: EXTERN_EVERYTHING in Arduino Sketch. * Fixed: RESET PWM instruction in Arduino Sketch. #62 * Added: SET PWM - optional setPwmFrequency() in Arduino Sketch. Need to test. See issue #62 * Fixed: UART Simulation error V4390. #84 * Fixed: MASTER RELAY simulation bug. #83 * Updated: MASTER RELAY state colors in simulation mode. * Fixed: When minimizing LDmicro, it always hides the IoList window. * Wiki: OPEN CIRCUIT, SHORT CIRCUIT https://github.com/LDmicro/LDmicro/wiki/OPEN-CIRCUIT,-SHORT-CIRCUIT * Fixed: Is it correct return? #55 Yes. * Test: Unclosed Rung. See issue #56. Experimental release attached at page https://github.com/LDmicro/LDmicro/issues/56 == Release 4.3.9.1 * Wiki: MAKE PERSISTENT operation https://github.com/LDmicro/LDmicro/wiki/MAKE-PERSISTENT-operation == Release 4.3.9.0 * New: Bitwise variable operations (Unsigned) AND, OR, XOR, NOT, SHL, SHR, etc. * Updated: Arduino pin name added in I/O pin assign dialog. More easy to use the Arduino board with it's pin name. * Updated: flashMcu.bat You can flash the Arduino board from LDmicro by using the bootloader of the Arduino, you don't need any hardware, only the USB cable, and the COM port of the Arduino (if the driver of the Arduino is installed). Thanks to Gerard Jacquemin. == Release 4.3.8.7 * Fixed: Can't assign PWM pin because of empty PWM pins list #73 * Fixed: When compiling ansic for arduino using REGISTER mcu, generated code includes "#", arduino does not compile (#72) * Added: For PIC16F886, PIC16F887 enabled pins: RE3(Input Only), RA7 (I/O when internal oscillator used), RA6 (I/O when internal oscillator used). == Release 4.3.8.6 * Fixed: Transliterate for non RU (#69). Fixes strange ANSIC output. * Fixed: pic10f200 pin number (#70) * Added: MOD (Integer Divide Remainder) operattion. * Wiki: PLC and safety https://github.com/LDmicro/LDmicro/wiki/PLC-and-safety == Release 4.3.8.5 * Fixed: PIC10F200 compile, issue #65 * Fixed: PWM no longer possible on 16F628a, issue #61 (FAIL:Fixed in 4.3.8.7 #73) == Release 4.3.8.4 * Fixed: fix "Compile As" endless dialog show #60 * Fixed: COMPILE AS does not work #59 == Release 4.3.8.3 * Fixed: LDmicro goes into an endless loop if you try to display the dialog to set the DELAY delay when the mcu is not set to either AVR or PIC (#53) * Fixed: "Compile ANSIC" always generates a delay of 0 us no matter what delay value has been set for the DELAY instruction (#54) * Fixed: Some ArduinoPinName for ATmega2560 == Release 4.3.8.2 * Hotfix: "Compile ANSIC" fails and LDmico exits with error dialogs when the CLRWDT instruction is used #49 == Release 4.3.8.1 * Fixed: persist not execute #34 INT_EEPROM_READ in AVR https://github.com/LDmicro/LDmicro/issues/34 == Release 4.3.8 * Fixed: CTC counter set a size of var. * Fixed: ADC pin mapping for Arduino in ladder_.h. * Updated: SetBit, ClearBit, IfBitSet, IfBitClear. var must be a variable, not a literal value. The size of var must be from 1 to 4 bytes. bit can be a literal number or a variable. bit can have a value of 0-7 if sizeof(var) == 1 byte, 0-15 if sizeof(var) == 2 bytes, 0-23 if sizeof(var) == 3 bytes, 0-31 if sizeof(var) == 4 bytes. https://github.com/LDmicro/LDmicro/wiki/SetBit,-ClearBit,-IfBitSet,-IfBitClear-in-variable * Updated: Spanish locale. Thanks, Toni Tin. * Wiki: SPI: Serial Peripheral Interface https://github.com/LDmicro/LDmicro/wiki/SPI:-Serial-Peripheral-Interface * Wiki: Copy, paste, cut, etc https://github.com/LDmicro/LDmicro/wiki/Copy,-paste,-cut,-etc == Release 4.3.7 * Fixed: Atmega2560 pins name and Arduino Mega 2560 pins name. * Fixed: Atmega2560 9/10-bit PWM. * Fixed: ATmega328 9/10-bit PWM. * Fixed: ATmega8 9/10-bit PWM. * Fixed: PIC 9/10bits PWM LSBs. * Fixed: READ_ADC in Arduino Sketch. * Updated: ADC simulation. * Updated: LDSTUB to LDSTUB0 and LDSTUB1 in ANSIC. #define USE_WDT in ANSIC. * Updated: The DELAY(us) element, the variable duration is implemented. * New: TIME2DELAY(us)operation converts the time interval to the internal representation of the variable DELAY(). * Wiki: DELAY(us) with variable duration https://github.com/LDmicro/LDmicro/wiki/DELAY(us)-with-variable-duration * New: SetBit, ClearBit, IfBitSet, IfBitClear is implemented. To PIC's controllers used BCF, BSF, BTFSC, BTFSS instruction. To AVR's controllers used SBR, CBR, SBRC, SBRS, SBIC, SBIS instruction. * Wiki: SetBit, ClearBit, IfBitSet, IfBitClear in variable https://github.com/LDmicro/LDmicro/wiki/SetBit,-ClearBit,-IfBitSet,-IfBitClear-in-variable * Added: clear.bat to delete LDmicro output temp files. == Release 4.3.6 * Fixed: "Compile ANSIC" DO_LDSTUBS. * Fixed: PWM simulation. * New: Higher PWM resolution available for: All AVR, all PWM timers 0-256 (8 bits); ATmega2560(timers 1,3,4 based PWM) 0-100%,256,512,1024; ATmega16(timer 1 based PWM); ATmega32(timer 1 based PWM); ATmega328(timer 1 based PWM); * Updated: Pin mapping for Arduino UNO and Aduino Mega 2560 in ladder.h. * Updated: Timer adjust is applied. Total timer delay (ms) = Delay (ms) + Adjust * PLC cycle time (ms). Timer adjust =-1 is equal to the v2.3 timer. TON, TOF, etc. in v2.3 and v3.5.3 and later https://github.com/LDmicro/LDmicro/wiki/TON,-TOF,--etc.-in-v2.3-and-v3.5.3-and-later * Wiki: SG90 Servo PWM https://github.com/LDmicro/LDmicro/wiki/Servo-PWM == Release 4.3.5 * Fixed: "Compile ANSIC" crashes, if selected (no microcontroller). * New: Higher PWM resolution available: 0-100% (maximum resolution 6.7 bits) 0-256 (maximum resolution 8 bits) 0-512 (maximum resolution 9 bits) 0-1024 (maximum resolution 10 bits) LDmicro automatically scales the duty cycle variable from percent(or binary value) to PWM clock periods. == Release 4.3.4 * HotFix: Look Up Table * Wiki: HOW TO: Look Up Table, UART SEND See https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Look-Up-Table,-UART-SEND * Fixed: The yPlcCycleDuty option is not reset when you start a new program. http://cq.cx/ladder-forum.pl?action=viewthread&parent=6806 * Fixed: No C code is generated for setting and unsetting the YPlcCycleDuty pin each cycle. http://cq.cx/ladder-forum.pl?action=viewthread&parent=6805 * New: Available features "Compile HEX->ASM" "Compile Sketch for ARDUINO" "Compile AVR-GCC, Atmel AVR Toolchain, WinAVR C" "Compile CodeVisionAVR C" "Compile HEX->ASM" "Compile HI-TECH C for PIC" "Compile CCS C for PIC" See http://cq.cx/ladder-forum.pl?action=viewthread&parent=6731&tt=1514541894 * Wiki: Stopwatch1 over UART, part 2 See https://github.com/LDmicro/LDmicro/wiki/Stopwatch1-over-UART,---part-2 * Wiki: Stopwatch1 over UART; part 3 See https://github.com/LDmicro/LDmicro/wiki/Stopwatch1-over-UART;-part-3 * Fixed: Compiling Interpretable Extended Byte Code fails with the error "Unsupported op" See http://cq.cx/ladder-forum.pl?action=viewthread&parent=6791&tt=1514468902 * Note: You can change size of variable by double-clicking the variable name in the list at the bottom of the screen. == Release 4.3.3 * New: Element OSL: ONE-SHOT LOW LEVEL is inversion of element OSR: ONE-SHOT RISING, * New: Element THI: TIMER HIGH * New: Element TLO: TIMER LOW See https://github.com/LDmicro/LDmicro/wiki/TON,-TOF,-etc. == Release 4.3.2 * HotFix review: Fault in arithmetic or compare operations. See http://cq.cx/ladder-forum.pl?action=viewthread&parent=6457 == Release 4.3.1 * HotFix: Restored RESET the TON, TOF timers. * HotFix: After simulate, when simulate another program, UART simulation terminal shows up again and can't close it unless close the program. * HotFix: Fault in arithmetic or compare operations. http://cq.cx/ladder-forum.pl?action=viewthread&parent=6457 == Release 4.3.0 * Add: Microchip PIC10F200 6-SOT target. * New: Variables can allocate 1,2,3 or 4 bytes. You can change size of variable by double-clicking the variable name in the list at the bottom of the screen. Variables are stored and processed in the two's complement form. See https://en.wikipedia.org/wiki/Two%27s_complement Bytes Types Range from to 1 signed int8 -2^7 = -128=0x80 2^7 -1= 127=0x7f 2 signed int16 -2^15= -32768=0x8000 2^15-1= 32767=0x7fff 3 signed int24 -2^23= -8388608=0x800000 2^23-1= 8388607=0x7fFFFF 4 signed int32 -2^31=-2147483647=0x80000000 2^31-1=2147483647=0x7fffFFFF The decimal zero value (0) is represented as all zeros bits 00...000 The decimal value (-1) represented as all 11...111 Signed int8 variables are used for make the hex file smaller and faster. Signed int24 and int32 types are used to upsize range of variables. Sign extension for variables of different sizes are provided automatically. Note: MUL, DIV, MOD instructions can't processed int32 variables. The arithmetic Overflow(underflow) flag is provided as internal relay ROverflowFlagV. https://en.wikipedia.org/wiki/Overflow_flag https://www.allaboutcircuits.com/textbook/digital/chpt-2/binary-overflow/ The Overflow flag indicates that the signed two's-complement result would not fit in the number of bits used for the operation, and signals an error. For example, if variable int8 dest = 127(0x7f) add 1, we get -128(0x80), and Overflow flag ROverflowFlagV will be set to 1. Instead if variable int16 dest = 127(0x007f) add 1, we get 128(0x0080), and Overflow flag ROverflowFlagV is not affected. LDmicro resets the ROverflowFlagV to zero during initialization. Note: CTC generate overfill(carry) impulse when Counter==Max. CTR generate overfill(borrow) impulse when Counter==Min. Overfill do not set the Overflow flag. The Overlap flag is provided as the output state of ADD, SUB operations. The Overlap flag indicates that sign of result has been changed. For example, Overlap occured when -1(0xf..f) add 1(or sub -1), we get 0(0x0..0), all ones 1 are changed to all zeros 0. Also, Overlap occured when 0(0x0..0) sub 1(or add -1), we get -1(0xf..f), all zeros 0 are changed to all ones 1. For example, Overlap occured when -10 add 15(or sub -15), we get 5, negative source are changed to positive result. Also, Overlap occured when 10 sub 15(or add -15), we get -5, positive source are changed to negative result. * New: RETENTIVE TIMER LOW oparation. RTL works like RTO, but catch low level input. * New: BITWISE SWAP oparation. This operation swaps the nibbles and the bytes inside the variable. * New: BITWISE OPPOSITE oparation. This operation reverses the bits sequence to the opposite inside the variable. The MSB moves to the LSB, and the LSB moves to the MSB and etc. See manual.txt for all new oparation. ! Attention: ! You can add, edit, save, load, simulate this elements marked 'SIMUL:' in menu. ! No compile code at output. * DowngradeFix: Restored COMMENT element accoding to Release 2.3 == Release 4.2.3 * HotFix: Move Selected Rung Up/Down with COMMENT http://cq.cx/ladder-forum.pl?action=viewthread&parent=6321&tt=1495630635 * Fixed: PIC16F88 PIN IO names. CCP1 function on RB3. * Fixed: PIC MCU's EEPROM write. * Fixed: PIC ANSI C UART functions. == Release 4.2.2 * HotFix: Addressing error when writing the PIC CONFIGURATION WORD's to the .hex file. http://cq.cx/ladder-forum.pl?action=viewthread&parent=6371&tt=1497477735 * HotFix: AVR RJMP, RCALL https://github.com/LDmicro/LDmicro/issues/29 * Reengineering: PLC cycle timer more accurate and more longer. * Fixed: The character '-' is replaced by the character '_' in the variable names. * Fixed: TON, TOF, TCY names will be checked more strictly. http://cq.cx/ladder-forum.pl?action=viewthread&parent=6321&tt=1495630635 * Added: White color scheme Mark http://cq.cx/ladder-forum.pl?action=viewthread&parent=6257&tt=1496129518 * Wiki: How to count the resets áaused by WDT (Atmel AVR) https://github.com/LDmicro/LDmicro/wiki/How-to-count-the-resets-caused-by-WDT * Wiki: MASTER CONTROL RELAY https://github.com/LDmicro/LDmicro/wiki/MASTER-CONTROL-RELAY == Release 4.2.1 * Fixed: The 'Help' and 'About' dialog boxes are displayed in the selected Color scheme. * Fixed: Simulation of the GOTO and GOSUB instructions. * Fixed: Pull-Up resistors in ATmega MCU and ANSIC code. * Wiki: SUBPROG, RETURN, ENDSUB and GOSUB, LABEL and GOTO instruction. Part 2 https://github.com/LDmicro/LDmicro/wiki/SUBPROG,-RETURN,-ENDSUB-and-GOSUB,-LABEL-and-GOTO-instruction.-Part-2 SUBPROG, RETURN, ENDSUB and GOSUB, LABEL and GOTO instruction. Part 3 https://github.com/LDmicro/LDmicro/wiki/SUBPROG,-RETURN,-ENDSUB-and-GOSUB,-LABEL-and-GOTO-instruction.-Part-3 == Release 4.2.0 * Fixed: PIC Configuration Bits hexadecimals. * New: Element TIME to COUNTER converter https://github.com/LDmicro/LDmicro/wiki/TIME-to-COUNTER-converter * New: Element DELAY us https://github.com/LDmicro/LDmicro/wiki/DELAY-us * New: PLC Cycle Time 0 https://github.com/LDmicro/LDmicro/wiki/PLC-Cycle-Time-0 * New: LABEL and GOTO instruction https://github.com/LDmicro/LDmicro/wiki/GOTO-instruction * New: SUBPROG, RETURN, ENDSUB and GOSUB instruction https://github.com/LDmicro/LDmicro/wiki/SUBPROG,-ENDSUB-and-GOSUB-instruction * Add: Menu->Config->Select color scheme->Select user colors * Wiki: LDmicro color schemes See https://github.com/LDmicro/LDmicro/wiki/LDmicro-color-schemes * Wiki: HOW TO: The AND, OR, XOR logic operations on CONTACTs inputs See https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-The-AND,-OR,-XOR-logic-operations-on-CONTACTs-inputs * Spanish manual-es.txt added. Thanks Jose Manuel Ruiz Gutierrez. == Release 4.1.8 * Fixed: LOOK-UP TABLE error in Windows 7 64bit. * Fixed: LOOK-UP TABLE index out of range message in simulation. * Fixed: MPASM Intel HEX file format used for PIC MCU. * Spanish translation updated. Thanks Jose Manuel Ruiz Gutierrez. == Release 4.1.7 * New: The pseudo-random number generator RAND implemented. RAND element based on linear congruential generator (LCG). See https://en.m.wikipedia.org/wiki/Linear_congruential_generator The generator is defined by the recurrence relation: X[n+1] = (a * X[n] + c) mod m Used constants from the VMS's MTH$RANDOM, old versions of glibc a = 69069 ( 0x10DCD ) c = 1 m = 2^32 X = (X * 0x10DCD + 1) % 0x100000000 RAND return the most significant bytes of X. * New: RANDS element set seed of RAND. X[n] := newSeed. Press F1 in LDmicro to see the manul.txt. * New: UART SENDn element send full size varible via USART in raw binary format. One byte sends per cycle of PLC, like 'FORMATTED STR OVER UART' element. * Wiki: LDmicro RANDOM https://github.com/LDmicro/LDmicro/wiki/LDmicro-RANDOM == Release 4.1.6 * New: 'PIC Configuration Bits:' textbox added in 'PLC Configurations' dialog. See PIC Configuration Bits wiki https://github.com/LDmicro/LDmicro/wiki/PIC-Configuration-Bits This allow to select internal oscillator, use oscillator pins as I/O pins, configure _MCLR pin as digital I/O, enable watchdog timer WDT, select code protection, data protection, etc. Variable name that begins with symbol '#' like #0x8E, #0x8F, allow users to dynamically toggle the oscillator speed, determine the cause of the processor reset, etc. Be careful with the Code/Data Protection bits! == Release 4.1.5 The functionality of this release was developed as a result of discussion on the page http://cq.cx/ladder-forum.pl?action=viewthread&parent=6006 and gives ability to use the watchdog timer (WDT) on PIC and AVR. See https://en.wikipedia.org/wiki/Watchdog_timer There is some difference of WDT in PIC and AVR with respect to LDmicro. LDmicro not sets fuses in HEX file for AVR. Remember to set the AVR processor configuration (fuses) correctly using your programmer (eg. AVRISP) and software (eg. AVRDUDE). You can manipulate WTDON to enable/disable watchdog timer. See http://www.engbedded.com/fusecalc LDmicro sets CONFIGURATION WORD REGISTERS (CONFIG, CONFIG1, CONFIG2) in HEX file for PIC. WDT is disabled by default. CONFIG bit WDTE: Watchdog Timer Enable bit is setted to 0 = WDT is disabled. But you can enable it with your programmer(eg. PICKIT, USBPICPROG). Also you can enable it inside LDmicro in 'PLC Configurations' dialog using 'WDT enable' checkbox (has sense for PIC). vvv Obsolete!!! See Release 4.1.6 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv v * New: 'WDT enable' checkbox added in 'PLC Configurations' dialog. v ^ Please use 'PIC Configuration Bits:' textbox. ^ ^^^ Obsolete!!! See Release 4.1.6 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ALL versions of LDmicro executes CLRWDT command "Watchdog reset" every PLC cycle (at begin of the cycle) regardless WDT enabled or disabled. If WDT enabled, the WDT has a nominal time-out period of 16.3 - 18 ms (with no prescaler) or more. So, if you need PLC cycle period more then WDT period you must use CLRWDT command inside PLC cycle. * New: CLRWDT element to clear WDT timer implemented. * New: LOCK element is implemented. LOCK command is an artificial situation to provocation the WDT reset (if WDT enabled). LOCK command designed as infinite loop. It is deadlock, way to freeze, blockade the program. LOCK command executes goto to the current address, i.e. labelN: goto labelN (label02e7: rjmp label02e7), i.e. infinite loop. LOCK command executes the infinite loop, but WDT can reset the MCU. Only WDT or external reset can unfreeze the program after LOCK command. * Updated: SLEEP operation works at all MCU. The SLEEP (Power-down) mode is used for power saving on battery supply. PIC: Wake-up from sleep owing to external interrupt on rising edge of RB0/INT pin. PIC10xxxx: Wake-up from sleep on pin change GP0, GP1, GP3. AVR: Wake-up from sleep owing to external interrupt on rising edge of PD2/INT0, PD3/INT1 pins. SLEEP operation don't affect MCU IO pins and others LDmicro operations. Note: SLEEP lengthens the PLC cycle time and timers TON, TOF, RTO, CTY. This can frustrate the plans, break the flow of work. * New: In addition to variable name that begins with symbol '#' like #PINA, #PINB, ... treated as 8bit (byte) input port, #PORTA, #PORTB, ... treated as 8bit (byte) output port, #TRISA, #TRISB, ... treated as 8bit (byte) data direction register of corresponding port, added immediate address hardware registers access #0x8E, #5, ... treated as 8bit the (byte) hardware register with this address. Be careful with writing to the hardware registers. See how to use PCON register (address 0x8E) to determine the cause of the PIC16F628 reset in the next wiki link. * Wiki: Addition 3. WDT, LOCK, SLEEP operation is tested at PIC16F628. https://github.com/LDmicro/LDmicro/wiki/SLEEP-example == Release 4.1.4 * HotFix: Fixed 32K words (64K bytes) 50% flash program memory limit of the hex file. Affected ATmega128, ATmega2560, AT90USB647. Don't use this release for PIC. == Release 4.1.3 * Fixed: AVR IfBitClear(SBIS) when IO REGISTERS used. This error is critical, but is rare. * Done: ATmega32U4, PIC16f72 can be added to LDmicro by your request. * Wiki: See ATmega32U4 test at page https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-AVR-Studio-or-PIC-MPLAB-software * Wiki: See ATmega32U4 PWM's test based on Timer0,Timer1 and Timer3 at page https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Two-three-phase-sine-wave-based-on-the-hardware-PWM * Wiki: See ATmega32U4 SLEEP operation at page https://github.com/LDmicro/LDmicro/wiki/SLEEP-example * Wiki: HOW TO: Soft start and smooth stop of LED with hardware PWM https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Soft-start-and-smooth-stop-of-LED-with-hardware-PWM == Release 4.1.2 * Changed: COIL, CONTACT draw in simulation mode. https://github.com/LDmicro/LDmicro/wiki/CONTACTS-and-COILS * Updated: SET PWM Timer1 at PIC's. PIC16F628, PIC16F88, PIC16F819. * Updated: SLEEP at PIC's. * Fixed: Messages in LOOK-UP TABLE. == Release 4.1.1 * Fixed: SET PWM Timer1 at PIC. When two CCP modules are in a PWM mode, Timer2 is the time-base for both PWM1 and PWM2 outputs. You must use the same base PWM frequency for both SET PWM DUTY CYCLE elements. * Fixed: SET PWM at AVR. * New: RESET PWM element. This instruction disable PWM output and set it to low level. Also you can set another PWM base frequency by SET PWM DUTY CYCLE after actuation the RESET PWM. https://github.com/LDmicro/LDmicro/wiki/RESET-PWM https://github.com/LDmicro/LDmicro/wiki/LDmicro-PWM * New: SLEEP operation is implemented for PIC. Tested only with PIC16F877 in Proteus!!! Wake-up owing to external interrupt on rising edge of RB0/INT pin. SLEEP operation don't affect MCU IO pins and others LDmicro operations. * Wiki: Pull-up resistors https://github.com/LDmicro/LDmicro/wiki/Pull-up-resistors == Release 4.1.0 * New: SLEEP operation is implemented as Power-down Sleep Mode for ATmega48, ATmega88, ATmega168, ATmega328. Wake-up owing to external interrupt on rising edge of PD2/INT0, PD3/INT1 pins. SLEEP operation don't affect MCU IO pins and others LDmicro operations. SLEEP example https://github.com/LDmicro/LDmicro/wiki/SLEEP-example == Release 4.0.C * Fixed: Make persistent in ATmega164, ATmega324, ATmega644, ATmega1284, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287. * Fixed: Double quotes around the paths and file names given to the xxx.bat files. * Fixed: AUTO_PAGING version 4.2 for PIC's. * TABLE_IN_FLASH implemented for "LOOK-UP TABLE" and "PIECEWISE LINEAR TABLE". Intermediate code for look-up tables is changed, the data stored in flash as table. HEX size redused 50%. == Release 4.0.B * Added: PWM CCP1 on Timer1 module for PIC16F877, PIC16F887. * Added: Menu->File->Save LDmicro0.1 file format v2.3 compatible ->Save LDmicro0.2 file format LDmicro saves new LD files in LDmicro0.2 file format. LDmicro does not change the format of the previously created LD files. You can convert file format with this menu. * Fixed: MASTER CONTROL RELAY SAMPLE\MasterRelay-Test.ld added. * Fixed: "Save as.." cyclic bug. == Release 4.0.A * Fixed: EEPROM reading 'Empty variable name' message. * Fixed: Messagae "RAM: Out of memory; ...") for non hardware MCU. * New: Variable name that begins with symbol '#' like #TRISA, #TRISB, #TRISC, ... treated as data direction register of corresponding ports #PORTA, #PORTB, #PORTC, ... Operation -{ MOV #TRISA, dest }- writes 8-bit value from the variable 'dest' to the direction register of PORTA. Setting a TRISx bit (= 1) will make the corresponding PORTx pin an input (i.e., put the corresponding output driver in a Hi-Impedance mode). Clearing a TRISx bit (= 0) will make the corresponding PORTx pin an output (i.e., put the contents of the output latch on the selected pin). Value of TRISx registers on MCU after RESET usually is 0b11111111(0xFF). * HOW TO: Stopwatch4 over serial 7 segment LED displays https://github.com/LDmicro/LDmicro/wiki/Stopwatch4-over-serial-7-segment-LED-displays == Release 4.0.9 * Fixed: AUTO_PAGING version 4.1 for PIC's. * Fixed: HEX is not created if a compilation error occurs. * HOW TO: Two three phase sine wave based on the hardware PWM https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Two-three-phase-sine-wave-based-on-the-hardware-PWM * HOW TO: RF (315MHz, 418MHz, 433MHz, 915MHz) modules with PIC's and AVR's https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-RF-(315MHz,-418MHz,-433MHz,-915MHz)-modules-with-PIC's-and-AVR's * New: Added elements UART SEND: Is ready ? Output is 1 when transmit buffer is empty and ready to loading new data. UART RECV: Is avail ? Output is 1 when there are unread data in the receive buffer. 0009|| ; Rung 10 and 11 are equivalent. || || || || Is ready? char || 0010||---[UART SEND]------{UART SEND}--- || || || || Rbusy char Rbusy || 0011||-------]/[----------{UART SEND}-------------------------( )-------|| || || == Release 4.0.7 * HotFix: Bug in releases 4.0.5 - 4.0.6 with AVR ports ottputs. * Added: Atmega2560 can genarate 12 hardware PWM's. == Release 4.0.6 * Fixed: "Save as.." cyclic bug. * Fixed: Restored behavior: to get ADC slider double-click in IO list in Simulation mode. Also ADC slider by double-clicking on the item "READ ADC" in LD editing window in Simulation mode. Right mouse button closes the ADC slider. == Release 4.0.5 * Fixed: Bug with J,K,L ports addreses at ATMega2560. Bug with addreses of ADC at ATMega2560. Tested in Proteus. asm_demo_mega2560.zip contains LD, asm, hex, Proteus7 model. See end of the page: https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-AVR-Studio-or-PIC-MPLAB-software * Added menu and shortcats: "Insert Contacts: Internal Relay Shift+C" "Insert Contacts: Output pin Shift+L" "Insert Coil: Internal Relay Alt+L" * Added in manual.txt: Note: The several coils with the same 'YName' or 'RName' can be mentally represented as a one microchip with multiple inputs and one output. Normal and inverted input are directly transfers the input state (normal or inverted) to the output. R, S, T inputs lock up (latch) the state of output. The T input is positive edge triggered. R, S inputs are level sensitive. If before R, S insert the "OSR: ONE-SHOT RISING" or "OSF: ONE-SHOT FALLING" you get a "positive edge triggered" element. If used only the R and S inputs you get classic RS-trigger, that may be with more than two inputs. If add T input you get "newest" RST-trigger. May be several R..R inputs, or several S..S inputs. You can use any combination of inputs for one 'YName' or 'RName' coil. See also COIL, T-TRIGGER in Release 4.0.3. == Release 4.0.4 * HotFix: Fixed initialization error of all used banks of PIC's RAM from 4.0.1 version. Not recomended to use with PIC's MCU releases 4.0.1 - 4.0.3. == Release 4.0.3 * Fixed: The page correction error while the correction is crosses boundary page. AUTO_PAGING version 4 for PIC's. * Modified: You can set X input contacts to the HI level before simulating, if in your real hardware device the initial state of X input contacts in HI level. In release 3.5.0 for this feature used symbol '_' after X in contact name. Now for this feature you can use checkbox "Set HI input level before simulation" in contacts dialog. This feature applies only in simulation mode, and does not affect hex file in physical device. This feature refers to MCU inputs, not to the external switches(devices/sources). This feature not refers to negation or normal open NO or normal closed NC contacts of switches. Now you can use symbol '_' in the name to see it better (X_in). * Modified: When selected mode is ("Simulation Mode"), and user presses once the Spase key ("Single Cycle"), or hold down pressed the Spase key("Single Cycle" ), then ladder diagram executes one cycle (or repeatedly) and displayed correctly. When then select "Start Real-Time Simulation" the ladder diagram is in work, but can displayed in the one same condition. This happens only when the cycle time is less than 10 ms and 10 ms, divided by the cycle time gives an even number, and also 10 ms, divided by the timer time gives an even number. There are two causes for this strange behavior. 1) The LDmicro frame rate in "Real-Time Simulation" mode is 10 ms (100 Hz). I.e. the ladder diagram state is displayed every 10 ms, but not the every one cycle. If every 10 ms LD state is the same, then user sees the same picture on the display. Although LD state chenged inside 10 ms over and over again and go back to the same state. 2) I tried to show LD state at a random time within the 10 ms frame. But WINAPI InvalidateRect() function works when there are no other messages in the application queue for that window. And the screen is redrawn also through an even number of times and showing the same picture (LD state). Now LDmicro used UpdateWindow() at a random time within the 10 ms frame. UpdateWindow() function works without a queue and shows different states of LD on the screen and picture is not "latched". Note: The screen refreshes randomly LD state inside 10 ms frame in "Real-Time Simulation" mode. * Fixed: RETURN error in MUL,DIV elements in PIC10xxx, PIC12xx microcontroller family. * Added element COIL, T-TRIGGER. Added in manual.txt: Terminology: "Level sensitive" = output(element) controlled by the level of the input. "Edge triggered" = output changes only at the point in time when the input changes from value to the other. Can be positive edge-triggered (0 to 1), or negative edge-triggered (1 to 0). Most elements of LDmicro are "Level sensitive", some elements are "positive edge-triggered". > COIL, T-TRIGGER Rname Yname ----(T)---- ----(T)---- A coil T-trigger is edge-triggered flip-flop (toggle, tip-over, turn over). A coil flip-flop every rising edge of the input condition (i.e. what the input condition goes from false to true). If rising edge detected, then if coil state is false it is sets true. If next rising edge detected then if coil state is true it is sets to false. This instruction must be the rightmost instruction in its rung. You can simply present as a T-trigger with the positive edge-triggered input. * Added: MessageBox("Rename the ALL other 'N' contacts/coils named 'Name' to 'NewName' ?") after editing the contacts/coils name. * Added: Menu Edit->Cut Selected Element (Alt+Del). Then use menu Edit->Paste Rungs or Element &Into Rung (Alt+Insert) to insert element in new position. * Added: Menu Edit->Replace Selected Element in Group. For example: CTU->CTD->CTC->CTR->... == Release 4.0.2 experimental * Fixed: LDmicro Forum - hex file error http://cq.cx/ladder-forum.pl?action=viewthread&parent=5008 LDmicro Forum - 4.01 hex problem http://cq.cx/ladder-forum.pl?action=viewthread&parent=5410 AUTO_BANKING and AUTO_PAGING version 3 for PIC's. * New: It is possible to add PIC10Fxxx - PIC12Fxxx family microcontrollers in LDmicro. == Release 4.0.1 experimental * Fixed: All banks of RAM can be used. Added message about the amount of RAM used. == Release 4.0.0 experimental * Fixed: CTD down counter in releases from v3.5.2 to v3.5.4 has critical decrement error. INT_DECREMENT_VARIABLE in PIC's MCU has a bug. Note: For BORROW flag, the polarity is reversed a CARRY-OUT flag. A subtraction is executed by adding the two's complement of the second operand. * Fixed: Fragment from forum: ... I loaded the 'hello.ld' and started simulation, then the 'H' of the 1st 'Hello' is dropped... ... Yes, first symbol dropped in UART simulation window. In hardware will be full text. Now all text printed in UART simulation window. SAMPLE\hello.ld added. * New: Variable name that begins with symbol '#' like #PINA, #PINB, #PINC, ... treated as input port. Operation -{ MOV dest, #PINA }- directly assigns 8-bit value from the hardware pins of the port A to the variable 'dest'. Variable name that begins with symbol '#' like #PORTA, #PORTB, #PORTC, ... now treated as output port. Operation -{ MOV #PORTA, src }- writes 8-bit value from the variable 'src' directly to the hardware pins of port A. Note: The output mode pins of the port is not set automatically. You must set it with operations COIL(YPA0..7) or with operations -{ MOV #TRISA, 0xFF }- . * Added: Bitwise operation: AND, OR, XOR, NOT. Please read http://en.wikipedia.org/wiki/Bitwise_operation Arithmetic shift: SHL, SHR. https://en.wikipedia.org/wiki/Arithmetic_shift Logical shift to right SR0. https://en.wikipedia.org/wiki/Logical_shift Logical shift to left is equivalent to SHL arithmetic shift to left. Circular shift: ROL, ROR. https://en.wikipedia.org/wiki/Circular_shift Bitwise swap nibbles in a byte SWAP. -{SWAP b, a}- If 'a' is 0xA5, then 'b' will be 0x5A. https://en.wikipedia.org/wiki/Nibble * Added: Operations with one bit: SetBit - set bit ClrBit - clear bit -{SetBit var, bit}- In variable 'var' set bit number 'bit'. 'Bit' means number of bit, not bit mask. For example, to set bit number 4 in variable 'var' v Bit numbers: 76543210 'var' : xxx1xxxx ^ you must write ^ -{SetBit var, 4}- not -{SetBit var, 0x10}- * Added: IfBitSet - If bit set IfBitClr - If bit clear If the input to this instruction is false then the output is false. If the input is true then the output is true if and only if the given condition is true. This instruction can be used to check the state only one bit of the variable. 'Bit' means number of bit, not bit mask. Operation -{IfBitSet var, 0}- is equivalent condition 'If var is odd'. Operation -{IfBitClr var, 0}- is equivalent condition 'If var is an even'. * Added: LED segments displays: 7SEG, 9SEG, 14SEG, 16SEG. https://en.wikipedia.org/wiki/Seven-segment_display https://en.wikipedia.org/wiki/Nine-segment_display https://en.wikipedia.org/wiki/Fourteen-segment_display https://en.wikipedia.org/wiki/Sixteen-segment_display 7 segments display a -- f| |b | g | -- e| |c | | -- . d DP SEGMENT DP g f e d c b a BIT 7 6 5 4 3 2 1 0 7SEG associate bit0 to pin A, bit1 to pin B, bit2 to pin C, bit3 to pin B, bit4 to pin D, bit5 to pin E, bit6 to pin F, bit7 to pin DP. * Added: Bitwise sofrware bus tracer: BUS. BUS is not a vehicle. BUS means bus conductors on the printed circuit board. When you trace route output pins from the MCU port to 7 segment LED display, you can connect any pin of port to any pin of LED display as you comfortable. Then you must set sofrware mapping transformation for bits. For example SEGMENT DP g f e d c b a BIT 7 6 4 5 3 2 0 1 if b<->a and f<->e. * Added: BIN2BCD, BCD2BIN packed operations. https://en.wikipedia.org/wiki/Binary-coded_decimal * Added: Negative NEG, signed variable a = -a. Negative -{NEG a}- is the optimized equivalent to -{SUB a:= 0 - a}- ! Attention: ! You can only add, edit, save, load this elements marked 'EDIT:' in menu. ! No simulation. No compile code at output. * Added: SAMPLE\swatch2.ld - Stopwatch2 with 7 segments LED displays. https://github.com/LDmicro/LDmicro/wiki/Stopwatch2-with-7-segments-LED-displays * Added: SAMPLE\7Segments.ttf. Install 7Segments.ttf in Windows\Fonts and view 7Segments.doc. * Added: SAMPLE\swatch1.ld - Stopwatch1 over UART. https://github.com/LDmicro/LDmicro/wiki/Stopwatch1-over-UART == Release 3.5.4 experimental * Highlight rungs number. * Added menu Select Rungs. * Allow constant value from 0x0000 to 0xFFFF in hexadecimal. == Release 3.5.3 experimental * Remuved lines between rungs. It fix troubles to set the cursor in the instruction with mouse. If you need a delimiter between rungs, you can use an empty comment. * Fixed: Attention! TON, TOF, RTO timers in LDmicro v2.3 are shorter than those specified in the LD file. They shorter at one PLC cycle time. If PLC cycle time is 20 ms and contact bounce about 20 ms you can project schema like this. With anti contact bounce 40 ms. But in fact it was 20 ms. || || || Xstart Tanti_bounce1 _ _ Rwork || ||-------] [---------[TON 40 ms]------[_/ OSR/ \_]--------(S)-------|| || || || Xstop Tanti_bounce2 _ _ Rwork || ||-------]/[---------[TOF 40 ms]------[ \_OSF/ \_]--------(R)-------|| || || Now TON, TOF, RTO produce delays as specified in LD file. In this case it 40 ms. * Added: Specially for generating cyclic signals with a predetermined period and frequency added Cyclic Timer TCY. || || || Rwork Tmeandr Ymeander || ||-------] [---------[TCY 50 ms]---+----------------------( )-------|| || | || || | _ _ Yr_pulse || || +--[_/ OSR/ \_]--------( )-------|| || | || || | _ _ Yf_pulse || || +--[ \_OSF/ \_]--------( )-------|| || || If input signal is true, TCY produce meander with period 100 ms and frequency 10 Hz. If the signal going into the instruction is false, then the output signal is false. Yr_pulse - is pulse at rising edge of meander. Yf_pulse - is pulse at falling edge of meander. Frequency is 10 Hz. Width of pulse is a PLC cycle time. * PIC optimization. WriteRegister(reg, 0) replaced CLRF, reg. == Release 3.5.2 experimental * Fixed: Some user interface bug. * Added: INT_DECREMENT_VARIABLE internal oparation. == Release 3.5.1 experimental * Fixed: Timer0 as PLC cycle in AVR's corrected. * Fixed: If try to change settings for MCU-Parameters, the 'ldmicro-de.exe' gets busy forever and eats up windows memory. * Added: CTR reversive counter added. It like CTC but with decrement counting inside. Added 'Init' value in CTU,CTD,CTC,CTR counters. CTU,CTC counter start from 'Init' and count up to 'Max' value. CTC generate overfill(carry) impulse when Counter==Max. CTD,CTR counter start from 'Init' and count down to 'Min' value. CTR generate overfill(borrow) impulse when Counter==Min. * Attention! You may need to correct the previous versions of the program containing CTD counter! For example: Counter:0 1 2 3 4 5 _ _ _ _ _ CTU >= 5 Input: _/ \_/ \_/ \_/ \_/ \ ___ Output: _________________/ The output CTU counter is true if the counter variable is GREATER than 5 or EQUAL to 5, and false otherwise. * Modified: In CTD '>=' condition changed to '>'. Counter:0 -1 -2 -3 -4 -5 _ _ _ _ _ CTD > -5 Input: _/ \_/ \_/ \_/ \_/ \ _________________ Output: \___ The output CTU counter is true if the counter variable is GREATER than 5, and false otherwise. This modification leads to a symmetric switching of outputs when CTU=5 and CTD=-5. See LDmicro\SAMPLE\ctu_ctd_ctc_ctd.ld == Release 3.5.0 experimental pre-release * Fixed: Address of configuration word(s) are checked and corrected on PIC controllers. * Fixed: On PIC microcontrollers there is bit 7 on OPTION_REG named _RBPU: PORTB Pull-up Enable bit or _WPUEN: Weak Pull-up Enable bit. Defaut value is 1 = PORTs pull-ups are disabled. Now bit 7 is cleared and pull-ups are enabled. Attention: Not all PIC's ports have a pull-up resistors. See datasheets of the controller. Use an external resistor, if there is no internal pull-up. * Modified: Frequency of PWM in Element SET PWM was defined as int targetFreq; now redefined as char targetFreq[MAX_NAME_LEN]; Max value in Element COUNTER and CIRCULAR COUNTER was defined as int max; now redefined as char max[MAX_NAME_LEN]; Now you can use variable as argument of a COUNTER or SET PWM. It allow to create more sophisticated algorithms in LD. * You can specify literals as normal decimal numbers (10, 1234, -56). Added: You can specify hexadecimal numbers (0xA, 0x04D2, 0xffc8), octal numbers (0o12, 0o2322, 0o177710), binary numbers (0b1010, 0b10011010010, 0b1111111111001000) in most places that you could use a decimal number. * Added: You can replace LD elements in editor mode by pressing SPACE key. For example OSR->OSF->OSR, TON->TOF->RTO->TON ets. * Added: Copy-Paste Rungs. To select rungs press Shift+Up, Shift+Down, or Ctrl+LeftMouseKey. Then press Ctrl+Insert to write selected rungs into buffer(file ldmicro.tmp). Then in new place press Shift+Insert to insert buffer into LD diagram. For copying only one selected element press Insert, and then Alt+Insert to Pasting element in new place. Selected rungs marks symbol '*' before rungs number. Buffered rungs marks symbol 'R'. Buffered element marks symbol 'L' if leaf end 'E' if ends element. If cursor under the selected element, then buffer will be Pasted below the current rung, otherwise buffer will be Pasted before the current rung. * Added: Open LD file in notepad F4. Its allow you rename variables and contacts in notepad. You must use "replace all" in notepad for renaming. Be careful. Recommended to create reserve copy of LD file before editing. Notepad called over notepad.bat and you can change notepad.bat for calling you favorite editor. * Added: Display scrolling Up/Down/PgUp/PgDown/Home/End. * Modified: Compressed view of LD diagram on display. You can see more in the display without scrolling. ADD, SUB, MUL, DIV redused to one display area on the screen. If variable name more then display area (for example LongNameOfVar), it displayed with symbol '~' as LongNameOf~ and still work. || Xnew {LongNameOf~ :=} || ||-------] [-------{MOV 10}-|| * Reorganized menu. ProcessorMenu2, CmpMenu, SignedMenu added etc. * Added: Used hardware multiplication MUL, MULS, MULSU for AVR's. * Added: Used AUTO_BANKING and AUTO_PAGING for PIC's. Its allows to adding new MCUs more simple. * International System (SI) prefixes used in many places. * In simulation mode You can set inputs to 1 before simulating. vvv Obsolete!!! See Release 4.0.3 vvvvvvvvvvvvvvvvvvvvvvvvvvvv v Use symbol '_' after X in contact name. v v For example: v v Xcontast1 sets to 0 before simulating. (normal open) v ^ Xcontast2 sets to 0 before simulating. (normal open) ^ ^ X_contast3 sets to 1 before simulating. (normal closed) ^ ^ X_contast4 sets to 1 before simulating. (normal closed) ^ ^^^ Obsolete!!! See Release 4.0.3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This feature applies only in simulation mode, and does not affect hex file in physical device. * Added ELEM_OSC oscillator F=1/(2*Tcycle) * Added: In 'PLC Configuration' dialog you can select timer 0 or 1 for generating of PLC cycle. This allow use Timer1 for PWM or other features. * Added: In 'PLC Configurations' dialog added YPlcCycleDuty pin. YPlcCycleDuty pin set to 1 at begin and to 0 at end of PLC cycle. You can measure frequency(it must be 1/Tcycle) and duty cycle of PLC. If your program is too big for the cycle time, then it will work slower than you expected. Communication with the external environment may be destroyed. Cycle time can be unstable. You can monitor stability and duration of cycle time with YPlcCycleDuty pin. Unstable frequency or big duty cycle says about long LD programm and too short PLC cycle. == Release 3.4.0 * Added: This release include fork https://github.com/f1oat/LDmicro. Compressed bytecodes, Controllino Maxi support, MODBUS support. http://cq.cx/ladder-forum.pl?action=viewthread&parent=5007 MODBUS use RTU over TCP. But that should work also in RS485 mode by linking with the proper Arduino library. Announcing LDuino, an Arduino based PLC software compatible with LDmicro http://cq.cx/ladder-forum.pl?action=viewthread&parent=5070 Controllino is here: http://controllino.biz/ This a nice product. Unfortunately the creator got bad reputation on Kickstarter. https://www.kickstarter.com/projects/24519005/controllino-plc-arduino-compatible/description More information you can get from author of Controllino Maxi support in LDmicro: Frederic Rible Attention! Not compatible with LDmicro2.3, if modbus contacts used. == Release 3.3.1 * Fixed: Error message "Couldn't open file ...." in menu "Compile as" == Release 3.3.0 The backward compatibility still saved. * Fixed: PWM for AVR rechecked and corrected. * Fixed: Now is able to send the full range(0x00..0xff) of unsigned char symbol as hexadecimal numbers in 'Formatted String Over UART' element. Release 3.2.1 raise error with formated strings "\0xFF" and "\0xFE". Release 2.3 can raise error with formated strings "\0xFF" and "\0xFE". Release 2.2 can raise error with formated strings "\0x00" and "\0x01". * Added: LDmicro can generate fully functional ASM code for AVR Studio or Microchip MPLAB software. EEPROM, UART, ADC, PWM are supported too. See https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-AVR-Studio-or-PIC-MPLAB-software. == Release 3.2.1 * Fixed simulate.cpp error 307. == Release 3.2.0 The backward compatibility still saved. * AVR MCU list sorted in accordance with the Atmel AVR Instruction set inheritance table. https://en.wikipedia.org/wiki/Atmel_AVR_instruction_set#Instruction_set_inheritance This simplifies of adding AVR MCU. * Added Number of internal pseudocode operations for each rungs of ladder diagram. It is shown below the rung number. Added Number of MCU's oparations for each rungs of ladder diagram. It is shown below the internal operations number. Save as text exports its too. You can optimise your code size and speed. * Added readMcu.bat. You can read MCU memory directly from LDmicro IDE with Ctrl+F6 key. (Now only AVR) * Added flashMcu.bat. You can program (flash) MCU directly from LDmicro IDE with F6 key. menu -> Compile -> Call flashMcu.bat F6 is worked for AVR's MCU via AVRDUDE. See https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Using-LDmicro-and-Arduino-board-without-an-Arduino-software. (Now only AVR) * Added postCompile.bat. It copies LDmicro output files to another directory. Prepare for Arduino and others software. * Added: LDmicro can generate fully functional Arduino C code. EEPROM, UART, ADC, PWM are supported too. See https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-Arduino-software. Thanks to: Adam Horcica http://adam.horcica.cz/tools/ladder-gen/ http://electronics4dogs.blogspot.cz/2011/07/ldmicro-and-arduino.html Devel http://cq.cx/ladder-forum.pl?action=viewthread&parent=3296 == Release 3.1.1 The backward compatibility still saved. * Fixed internal error at line 222 file 'ldmicro.cpp' (ISA_AVR1). * Fixed Turkish translation. * Fixed 'Formatted String Over UART' SELF-starting error. See http://cq.cx/ladder-forum.pl?action=viewthread&parent=4878 * Added escape sequences: * \t -- horizontal tab * \v -- vertical tab * \a -- alert * Fixed escape sequences in UART simulation window(Terminal). Compared with Windows HyperTerminal and Putty. See demo frmt_escape.ld, added to SAMPLES directory. == Release 3.1.0 * Move an element CTC count from EndOFRung to LeafOfRung. After the counter overfill CTC generate OSR at its output. Format of LD file will not changed. Not need changes for old LD program in this LDmicro realese (backward-compatible). Demo ctc_osr.ld added to SAMPLES directory. TODO: It is necessary to reflect the new features of CTC into manual.txt by native English speakers. == Release 3.0.1 this is input v _ _ _ * Changed symbol ONE-SHOT RISING --[OSR_/ ]-- to --[_/ OSR/ \_]-- ^ this is output v _ _ _ * Changed symbol ONE-SHOT FALLING --[OSF \_]-- to --[ \_OSF/ \_]-- ^ this is input I think that these symbols would be more understandable for beginners. * Changed ANSI_CHARSET to DEFAULT_CHARSET. This will correctly display the national characters in the comments on the screen. * Increase MAX_IO from 512 to 1024. == Release 3.0.0 * LDmicro support: Repository: https://github.com/LDmicro/LDmicro Email: LDmicro.GitHub@gmail.com * Add Japanese translation from https://github.com/snipsnipsnip/ldmicro-jp * Add Russin translation from http://www.vga-avr.narod.ru/, Email:maxxir@rambler.ru * Add SFR function for AVR MCU from http://cq.cx/ladder-forum.pl by Dzairo, Email : dsevc@post.sk, sevc@post.sk * Add Netser Ethernet interface Project http://www.mobacon.de/wiki/doku.php/en/netzer/index from https://github.com/mobacon/ldmicro/commits/netzer == Release 2.3 sfr by http://cq.cx/ladder-forum.pl LDmicro_experimental_sfr02 == Release 2.3 by http://cq.cx/ladder-forum.pl * Fix problem with PWM pin for ATmega16,ATmega32 * Add new MCU : ATmega164,ATmega324,ATmega664,ATmega1284 in DIP40 package need test PERSIST - not working in ATmega16 or 32 * News... (by Dzairo) from http://cq.cx/ladder-forum.pl?action=viewthread&parent=3895 Here are some news in LD micro. I add to LD micro this new MCU: ATmega164,324,644,1284 in DIP40 package. I test all hardware: PWM,ADC,UART work good.. Only one function not working : PERSIST Pls MPG add here some easy example for ATmega32 to test it (this is original code what I not change) and if will working then I try test with ATmega644. I try code after power up MCU to set PWM from variable in EEprom. Ehm.... but in Source code (original ) are some bugs what I find. 1.for avr MCU is setting Interupt bit for timer1 . not need it 2.in mcutable.h MCU PWM pin is 0 for mega16,32 then Idd corect pin in DIP40 this pin is 21 (OC2). This pin is used for mega164,324,664,1284 .. test it and work good. I try add another MCU to LDmicro ATmega48,88,168,328 also.. == Release 2.3 * Fix buffer overrun or write to null pointer if Windows sends an LVN_GETDISPINFO without a valid item.pszText, which happens now under Win10. == Release 2.2 * Fix a problem with the ANSI C target when the program had bit and integer variables with the same name. Note that this changes the names of the symbols in the generated C program; so a system that uses "magic variables" with this target for I/O must be updated to use the new names. * Fix a subtle bug in the PIC16 add and subtract routines, where operations of the form B = A - B could fail. * The piecewise linear tables were broken for the AVRs; fix that. == Release 2.1 * For the AVR UARTs, poll UDRE instead of TXC. The formatted string op was broken on some targets, should now be fixed. * Don't draw selected op in bold font; that looks ugly under Vista. == Release 2.0 * Add PIC16F886 and PIC16F887 targets. * Fix display bug in the list to select an I/O pin. * Fix bug where PIC16 UART locks up forever after a framing error when the cycle time is faster than one byte time. * Fix bug where PIC16 outputs could briefly glitch high at startup. * Clear PCLATH in PIC16 boot vector, since some bootloaders expect that. == Release 1.9 * Modify PIC16 boot vectors to work with many bootloaders. == Release 1.8 * Fix modification of a constant string that blew up in new MSVC++ compiler. * Add Italian, Turkish, Portuguese. == Release 1.7 * Make the source compile with latest version of MSVC++; overloaded functions behave a bit differently. * Recover from (and ignore) UART errors on the PIC16 target, instead of getting stuck forever. * Whenever contacts bound to an output pin (Yfoo) were edited, they reverted to an input pin (Xfoo); now fixed. * Don't abort on too-wide program; instead display nice message. * It was possible (by adding and deleting contacts/coils with the same name) to end up with two bit variables bound to the same physical I/O pin; now fixed. * File -> Open was correct, but Ctrl+O failed to ask about unsaved changes before opening requested file; now both are correct. * Add Spanish user interface strings. == Release 1.6 * Internationalize the user interface strings; we now have versions in English, French, and German. * First source release, under the GPLv3. == Release 1.5 * Add untested support for ATmega32. * Remove annoying lag in user interface when editing large (hundreds of ops) programs == Release 1.4 * Fix a terrible bug in the target for the ATmega8; because there is no PORTA/DDRA/PINA, I broke an assumption in my code and failed to set up the port directions. == Release 1.3 * Timer delays are represented as a signed 32-bit integer count of microseconds. If the user provides a delay >= 2**31 us, then show an error instead of just letting things wrap. * Change the start-up behaviour of TOF timers. Previously they would start from a count of zero, so they would be on (independent of rung-in) until they counted themselves off. Now they start out at full count (as if rung-in has been low for a very long time), so rung-out is low until rung-in goes high. == Release 1.2 * Add an untested target for the ATmega8 * Add a special instruction to simplify piecewise linear tables * Fix some user interface bugs: it was possible to drag the top of the I/O list so high that you couldn't grab it again, and there were some cases in which the pin number associated with UART and PWM variables was not displayed == Release 1.1 * Fix persistent variables, which were broken for the PIC16F628 == Release 1.0 * Fix bug in which the filename that appears in the title bar of the main window failed to get updated when opening/saving a file using the keyboard shortcuts (Ctrl+O/+S) * Fix simulation crash when the ladder logic program divides by zero * Fix jumpy scrolling on programs with many rungs of logic when the cursor is off-screen == Release 0.9 * Fix bug with formatted string op on the AVR * Fix previously-untested ATmega16 and ATmega162 targets, which were completely broken === Release 0.8 * Fix PORTA on the PIC16F819 (came up assigned to ADCs, of course) === Release 0.7 * Support arbitrary character (\xAB) escapes in formatted string op * Fix a bug in which the title bar of the main window was not updated === Release 0.6 * Add formatted text output over serial (e.g. to an LCD or a PC) * Add ability to make variables persistent (i.e. auto-saved in EEPROM) * Add look-up table instructions * Fix a bug with the PORTE pins on some AVRs * Fix miscellaneous user interface bugs === Release 0.5 * Interpretable byte code target * Shift register and master control relay instructions === Release 0.4 * Make ADCs work on the AVRs === Release 0.3 * Support serial for AVR * Support PWM for PIC16 and AVR * Show program filename in title bar of main window * Untested support for PIC16F88, F819, F876 * Generate ANSI C code from ladder diagram === Release 0.2 * Support serial communications (using UART), PIC16 only * Support ADC reads, PIC16 only * Simulation environment for ADC and serial * Support ASCII character constant ('a') literals * Fix PORTA pins in PIC16F628 (should assign as GPIO, not to comparator) * Make file open/save dialogs work under Win98 * Fix PORTA/PORTE pins in PIC16F877 (should assign as GPIO, not to ADC) * Add ability to comment your program * Fix bug when a relative filename is given on the command line and the `Compile As' dialog is later used to specify a destination in a different directory === Release 0.1 Initial release