What is a micro controller?
It is simply an IC which can be programmed to do some tasks and listen and control out-side world. These special ICs have some abilities like basic IO, serial communication, sensing analog values (by using sensors), driving motors, etc. You can use these devices to build intelligent robots, to control your house, to connect it to PC to control your PC or control anything from PC, etc. It is really an easy to use magic tool and it is fun.
Companies that produce micro controller
The structure of the micro controller
A micro controller consist a CPU, ROM, RAM, IO, special peripherals. CPU is the unit which implements instructions and does necessary computations. ROM (Read Only Memory) is a memory which has instructions for CPU. RAM (Random Access Memory) is used by CPU while implementing instructions to hold temporary registers used in computations. IO (Inputs/Outputs) is the only part to do interactions with outside world. There are some special peripherals which are connected to IO pins such as A/D (Analog to Digital converter), USART (Universal Synchronous Asyncronous Receiver Transmitter – or shortly serial communication), PWM (Pulse Width Modulation), etc.
Microcontrollers are usually in TTL(5V) and LVTTL(3.3V) standarts. To make them work, you should apply these voltages. Their IO ports can provide up to 25mA (both source and sink).
Their electrical consumption is almost zero in sleep mode (nanoWatt technology).
Microcontrollers need clock pulses to implement processes. You can use X-tal, RC, HC oscilators. Some microcontrollers have an internal oscilator. To use them, to give power is enough. There is no need any external components.
Microcontrollers have RISC(Reduced Instruction Set Computer) architecture. This means they have small amount of instructions to remember. PIC micros have only 35 assembly instructions.
There are Assembly, C, C++, Basic compilers for micro controllers. Assembly compilers are free, but the other compilers are usually licensed.
I suggest you to understand assembly very well. Because, it is the only way to rule micro devices in depth. Therefore, it is the English representation of machine language, so every high level languages turn in to machine language in the end. Even writing in C, sometimes you need to put a few lines of assembly. And believe me, it is not that much hard.
You can find compilers from the Basic Tools To Program PIC page.
There are serial(COM), parallel(LPT) and USB programmers. I suggest a serial programmer because it is easy to implement and free. You can find a simple serial programmer circuit from the Basic Tools To Program PIC page.
This was a brief introduction to microcontrollers. If you know what a microprocessor is now, you can continue with assembly language basics.