The 8051 Virtual Workshop allows you to
run your 8051 program without any target hardware. Not
only does it simulate the 8051 microcontroller and its
variants, it allows you to add your own extensions and so
simulate your complete target system.
HIGHLIGHTS
- Full source level debugging
- Simulates 8051, 8052 and an increasing number of
variants
- Support for custom extensions allows you to
simulate your complete target system
- Seamless integration with the Embedded Development Studio
- Dockable windows
- Multiple watch windows for local and global
variables
- Views of all memory areas, registers and
disassembled program.
- Full simulation and graphic views of 8051/8052
on-chip peripherals
- State capture to capture and restore the complete
internal state of the microcontroller
- Source code profiling
- Code and data coverage analysis
- Multiple cycle counters
- Operates stand-alone or with the Crossware
8051 C compiler and assembler
Full Source Level Debugging
The IEEE695 records generated by the Crossware C compiler
and assembler contain full debugging information. These
debug records are used by the Simulator to provide
comprehensive source level debugging. You can single step
and trace through your C source code files, you can
single step and trace through your assembler source code
files and you can set breakpoints at the source code
level to control the execution of the Simulator.
Alternatively, if your program does not contain any
debugging information or if you want to step through your
C source at the assembly level, the disassembly window
supports your needs.
Variants Supported
The software fully simulates the 8051 and 8052
microcontrollers, the 8051 and 8052 microcontrollers, the
Dallas DS5000, the multiple dptr's of the Atmel, Philips
and Dallas chips and the multiple dptr's and arithmetic
unit of the siemens 80C517. Support for additional
variants are under development.
System Level Simulation
You can simulate the rest of your target system by
adding your own extensions. An extension can be as simple
or as complex as you like. If you want to use the
Microsoft Foundation Classes, we can provide a Wizard
that will create an outline extension for you. Just a few
lines of code is then all you need to add to toggle a
port pin, or you can create a much more sophisticated
extension by adding your own dialog boxes, graphics views
etc, accessible via custom menu items. The Virtual
Workshop supports multiple extensions and so you can
modularise your enhancements by providing for example one
extension to simulate an encoder, another to simulate a
stepper motor, another to simulate a display and so on.
Seamless Integration with the Embedded
Development Studio
The Embedded Development Studio forms an integrated
environment that binds together the various Crossware
tools. It automatically detects the presence of the
Simulator and loads it to create a single unified
application. The text windows that you see as you single
step through your program are exactly the same as those
you use to create and edit your source code. If you set a
breakpoint as you edit your code, this is where execution
will stop when you instruct the Simulator to Go.
When the Virtual Workshop is used 'stand-alone', the
Embedded Development Studio provides a customisable
interface to your tool set. You can therefore edit and
keep your project up-to-date using all of the
sophisticated features of the Embedded Development Studio
using your existing compiler, assembler and linker.
Simulator extensions programmed in Microsoft Visual
C++ using the Microsoft Foundation Classes will also
integrate seamlessley with the Embedded Development
Studio.
Multiple Watch Windows for Local and Global
Variables
You can open up to five watch windows to display the
values of your C variables. One of these watch windows
will automatically display local variables and be
automatically updated as variables move in and out of
scope. The other four can display global and local
variables of your choice. You can freeze the contents of
a watch window to prevent it from being updated by the
simulator. This feature allows you to compare historic
and current values of your variables.
Views of Registers and Memory Areas
You can open multiple views on all memory areas including
internal data memory, external data memory, sfr memory
and code memory. You can set breakpoint in these windows
to halt execution when a memory location is read or
written. You can open a register view to display the
8051/8052 named registers. Memory and register locations
can be directly edited in these windows in either
hexadecimal or Ascii format.
Full Simulation and Graphic Views of 8051/8052
On-Chip Peripherals
The simulator provides cycle-accurate simulation of the
8051/8052 timer-counters, serial port, interrupts and
port i/o. You can open views to display all of these
peripherals and events.

The interrupt view shows you which interrupts are
enabled, how the interrupts priority mask and flags are
set and which interrupts are active and at what
priorilevel.

The serial port view shows you what mode the serial
port is set to, which timers are being used to drive it
and whether or not clock doubling and interrupts are
enabled. Bar indicators display the progress of the
transmit and receive buffers as the data shifts in and
out. You can see what byte is being transmitted and you
can see the last byte received and whether or not it has
been read by your program.

The timer view shows the activity of all the 8051/8052
timer-counters. Bar indicators display progress, and the
mode in which each timer is running is displayed.

The port views (one for each port) show the masked
input, the unmasked input and the status of the latch.
Input data for a port can be stored in a binary file and
read as your program executes.
State Capture

The state capture facility allows you to store the
complete internal state of the simulated microcontroller.
You can capture the internal state any number of times
and select and view them at a later stage. When you
select and view a captured state, all of the memory views
are updated to show the captured state. You can fully
restore a captured state. Then, when you next run the
simulator it will start with all conditions, memory,
cycle counters, program counter, etc restored to the
values current at the moment you captured the state. You
can use this feature to repeatedly run a small segment of
your code.
Even the states of your simulator extensions will be
restored if you follow our programming guidelines.
Source Code Profiling
As the simulator runs your program, it can optionally
capture information about the execution history. It can
use this information to produce an execution profile of
your source code. This will tell you how much time your
program spent executing in the different parts of your
code. The profile results are listed in a text window,
sorted in accordance with your selected criteria. A
double click on a listed item will take you to the
relevant line of your source code.
Code and Data Coverage
The information captured during execution can also be
used to provide a coverage analysis. Code coverage will
show you which parts of your code have been executed and
which have not. Data coverage will show you which
internal and external data memory locations have been
accessed during execution.
Multiple Cycle Counters
The status line contains three cycle counters. One of
these displays the number of cycles executed since the
start of the program, another displays the number cycles
executed since the last command was issued (such as Step,
Trace or Go). The third is a trip counter and displays
the number of cycles executed since you last reset it to
zero.
Memory
The simulator supports up to 64k of program memory, 64k
of external ram, 256 bytes of internal ram and 128 bytes
of SFR memory. A memory configuration option allows
values suitable to your target system to be specified
allowing access outside of your maximum to generate an
error.
Program File Formats
The file formats supported for the 8051 program code are
Intel hex, OMF51, IEEE695 and Binary.
|