1. A method for configuring a microcontroller, said method comprising: displaying a first graphical user interface on a display device of a computer system, said first graphical user interface comprising a collection of virtual blocks in a design system; receiving at said computer system a selection of a user module, wherein said user module comprises information for implementing a function using a programmable physical block, and wherein said user module is represented by first markup language data that includes information defining how configuration registers for said microcontroller are to be programmed in order to implement said function, and wherein said programmable physical block is represented by second markup language data that includes information defining physical addresses of said configuration registers; displaying on said display device a second graphical user interface operable for receiving user-specifiable information about said user module; assigning a virtual block taken from said collection to said user module, wherein said virtual block corresponds to said programmable physical block; and constructing computer-generated source code, wherein constructing the computer-generated source code comprises: linking said first markup language data and said second markup language data; substituting said user-specifiable information comprising information specific to said user module, information specific to said function and information specific to a control parameter of said function for generic information in said template files to produce assembly, include and header files.