2.2.1.2 Components of a Microcontroller

The microcontroller (MCU) has on-chip program memory (Figure 2-2 or Figure 2-3) for the firmware, or coded instructions, to run a program (Figure 2-4 or Figure 2-5). A Program Counter (PC) is used to address program memory, including Reset and interrupt addresses. A hardware stack is used with call and return instructions in code, so it works with, but is not part of, program memory. Device data sheets describe the details of program memory operation, vectors and the stack.

Figure 2-2. PIC® MCU Data Sheet - Program Memory and Stack
Figure 2-3. AVR® MCU Data Sheet - Program Memory
Figure 2-4. PIC® MCU Data Sheet – Instruction Set (Excerpt)
Figure 2-5. AVR® MCU Instruction Set (Excerpt)

The microcontroller also has data, or File Register, memory. This memory consists of Special Function Registers (SFRs) and General Purpose Registers (GPRs). SFRs are registers used by the CPU and peripheral functions for controlling the desired operation of the device. GPRs are for storage of variables that the program will need for computation or temporary storage. Some microcontrollers have additional data EEPROM memory. As with program memory, device data sheets describe the details of data memory use and operation.

Table 2-2. PIC® MCU Data Sheet – File Registers Example
Bank 0 File Address Bank 1 File Address Bank 2 File Address Bank 3 File Address
Indirect addr. (1) 00h Indirect addr. (1) 80h Indirect addr. (1) 100h Indirect addr. (1) 180h
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORTA 05h TRISA 85h PORTA 105h TRISA 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h PORTC 107h TRISC 187h
08h 88h 108h 188h
09h 89h 109h 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDAT 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2(1) 18Dh
TMR1L 0Eh PCON 8Eh EEDATH 10Eh 18Eh
TMR1H 0Fh OSCCON 8Fh EEADRH 10Fh 18Fh
T1CON 10h OSCTUNE 90h 110h 190h
TMR2 11h 91h 111h 191h
T2CON 12h PR2 92h 112h 192h
SSPBUF 13h SSPADD(2) 93h 113h 193h
SSPCON 14h SSPSTAT 94h 114h 194h
CCPR1L 15h WPUA 95h WPUB 115h 195h
CCPR1H 16h IOCA 96h IOCB 116h 196h
CCP1CON 17h WDTCON 97h 117h 197h
RCSTA 18h TXSTA 98h VRCON 118h 198h
TXREG 19h SPBRG 99h CM1CON0 119h 199h
RCREG 1Ah SPBRGH 9Ah CM2CON0 11Ah 19Ah
1Bh BAUDCTL 9Bh CM2CON1 11Bh 19Bh
PWM1CON 1Ch 9Ch 11Ch 19Ch
ECCPAS 1Dh 9Dh 11Dh PSTRCON 19Dh
ADRESH 1Eh ADRESL 9Eh ANSEL 11Eh SRCON 19Eh
ADCON0 1Fh ADCON1 9Fh ANSELH 11Fh 19Fh
General 
Purpose 
Register

96 Bytes

20h General 
Purpose 
Register

80 Bytes

A0h General 
Purpose 
Register

80 Bytes

120h 1A0h
EFh 16Fh
accesses

70h-7Fh

F0h accesses

70h-7Fh

170h accesses

70h-7Fh

1F0h
7Fh FFh 17Fh 1FFh

Empty table cells: Unimplemented data memory locations, read as ‘0’.
Note 1: Not a physical register.
Note 2: Address 93h also accesses the SSP Mask (SSPMSK) register under certain conditions.

Figure 2-6. AVR® MCU Data Sheet – SRAM Data Memory and Stack

In addition to memory, the microcontroller has a number of peripheral device circuits on the same chip. Some peripheral devices are called input/output (I/O) ports. I/O ports are pins on the microcontroller that can be used as outputs and driven high or low to send signals, blink lights, drive speakers – just about anything that can be sent through a wire. Often these pins are bidirectional and can also be configured as inputs, allowing the program to respond to an external switch, a sensor, or to communicate with some external device.

Figure 2-7. PIC® MCU Data Sheet – Block Diagram (Excerpt)
Figure 2-8. AVR® MCU Data Sheet – Block Diagram (Excerpt)

To design such a system, choose which peripherals are necessary for the application.

The following is a list of common peripherals:

  • Analog-to-Digital Converters (ADCs) allow microcontrollers to connect to sensors and receive changing voltage levels.
  • Serial communication peripherals that allow streaming communications over a few wires to another microcontroller, to a local network, or to the Internet.
  • Peripherals on the PIC MCU called “timers” accurately measure signal events and generate and capture communications signals, produce precise waveforms, even automatically reset the microcontroller if it gets “hung” or lost due to a power glitch or hardware malfunction.
  • Other peripherals detect when the external power is dipping to dangerous levels, so that the microcontroller can store critical information and safely shut down before power is completely lost.

The peripherals, and the amount of memory an application needs to run a program, largely determine which PIC MCU to use. Other factors could include the power consumed by the microcontroller and its “form factor,” i.e., the size and characteristics of the physical package that must reside on the target design.

Figure 2-9. PIC® MCU Device Package Example
Figure 2-10. Example AVR® MCU Device Package

A microcontroller becomes active when power is applied and an oscillator begins generating a clocking signal. Depending on the microcontroller, there may be several internal and external oscillator operational modes.

Figure 2-11. PIC® MCU Data Sheet – Timing Diagram (Excerpt)
Figure 2-12. AVR® MCU Data Sheet – Timing (Excerpt)