Inthis SPICE simulation a 8052 controls a traffic light. It uses Timer 1 to keep track of elapsed time. An external interrupt is triggered by a push-button. When a falling edge is detected on the external interrupt INT1, the interrupt service routine shortens the period of green light.
This is a simulator of the 8051/8052 microcontrollers. For sake of simplicity, I'm only referring to 8051, although the emulator can emulate either one. For more information about the 8-bit chip(s), please check out
www.8052.com or look up the data sheets. Intel, being the originator of the architecture, naturally has information as well.
The 8051 is a pretty easy chip to play with, in both hardware and software. Hence, it's a good chip to use as an example when teaching about computer hardware. Unfortunately, the simulators in use in my school were a bit outdated, so I decided to write a new one.
The scope of the emulator is to help test and debug 8051 assembler programs. What is particularily left out is clock-cycle exact simulation of processor pins. (For instance, MUL is a 48-clock operation on the 8051. On which clock cycle does the CPU read the operands? Or write the result?). Such simulation might help in designing some hardware, but for most uses it is unneccessary and complicated.
The emulator is designed to have two separate modules, consisting of the emulator core and separate front-end. This enables the creation of different kinds of front-ends. For instance, this lets the user use the emulator core as a DLL in a C/C++ application which can simulate other kinds of hardware (such as leds, switches, displays, audio, or whatnot).
Simulation accuracy is valued over speed. Nevertheless, already at v.0.1 the emulator could run at over-realtime speeds on a P4/2.6GHz (running the emulator at over 12MHz). Based on profiler output, over half of the processing time is wasted on pipeline trashing when branching to the opcode functions. This could possibly be helped by JITing the code, but that is considered unneccessary at this point. Also, CPUs with shorter pipelines are not harmed by this behavior as badly.
Support for all sorts of 8051 memory combinations - 128 or 256B internal RAM, 0-64k of external RAM and 0-64k of ROM. External RAM and ROM may even point at the same memory, enabling self-modifying code.
This is a page about my freeware 8051 / 8052 IDE program which is an editor / emulator / debugger / assembler / disassembler / ISP programmer for the 8052 all in one portable Windows executable. Many years ago when I was programming the 8052 professionally and at home, tools were very expensive. There was not much freeware or opensource, but trough my employer I had most of the tools I needed. I wrote a lot of programs in 8052 assembler in 8052 assembler and PL/M, but I also learned to write in C and I had a good C compiler for the 8052. The 8052 was a genius design for its time and its funny that this processor is still used a lot. For development and debugging 8052 assembler code, this freeware IDE can be used. Regards, Hein Pragt.
To be able to program for the 8052 you need an assembler or compiler. I personally still like to write in 8052 assembler but I could no longer find tools for Windows 10. There were still some programs to download but most of them worked at DOS level, had serious bugs or did not fit my needs. After some searching I decided that it was time for a new project, building a complete integrated 8052 development environment. I found a pretty good assembler and the base code of my Z80 IDE and I had some olde code in my code library. The result is 8052 workbench, a portable x64 Windows program that includes an editor, assembler, disassembler, emulator, single step debugger, Intel hex read / write function a VT100 terminal window, a seven segment display with 8 LEDs and keyboard support.
Download the zip file and unzip it at the place where you want to install it on your hard drive. Then create a shortcut to the program to the desktop and the program is ready for use. It is a so-called portable program which means that it does not use external sources or libraries and does not use the registry. After removing the directory from this program, it has also disappeared completely from your system.
To practice there is an example4.asm file in the example directory, which you can load after which it will be in the shown in the middle edit window. Now you can convert this into machine code by means of the assemble button, this will appear on the left of the screen and be put into the virtual memory of the emulator. The last (or first) .org statement will also be put in the program counter and by simply pressing the run button you can execute the program and follow it on the screen. This will not be very fast because every instruction will perform a screen update of all registers. If you want the program to run faster, you can disable the update of the registry block by means of the update checkbox. You can now modify the program, reassemble it and run it again.
In de example directory there are also two 8052 Basic versions from Intel that will run fine in this IDE emulator. After the assembler and RUN hit the spacebar (just as in the original autobaud detect) and the prompt will be shown.
By means of the step button you can execute the program instruction by instruction and check the output and the registers. You can also enter the break address, the emulator will then stop at a run command at this address and display the registers of that moment. When 0000 is entered in the break field it will be ignored.
You can save the modified code as an asm file again but also save it as a hex file so that you can load the binary code in a circuit or ep(rom) for a real 8052 circuit. You can also read an Intel-Hex file, which will then be loaded into the internal emulator memory. You can also run tis code when you put the correct start address in the program counter. You can also disassemble this internal emulator memory code after which the source code will appears in the edit screen in the middle. This can then be changed and written back into the emulator memory by means of assemble button.
The 8052 has no I/O space so the LEDS and seven segment display are mapped on port 1 and 2. You can put the leds on port 1 or 2 and the display on lines port 1 or 2 and character port 1 of 2. You can select this with the top menu, or with some extra assembler directives I added. Look in the example files to see how they work.
In Seven segment mode 1 the leds are connected to port 1 is select of segment and port 2 is display data. The data is latched so the displays keep their value even if they are no longer selected. Directive is ;#SEVEN12
In Seven segment mode 2 the leds are connected to port 2 is select of segment and port 1 is display data. The data is latched so the displays keep their value even if they are no longer selected. Directive is ;#SEVEN21
The current version supports the Intel 8031, 8032, 8051, 8052 and Atmel 8952 processor. For the Atmel 8952 processor this IDE had a ISP In Circuit Programming mode, that supports a serial Arduino ISP module to update an 8952 processor from within the IDE. You can edit code, run and debug it on the emulator and then test it on a real 8952 processor. The hardware configuration of the IDE is equal to a cheap 8952 development board from China.
I use this development board, you can order it in my webshop, its very complete, you have to solder it yourself. It had a Zif socket for the processor, a full rs232 circuit, and USB circuit, four pushbuttons and a reset button, am ISP programming connector, eight output leds, a power supply, crystal in socket and all I/O lines on connector pins.
I created my own Arduino Nano based ISP programmer for the 89S52 processor. I connected it to the Chinese development board with a standard ISP connector cable and I guess this will work on other 8052 ISP development boards as well. I chose this development board because it is very cheap and has a lot of features. And of course an Arduino Nano is small and also cheap.
I use the 8052_workbench myself and that is one of the way I find and fix bugs. One of the last things I did was recode de TB31.asm file, a complete Tiny Basic interpreter for the Intel 8031 and made it work fine on 8031 with 128 bytes internal ram. During this process I found some little bugs in de emulator and I added a mode to emulate a real 8031 (128 bytes memory checks) to the code. Also I fixed code that would destroy the user interface if there was too much output to the windows. And the most important new feature is the ISP In Circuit Programming option. The example directory now also contains the Intel 8052 floating point basic assembly sourcecode, the complete 8031 tiny basic assembly sourcecode and the paulmon21 assembly sourcecode. I proudly present version 1.04 of the 8052 developer IDE.
Here you can download the latest version if this IDE. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, an assembler directory and a examples directory. After weeks of debugging I think the project is ready for release, if you find any bugs please report them to me.
Small Device C Compiler (SDCC) is a free opensource (GPL) C compiler for 8051 based microcontrollers .It consists of linker, assembler, simulator and debugger for developing software for the 8051 architecture.
Now most of the hex file downloaders will not recognize the .ihx format.To convert the ihx format to hex format you have to use another program called packihx which will repackage ihx to hex format.
Distributed Energy Resources and their increased penetration within the power grid are a suitable method to provide essential reliability services. In order to do so, they must operate in aggregate. Aggregation of a wide variety of systems with varying standards and protocols is a complex task, which could benefit from rules and standards to support interoperability. To this end, the Portland State University Power Lab has developed the Energy Grid of Things project, which includes a Distributed Energy Resource Management System to provide aggregation and demonstrate the usage of an Energy Services Interface: a set of rules governing the interface between resource owners and aggregator businesses.
3a8082e126