Microcontroller Programming Services
  We have a wide range of microcontroller design and programming experience. We have designed software that communicates through a variety of common protocols including Modbus RTU and ASCII, BacNet, TCP/IP and Various Proprietary Protocols. We have designed and implemented several motion control systems, some of which used the Bresenhams algorithm to provide fast acurate stepping on multi axis machines. We have designed and implemented various Data Acquisition and control systems in both 'C' and Assembly language.

Custom Embedded Programming Services
  Embedded software is different from large system programming in many ways. Limited resources like RAM, PROM, speed and debugging tools make embedded software challenging and very enjoyable. Whenever there are a limited amount of resources it is more like solving a puzzle than simply writing software. We have been wringing out every last byte of memory and instruction cycles from processors for many years now. Lots of time a design is simple and ROM, RAM and instruction cycles are plentiful but there are just as many times when you do have to squeeze every last ounce of performance out of your hardware. Sometimes this can make the difference between whether a product is affordable or not.

Embedded Programming Languages
   Most embedded microcontroller software is written using 'C', Assembly language , Basic or a mixture of all three. we have a great deal of experience with all three. Assembly language is different between different families of processors, for instance an assembly language program written for an Intel Microcontroller will not work on a Motolora, Zilog or Microchip processor. We have programmed in many different assembly languages for many varied processors. Assembly language is the lowest level language that the Central Processing Unit (CPU) understands, it works primarily with a number system called binary and can only do small instructions. The higher level languages like 'C' and Basic actually take take their instructions and translate them into Assembly Language before they are loaded into the microcontroller. Higher level languages are faster to develop in but execute slower on the microcontroller. This is why there are times where you have to mix a higher level language with Assembly language, just to get more out of your limited resources.