PICAXE is a microcontroller system based on a range of Microchip PIC microcontrollers. PICAXE devices are Microchip PIC devices with pre-programmed firmware that enables bootloading of code directly from a PC, simplifying hobbyist embedded development (not unlike the Arduino and Parallax BASIC Stamp systems). PICAXE devices have been produced by Revolution Education (Rev-Ed) since 1999. Hardware There are currently six (6) PICAXE variants of differing pin counts (8-14-18-20-28-40) and are available as DIL and SMD. PICAXE microcontrollers are pre-programmed with an interpreter similar to the BASIC Stamp but using internal EEPROM instead, thus reducing cost. This also allows downloads to be made with a simple serial connection which eliminates the need for a PIC programmer. PICAXE is programmed using an RS-232 serial cable or a USB cable which connects a computer to the download circuit, which normally uses a 3.5 mm jack and two resistors. Programming language PICAXE microcontrollers are programmed using BASIC. The PICAXE interpreter features bit-banged communications: Serial (asynchronous serial) SPI (synchronous serial) Infrared (using a 38 kHz carrier, seven data bits and five ID bits) One-wire The "readtemp" command reads the temperature from a DS18B20 temperature sensor and converts it into Celsius. All current PICAXEs have commands for using hardware features of the underlying PIC microcontrollers: Hardware asynchronous serial Hardware synchronous serial Hardware PWM DAC ADC SR Latch Timers (two on X2/X1 parts which have settable intervals, only one on M2 parts with a fixed interval, older parts have none) Comparators Internal temperature measurement Program space All current PICAXE chips have at least 2048 bytes of on board program memory available for user programs: 08M2 - 2048 bytes 14M2 - 2048 18M2+ - 2048 20M2 - 2048 20X2 - 4096 28X1 - 4096 40X1 - 4096 28X2 - 4096 per slot with four slots for a total of 16 KiB 40X2 - 4096 per slot with four slots for a total of 16 KiB Clock speeds The default clock speed for all M2 and X1 parts is 4 MHz and for the X2 parts is 8 MHz. The SETFREQ command allows speeds from 31 kHz up to 8 MHz for X1 parts, 31 kHz up to 32 MHz for M2 parts and 31 kHz up to 16 MHz for X2 parts (up to 64 MHz for the 20X2) using the internal resonator. An external resonator can be used with the X1 parts for from 4 MHz to