The **MC68HC11** is an **8-bit microcontroller** developed by **Motorola** (later Freescale, now NXP). It is widely used in **automotive, industrial, and embedded systems** due to its rich set of **peripherals, ROM, RAM, EEPROM, and I/O support**.
| Model | ROM | RAM | EEPROM | GPIO | Timers | ADC | Special Features |
|---|---|---|---|---|---|---|---|
| MC68HC11A1 | 8 KB | 512 B | 512 B | 40 | 16-bit | 8-bit | Expanded bus support |
| MC68HC11E9 | 12 KB | 1 KB | 512 B | 38 | 16-bit | 8-bit | Enhanced timer functions |
| MC68HC11F1 | 64 KB | 1 KB | 1 KB | 40 | 16-bit | 8-bit | Extended addressing |
The MC68HC11 can be programmed using **assembly language, C, and BASIC**.
Simple program to toggle an LED connected to **PORTB**:
ORG $1000
START:
LDAA #$FF ; Load A with 0xFF
STAA PORTB ; Output to PORTB (turn LED on)
JSR DELAY ; Delay
CLRA ; Clear A (0x00)
STAA PORTB ; Output to PORTB (turn LED off)
JSR DELAY ; Delay
JMP START ; Repeat
DELAY:
LDX #$FFFF ; Load X with max count
WAIT:
DEX ; Decrement X
BNE WAIT ; Loop until X = 0
RTS ; Return
Basic **C program** to toggle an LED on **PORTB**:
#include <mc68hc11.h>
void delay() {
volatile int i;
for(i = 0; i < 50000; i++);
}
int main() {
DDRB = 0xFF; // Set PORTB as output
while(1) {
PORTB = 0xFF; // LED ON
delay();
PORTB = 0x00; // LED OFF
delay();
}
return 0;
}
The **MC68HC11** is a robust microcontroller with **on-chip memory, versatile peripherals, and low power consumption**. It remains a **popular choice in legacy embedded applications**, particularly in automotive and industrial sectors.