A method to program a microcontroller using a software program. First a user
selects
a module from a catalog of available modules. The module may be for implementing
an amplifier, timer, pulse width modulator, etc. This causes information related
to the selected module to be displayed. For example, a schematic and data sheet
for the selected module may be displayed. Next, the user requests a position and
places the selected module in a graphical user interface, which represents the
resources available to implement the available modules. For example, the resources
may be programmable system blocks. Additional user modules may then be selected
and placed. The user then configures the circuit by selecting circuit parameters
for the user modules (e.g., amplifier gain), pin configurations, and interconnections
between programmable system blocks. The user may then edit source code used to
cause the user modules to perform their functions.