http___en.wikipedia.org_wiki_Intel_8051.xml
1.1 2.1 2.2 2.3 3.1 4.1 5.1 5.2 5.3 5.4 5.5 6.1 7.1 7.2 7.3 7.4 7.5 8.1 9.1 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11.1 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 12.10 12.11 13.1 14.1 14.2 14.3 14.4 14.5 14.6 15.1 15.2 15.3 16.1 16.2 16.3 16.4 16.5 16.6 17.1 18.1 19.1 19.2 19.3 20.1 20.2 21.1 21.2 21.3 21.4 21.5 22.1 23.1 23.2 23.3 23.4 23.5 24.1 25.1 25.2 26.1 27.1 28.1 29.1 30.1 31.1 32.1 32.2 32.3 33.1 33.2 33.3 33.4
Интел Интел (Intel Corporation) е базирана в град Санта Клара, щата Калифорния, САЩ мултинационална корпорация, известна най-вече с производството на микропроцесори и специализирани интегрални схеми. Интел е производител на мрежови карти, чипсети за системни платки, компютърни компоненти и други устройства. Интел разработва изследователски проекти във всички области на полупроводниковата промишленост. Съдържание История[редактиране | редактиране на кода] Интел е основана през 1968 г. от Гордън Мур (Gordon E. Moore — химик и физик) и Робърт Нойс (Robert Noyce — физик) с рисков капитал, предоставен от Артър Рок[2]. Третият служител в компанията е Андрю Гроув (Andrew Grove — инженер химик, известен още като Andy Grove), който е начело на компанията през по-голямата част на 80-те и 90-те години на 20-и век. Той е останал в историята като ключовата фигура в Интел. Към края на 90-те години Интел е вече една от най-големите и най-успешните корпорации в света, въпреки че жестоката конкуренция в полупроводниковата индустрия е влошила до известна степен нейната позиция към настоящия момент. Произход на името[редактиране | редактиране на кода] Мур и Р. Нойс искали да нарекат новата си компанията Мур-Нойс. Но това име не било много подходящо за компания произвеждаща електроника, тъй като нойс напомня по звученето си друга английска дума — noise, която се асоциира с електрически смущения. Така те решили да нарекат компанията INTegrated ELectronics или Intel за краткост. Интел обаче вече била запазена марка на верига хотели, затова се наложило да откупят правата за това име. Памети и микропроцесори[редактиране | редактиране на кода] В началото фирмата се ориентира към производството на полупроводникова памет по метода на планарната технология и е водеща в тази област чак до края 70-те години. През 1969 г. започват преговори с японската фирма за производство на (калкулатори) Busicom (известна и с името NCM — Nippon Calculating Machine Corporation) за създаване на набор от интегрални схеми за ново поколение калкулатори. В началото техническото задание изисквало да се разработят 13 различни вида интегрални схеми. По това време обаче Интел няма ресурси за изработката на толкова голям брой нови логически чипове. Тогава Тед Хоф (Ted Hoff — бивш инженер от Станфордския Университет), предлага алтернативен вариант. Вместо да се създават отделни специализирани чипове, той предлага да се разработи програмируем чип с общо предназначение, който да бъде програмиран за изпълнение на аритметични операции. В процеса на разработка ръководството на Интел осъзнава стратегическата важност на разработвания чип и започва преговори за промяна на лиценза. Вместо да предоставя изключителните права върху разработените чипове на поръчителя, Интел искала да получи право за производство на нови чипове и продажба на лицензи за други потребители. Компанията Busicom била в затруднено финансово положение и за 60 хиляди долара Интел получила изключителните права върху новия чип. Впоследствие този чип получил номер 4004 и бил наречен микропроцесор. Първите микропроцесори[редактиране | редактиране на кода] Изчислителната мощност на процесора Intel 4004 била равна на мощността на компютъра ENIAC и за времето си той предлагал оптимално съотношение цена/производителност, но бил все още недостатъчно мощен за използване в компютри. Скоростта на увеличаване на изчислителната мощност на процесорите обаче била поразителна. Още през 1965 г. Мур забелязал една важна тенденция — всеки нов чип имал около 2 пъти повече транзистори, респективно изчислителна мощност, и всеки такъв чип влизал в производство в рамките на 18-24 месеца след предходния. Това е известният Закон на Мур, който е в сила и понастоящем, и дори се използва от специалисти по планиране и прогнозиране. Интел започва да развива микропроцесорната технология и да произвежда все по-мощни чипове. През 1972 се появява 8-битовият процесор Intel 8008. През 1974 г. Интел произвежда процесора Intel 8080, който се използва масово в първите персонални компютри. През 1978 се появява 16-битовият процесор Intel 8086. Микропроцесорите стават основен продукт на Интел чак в средата на 80-те. От памети към микропроцесори[редактиране | редактиране на кода] През 1983 г., в началото на ерата на персоналните компютри, печалбите на Интел намаляват под натиска на японските производители на полупроводникова памет. Тогавашният президент на компанията А. Гроув фокусира компанията върху производството на микропроцесори. Ключов елемент от неговия план е тогава смятаната за радикална идея Интел да стане единственият източник на популярния тогава микропроцесор Intel 8086 и неговите следващи версии. До тогава потребителите не можели да разчитат на един единствен доставчик за производството на сложни интегрални схеми, но Гроув започнал да произвежда процесори в 3 географски отдалечени една от друга фабрики и прекратил лицензните си отношения с конкурентни производители като Zilog и AMD. В резултат от тези действия, Интел станал главният печеливш от бума на пазара на персонални компютри в края на 20-и век. Въпреки огромната значимост на микропроцесора 4004 и неговите наследници 8008 и 8080, те не успели да донесат сериозни приходи за Intel. При завършването на следващия процесор 8086 (както и неговия вариант 8088) през 1978 г. Intel се впуска в мащабна рекламна и маркетингова кампания наречена „Операция Краш“ (превод: Операция Мачкане), чиято цел била да се спечелят колкото се може повече клиенти за процесора. Една стъпка към победата станало използването на 8088 в дизайна на новосъздадения модел PC на IBM, макар никой на времето да не осъзнавал важността ѝ. IBM представя своя персонален компютър през 1981 г. и той жъне невероятен успех. През 1982 г. Intel произвеждат процесора 80286, който след две години бил използван в компютъра на IBM PC/AT. Циментирането на позицията на Intel като главен доставчик на компоненти за PC индустрията става след като Compaq (която първа започнала производство на т. нар. клонирани PC или IBM/PC съвместими компютри), през 1985 г. предлага система, базирана на процесора 80286, а през 1986 г. произвежда първата система, базирана на процесора 80386. По този начин фирмата изпреварва IBM в областта на персоналните компютри и освен това създава конкурентен пазар за PC съвместими компютри. Ролята на Интел за възхода на технологиите[редактиране | редактиране на кода] През 90-те Интел прави много иновации в архитектурата и хардуера на персоналните компютри: шината PCI; шината USB; шината AGP; доминиращата днес архитектура за многопроцесорни сървъри. В областта на софтуера успехите са по-ограничени. Софтуерът за графика и видео изиграва важна роля за развитието на цифровото видео, но тези успехи са временни и впоследствие са омаловажени от конкурентните продукти на Microsoft (Майкрософт). Конкурентната борба между Интел и Майкрософт е разкрита в материалите на антитръстовия процес срещу Майкрософт. Без съмнение, Интел е движещата сила за напредъка в планарната технология. Непрекъснатото намаляване на единичните размери на електронните компоненти, в съгласие със закона на Мур, води до повишаване на ефективността на производствения процес и има за следствие поевтиняване на цените. Интел решават да интегрират графични функции в самия процесор. В голяма част от компютрите на пазара графичната карта е интегрирана в дъното под формата на чип, който консумира повече електричество и отделя топлина. С новото поколение процесори i3, i5, i7 Интел предлага графика и процесор в едно, на доста добра цена. От AMD разбира се вече разработват подобни продукти с леки модификации. За сравнение новите процесори притежават вградена графика с мощност на нова видео карта от ценовия сегмент на 84 $. Конкуренция и антитръстови дела[редактиране | редактиране на кода] Превъзходството на Интел на пазара на x86 съвместими микропроцесори води до множество обвинения в нарушение на антитръстовите закони през годините, включително разследванията от страна на Федералната Търговска Комисия (FTC) в края на 80-те и през 1999 г., и граждански дела като например искът на DEC от 1997 г. и патентното дело от страна на Intergraph. Доминиращата позиция (по едно време Интел контролира над 85% от пазара на 32-битови микропроцесори за PC), съчетана с грубите правни ходове от страна на Интел (като печално известното дело по патент 338 срещу производителите на персонални компютри), правят компанията привлекателна цел за съдебни процеси, но много малко от тези дела дават някакъв резултат. В момента единственият сериозен конкурент на Интел на пазара на x86 съвместими процесори е Advanced Micro Devices (AMD), с която Интел има съглашение за пълно крос-лицензиране още от 1976 г. (т. е. всеки един от партньорите може да използва патентованите технологии на другия без заплащане). Съществуват и други по-малки конкуренти, като VIA Technologies и Transmeta, които произвеждат процесори с ниска консумация на енергия, предназначени основно за мобилни устройства. Финансова информация[редактиране | редактиране на кода] Пазарната капитализация на Интел по данни от ноември 2004 г. е около 148 милиарда долара. Акциите на компанията се котират на борсата NASDAQ със символа INTC. Външни препратки[редактиране | редактиране на кода] - Официален уебсайт на Интел - Музей на Интел - Корпоративна информация за Интел в Yahoo! - Intel Technology Източници[редактиране | редактиране на кода] - ↑ INTC — Intel Corporation Company profile — CNNMoney. // money.cnn.com. Cable News Network. - ↑ Intel Online Museum: Corporate Timeline. // Intel Museum. Intel. Посетен на July 23, 2011.
1.1 2.1 3.1 3.2 4.1 4.2 4.3 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 31.2 32.1 33.1 34.1 35.1 36.1 36.2 36.3 36.4 37.1 37.2 38.1 39.1 40.1 40.2 40.3 40.4 40.5 41.1 42.1 43.1 44.1 45.1 45.2 45.3 45.4 46.1 46.2 46.3 47.1 47.2 47.3 47.4 47.5 48.1 48.2 48.3 49.1 49.2 49.3 49.4 49.5 49.6 49.7 50.1 51.1 51.2 51.3 52.1 52.2 52.3 53.1 54.1 54.2 54.3 55.1 55.2 56.1 56.2 57.1 57.2 58.1 58.2 59.1 59.2 60.1 60.2 60.3 61.1 61.2 61.3 62.1 62.2 63.1 63.2 64.1 65.1 66.1 66.2 67.1 67.2 67.3 68.1 68.2 68.3 69.1 70.1 71.1 71.2 72.1 73.1 74.1 75.1 76.1 76.2 77.1 77.2 78.1 78.2 79.1 80.1 81.1 82.1 83.1 84.1 84.2 85.1 86.1 86.2 87.1 87.2 88.1 88.2 88.3 89.1 89.2 90.1 90.2 91.1 91.2 91.3 92.1 92.2 93.1 93.2 93.3 94.1 95.1 95.2 95.3 96.1 97.1 98.1 99.1 100.1 101.1 102.1 103.1 104.1 105.1 106.1 106.2 106.3 107.1 107.2 108.1 109.1 109.2 110.1 110.2 110.3 110.4 111.1 111.2 111.3 112.1 113.1 113.2 113.3 113.4 114.1 115.1 116.1 117.1 118.1 119.1 120.1 121.1 122.1 123.1 124.1 125.1 126.1 127.1 128.1 129.1 130.1 131.1 132.1 133.1 134.1 135.1 136.1 137.1 138.1 139.1 140.1 141.1 142.1 143.1 144.1 145.1 146.1 147.1 148.1 149.1 150.1 151.1 152.1 153.1 154.1 155.1 156.1 157.1 158.1 159.1 160.1 161.1 162.1 163.1 164.1 165.1 166.1 167.1 168.1 169.1 170.1 171.1 172.1 173.1 174.1 175.1 176.1 177.1 178.1 179.1 180.1 181.1 182.1 183.1 184.1 185.1 186.1 187.1 188.1 189.1 190.1 191.1 192.1 193.1 194.1 195.1 196.1 197.1 198.1 199.1 200.1 201.1 202.1 203.1 203.2 203.3 203.4 203.5 203.6 203.7 203.8 204.1 206.1 207.1 208.1 209.1 210.1 211.1 212.1 213.1 213.2 214.1 215.1 216.1 216.2 217.1 218.1 219.1 220.1 221.1 222.1 223.1 223.2 224.1 224.2 225.1 225.2 226.1 226.2 227.1 228.1 229.1 230.1 230.2 231.1 232.1 233.1 234.1 235.1 236.1 237.1 238.1 239.1 240.1 241.1 242.1 243.1 244.1 245.1 246.1 247.1 247.2 247.3 248.1 249.1 250.1 251.1 252.1 253.1 254.1 255.1 256.1 257.1 258.1 259.1 260.1
Intel MCS-51 The Intel MCS-51 (commonly referred to as 8051) is a Harvard architecture, CISC instruction set, single chip microcontroller (µC) series which was developed by Intel in 1980 for use in embedded systems.[1] Intel's original versions were popular in the 1980s and early 1990s and enhanced binary compatible derivatives remain popular today. Intel's original MCS-51 family was developed using NMOS technology, but later versions, identified by a letter C in their name (e.g., 80C51) used CMOS technology and consume less power than their NMOS predecessors. This made them more suitable for battery-powered devices. The family was continued in 1996 with the enhanced 8-bit MCS-151 and the 8/16/32-bit MCS-251 family of binary compatible microcontrollers.[2] While Intel no longer manufactures the MCS-51, MCS-151 and MCS-251 family, enhanced binary compatible derivatives made by numerous vendors remain popular today. Some derivatives integrate a digital signal processor (DSP). In addition to these physical devices, several companies also offer MCS-51 derivatives as IP cores for use in FPGAs or ASICs designs. Contents - 1 Important features and applications - 2 Memory architecture - 3 Registers - 4 Instruction set - 5 Programming - 6 Related processors - 7 Use as intellectual property - 8 MCU based on 8051 - 9 Digital signal processor (DSP) variants - 10 Enhanced 8-bit binary compatible microcontroller: MCS-151 family - 11 8/16/32-bit binary compatible microcontroller: MCS-251 family - 12 See also - 13 References - 14 Further reading - 15 External links Important features and applications[edit] The 8051 architecture provides many functions (CPU, RAM, ROM, I/O, interrupt logic, timer, etc.) in a single package - 8-bit ALU and Accumulator, 8-bit Registers (one 16-bit register with special move instructions), 8-bit data bus and 2×16-bit address bus/program counter/data pointer and related 8/11/16-bit operations; hence it is mainly an 8-bit microcontroller - Boolean processor with 17 instructions, 1-bit accumulator, 32 registers (4 bit-addressable 8-bit) and up to 144 special 1 bit-addressable RAM variables (18 bit-addressable 8-bit)[3] - Multiply, divide and compare instructions - 4 fast switchable register banks with 8 registers each (memory mapped) - Fast interrupt with optional register bank switching - Interrupts and threads with selectable priority[4] - Dual 16-bit address bus – It can access 2 x 216 memory locations – 64 KB (65,536 locations) each of RAM and ROM - 128 bytes of on-chip RAM (IRAM) - 4 KiB of on-chip ROM, with a 16-bit (64 KiB) address space (PMEM). Not included on 803X variants - Four 8-bit bi-directional input/output port - UART (serial port) - Two 16-bit Counter/timers - Power saving mode (on some derivatives) One feature of the 8051 core is the inclusion of a boolean processing engine which allows bit-level boolean logic operations to be carried out directly and efficiently on select internal registers and select RAM locations. This feature helped cement the 8051's popularity in industrial control applications because it reduced code size by as much as 30%.[citation needed] Another feature is the inclusion of four bank selectable working register sets which greatly reduce the amount of time required to complete an interrupt service routine. With a single instruction the 8051 can switch register banks as opposed to the time consuming task of transferring the critical registers to the stack or designated RAM locations. These registers also allowed the 8051 to quickly perform a context switch. Once a UART, and a timer if necessary, has been configured, the programmer needs only write a simple interrupt routine to refill the send shift register whenever the last bit is shifted out by the UART and/or empty the full receive shift register (copy the data somewhere else). The main program then performs serial reads and writes simply by reading and writing 8-bit data to stacks. Derivate features[edit] As of 2013[update], new derivates are still developed by many major chipmakers, and major compiler suppliers such as IAR Systems, Keil and Altium Tasking continuously release updates. MCS-51 based microcontrollers typically include one or two UARTs, two or three timers, 128 or 256 bytes of internal data RAM (16 bytes of which are bit-addressable), up to 128 bytes of I/O, 512 bytes to 64 KB of internal program memory, and sometimes a quantity of extended data RAM (ERAM) located in the external data space. The original 8051 core ran at 12 clock cycles per machine cycle, with most instructions executing in one or two machine cycles. With a 12 MHz clock frequency, the 8051 could thus execute 1 million one-cycle instructions per second or 500,000 two-cycle instructions per second. Enhanced 8051 cores are now commonly used which run at six, four, two, or even one clock per machine cycle, and have clock frequencies of up to 100 MHz, and are thus capable of an even greater number of instructions per second. All Silicon Labs, some Dallas and a few Atmel devices have single cycle cores. 8051 variants may include built-in reset timers with brown-out detection, on-chip oscillators, self-programmable Flash ROM program memory, built-in external RAM, extra internal program storage, bootloader code in ROM, EEPROM non-volatile data storage, I²C, SPI, and USB host interfaces, CAN or LIN bus, ZigBee or Bluetooth radio modules, PWM generators, analog comparators, A/D and D/A converters, RTCs, extra counters and timers, in-circuit debugging facilities, more interrupt sources, extra power saving modes, etc. In many engineering schools the 8051 microcontroller is used in introductory microcontroller courses.[citation needed] Memory architecture[edit] The MCS-51 has four distinct types of memory – internal RAM, special function registers, program memory, and external data memory. Internal RAM (IRAM) is located from address 0 to address 0xFF. IRAM from 0x00 to 0x7F can be accessed directly. IRAM from 0x80 to 0xFF must be accessed indirectly, using the @R0 or @R1 syntax, with the address to access loaded in R0 or R1. The 128 bits at IRAM locations 0x20–0x2F are bit-addressable. Special function registers (SFR) are located in the same address space as IRAM, at addresses 0x80 to 0xFF, and are accessed directly using the same instructions as for the lower half of IRAM. They can not be accessed indirectly via @R0 or @R1. 16 of the SFRs are also bit-addressable. Program memory (PMEM, though less common in usage than IRAM and XRAM) is up to 64 KiB of read-only memory, starting at address 0 in a separate address space. It may be on- or off-chip, depending on the particular model of chip being used. Program memory is read-only, though some variants of the 8051 use on-chip flash memory and provide a method of re-programming the memory in-system or in-application. In addition to code, it is possible to store read-only data in program memory, accessed by the MOVC A, @DPTR instruction. Data is fetched from the address specified in the 16-bit special function register DPTR. External data memory (XRAM) is a third address space, also starting at address 0. It can also be on- or off-chip; what makes it "external" is that it must be accessed using the MOVX (Move eXternal) instruction. Many variants of the 8051 include the standard 256 bytes of IRAM plus a few KB of XRAM on the chip. The 8051 is designed as a strict Harvard architecture. The 8051 can only execute code fetched from program memory. The 8051 does not have any instruction to write to program memory. Most 8051 systems respect this distinction, and so are unable to download and directly execute new programs. The strict Harvard architecture has the advantage of making such systems immune to most forms of malware. Some 8051 systems have (or can be modified to have) some "dual-mapped" RAM, making them act somewhat more like Princeton architecture. This (partial) Princeton architecture has the advantage of making it possible for a Forth boot loader running on the 8051 to write new native code to RAM and then execute it, leading to faster incremental and interactive programming cycles than strict Harvard systems.[5][6] Registers[edit] The only register on an 8051 that is not memory-mapped is the 16-bit program counter PC. This specifies the address of the next instruction to execute. Relative branch instructions supply an 8-bit signed offset which is added to the PC. 8 general-purpose registers R0–R7 may be accessed with instructions 1 byte shorter than others. They are mapped to IRAM between 0x00 and 0x1F. Only 8 bytes of that range are used at any given time, determined by the two bank select bits in the PSW. The following registers are memory-mapped into the special function register space: - (0x81) Stack pointer SP. This is an 8-bit register used by subroutine call and return instructions. The stack grows upward; the SP is incremented before pushing, and decremented after popping a value. - (0x82–83) Data pointer DP. This is a 16-bit register that is used for accessing PMEM and XRAM. - (0xD0) Program status word PSW. This contains important status flags: - PSW.0: P Parity. Gives the parity (modulo-2 sum of the bits of) the most recent ALU result. - PSW.1: UD User Defined. For general software use, not otherwise used by hardware. - PSW.2: OV Overflow flag. Set when addition produces a signed overflow. - PSW.3: RS0 Register select 0. The low-order bit of the register bank. Set when banks at 0x08 or 0x18 are in use. - PSW.4: RS1 Register select 1. The high-order bit of the register bank. Set when banks at 0x10 or 0x18 are in use. - PSW.5: F0 Flag 0. For general software use, not otherwise used by hardware. - PSW.6: AC auxiliary carry. Set when addition produces a carry from bit 3 to bit 4. - PSW.7: C Carry bit. - (0xE0) Accumulator A. This register is used by most instructions. - (0xF0) B register. This is used as an extension to the accumulator for multiply and divide instructions. 256 single bits are directly addressable. These are the 16 IRAM locations from 0x20–0x2F, and the 16 special function registers 0x80, 0x88, 0x90, …, 0xF8. Any bit of these bytes may be directly accessed by a variety of logical operations and conditional branches. Note that the PSW does not contain the common N (negative) and Z (zero) flags. Instead, because the accumulator is a bit-addressible SFR, it is possible to branch on its most significant bit directly. There is also an instruction to jump if the accumulator is zero or non-zero. Instruction set[edit] Instructions are all 1 to 3 bytes long, consisting of an initial opcode byte, followed by up to 2 bytes of operands. There are 16 basic ALU instructions that operate between the accumulator and a second operand. The most significant nibble of the opcode byte specifies the operation, and the least significant nibble specifies one of the following 12 addressing modes: - Register direct, R0–R7 (opcodes x8–xF) - Register indirect, @R0 or @R1 (opcodes x6 and x7) - Memory direct, specifying an IRAM or SFR location (opcodes x5, followed by 1 byte of address) - Immediate, specifying an 8-bit constant (opcodes x4, followed by 1 byte of data) The operations are as follows. Not all support all addressing modes; the immediate mode in particular is sometimes nonsensical: - 0y INC operand: Increment the specified operand. Opcode 04 specifies "INC A" - 1y DEC operand: Decrement the specified operand. Opcode 14 specifies "DEC A" - 2y ADD A,operand: Add the operand to the accumulator A. - 3y ADDC A,operand: Add the operand, plus the C bit, to the accumulator. - 4y ORL A,operand: Logical OR the operand into the A register. - 5y ANL A,operand: Logical AND the operand into the A register. - 6y XRL A,operand: Logical exclusive-OR the operand into the A register. - 7y MOV operand,#data: Move immediate data to the operand. Opcode 74 specifies "MOV A,#data. - 8y MOV address,operand: Move data to an IRAM or SFR register. - 9y SUBB A,operand: Subtract the operand from the accumulator, with borrow. Note there is no subtract without borrow. - Ay MOV operand,address: Move data from an IRAM or SFR register. Opcodes A4 and A5 are not used. - By CJNE operand,#data,offset: Compare operand to the immediate data, and branch to PC+offset if not equal. Opcodes B4 and B5 perform CJNE A,operand,offset, for memory direct and immediate operands. Note there is no "compare and jump if equal" instruction. - Cy XCH A,operand: Exchange (swap) the accumulator and the operand. Opcode C4 is not used. - Dy DJNZ operand,offset: Decrement the operand, and branch to PC+offset if the result is non-zero. Opcodes D4, D6, and D7 are not used. - Ey MOV A,operand: Move operand to the accumulator. Opcode E4 is not used. (Use opcode 74 instead.) - Fy MOV operand,A: Move accumulator to the operand. Opcode F4 is not used. Only the ADD, ADDC and SUBB instructions set PSW flags. The INC, DEC, and logical instructions do not. The CJNE instructions modify the C bit only, to the borrow that results from operand1−operand2. The 64 opcodes x0–x3, plus the few opcodes not used in the above range, are used for other instructions with more limited operand-specification capabilities: One of the reasons for the 8051's popularity is its range of operations on single bits. Bits are always specified by absolute addresses; there is no register-indirect or indexed addressing. Instructions that operate on single bits are: - SETB bit, CLR bit, CPL bit: Set, clear, or complement the specified bit - JB bit,offset: Jump if bit set - JNB bit,offset: Jump if bit clear - JBC bit,offset: Jump if bit set, and clear bit - MOV C,bit, MOV bit,C: Move the specified bit to the carry bit, or vice versa - ORL C,bit, ORL C,/bit: OR the bit (or its complement) to the carry bit - ANL C,bit, ANL C,/bit: AND the bit (or its complement) to the carry bit - XRL C,bit, XRL C,/bit: Exclusive-OR the bit (or its complement) to the carry bit Although most instructions require that one operand is the accumulator or an immediate constant, it is possible to perform a MOV directly between two internal RAM locations. Programming[edit] There are various high-level programming language compilers for the 8051. Several C compilers are available for the 8051, most of which allow the programmer to specify where each variable should be stored in its six types of memory, and provide access to 8051 specific hardware features such as the multiple register banks and bit manipulation instructions. There are many commercial C compilers.[7] SDCC is a popular open source C compiler.[8] Other high level languages such as C++, Forth,[5][6][9][10] BASIC, Pascal/Object Pascal, PL/M and Modula-2 are available for the 8051, but they are less widely used[citation needed] than C and assembly. Because IRAM, XRAM, and PMEM (read only) all have an address 0, C compilers for the 8051 architecture provide compiler-specific pragmas or other extensions to indicate where a particular piece of data should be stored (i.e. constants in PMEM or variables needing fast access in IRAM). Since data could be in one of three memory spaces, a mechanism is usually provided to allow determining to which memory a pointer refers, either by constraining the pointer type to include the memory space, or by storing metadata with the pointer. Related processors[edit] The 8051's predecessor, the 8048, was used in the keyboard of the first IBM PC, where it converted keypresses into the serial data stream which is sent to the main unit of the computer. The 8048 and derivatives are still used today[update] for basic model keyboards. The 8031 was a cut down version of the original Intel 8051 that did not contain any internal program memory (ROM). To use this chip, external ROM had to be added containing the program that the 8031 would fetch and execute. An 8051 chip could be sold as a ROM-less 8031, as the 8051's internal ROM is disabled by the normal state of the EA pin in an 8031-based design. A vendor might sell an 8051 as an 8031 for any number of reasons, such as faulty code in the 8051's ROM, or simply an oversupply of 8051s and undersupply of 8031s. The 8052 was an enhanced version of the original 8051 that featured 256 bytes of internal RAM instead of 128 bytes, 8 KB of ROM instead of 4 KB, and a third 16-bit timer. The 8032 had these same features except for the internal ROM program memory. Most modern "8051-compatible" microcontrollers include these features. Intel discontinued its MCS-51 product line in March 2007;[11][12] however, there are plenty of enhanced 8051 products or silicon intellectual property added regularly from other vendors. The 80C537 and 80C517 are CMOS versions, designed for the automotive industry. Enhancements mostly include new peripheral features and expanded arithmetic instructions. The 80C517 has fail-safe mechanisms, analog signal processing facilities and timer capabilities and 8 KB on-chip program memory. Other features include: - 256 byte on-chip RAM - 256 directly addressable bits - External program and data memory expandable up to 64 KB - 8-bit A/D converter with 12 multiplexed inputs - Arithmetic unit can make division, multiplication, shift and normalize operations - Eight data pointers instead of one for indirect addressing of program and external data memory - Extended watchdog facilities - Nine ports - Two full-duplex serial interfaces with own baud rate generators - Four priority level interrupt systems, 14 interrupt vectors - Three power saving modes Derivate vendors[edit] Current vendors of MCS-51 compatible processors include more than 20 independent manufacturers including Atmel, Infineon Technologies (formerly Siemens AG), Maxim Integrated Products (via its Dallas Semiconductor subsidiary), NXP (formerly Philips Semiconductor), Microchip Technology, Nuvoton (formerly Winbond), ST Microelectronics, Silicon Laboratories (formerly Cygnal), Texas Instruments, Ramtron International, Silicon Storage Technology, Cypress Semiconductor and Analog Devices.[13] ICs or IPs compatible with the MCS-51 have been developed by: - Acer Labs - Actel - Aeroflex UTMC - Altium - Analog Devices - ASIX - Atmel - AustriaMicroSystems - AXSEM - California Eastern Laboratories (CEL) - Cast - CML Microcircuits - CORERIVER - Cybernetic Micro Systems - CybraTech - Cypress Semiconductor - Daewoo - Dallas Semiconductor - Digital Core Design - Dolphin - Domosys - easyplug - EnOcean - Evatronix - Fairchild Semiconductor - Genesis Microchip - Genesys Logic - Goal Semiconductor - Handshake Solutions - Honeywell - Hynix Semiconductor - Infineon - InnovASIC - Intel - ISSI - Lapis Semiconductor - Maxim (Dallas Semiconductor) - Megawin - Mentor Graphics - Micronas - Microsemi - MXIC (Macronix) - Myson Technology - Nordic Semiconductor - Nuvoton (Winbond) - NXP (founded by Philips) - OKI - Oregano Systems - Palmchip - Prolific - Radio Pulse - Ramtron - RDC Semiconductor - Sanyo - Sharp - Sigma Designs - Silicon Laboratories (Cygnal) - Siliconians - SMSC - SST - STMicroelectronics - SyncMOS - Synopsys - Syntek Semiconductor - Tekmos - Teridian Semiconductor - Texas Instruments - Tezzaron Semiconductor - Triscend - Vitesse - Yitran - Zensys - Zilog - Zylogic Semiconductor Use as intellectual property[edit] Today, 8051s are still available as discrete parts, but they are mostly used as silicon intellectual property cores.[citation needed] Available in high-level language source code (VHDL or Verilog) or FPGA netlist forms, these cores are typically integrated within embedded systems, in products ranging from USB flash drives to washing machines to complex wireless communication systems on a chip. Designers use 8051 silicon IP cores, because of the smaller size, and lower power, compared to 32 bit processors like ARM M series, MIPS and BA22. Modern 8051 cores are faster than earlier packaged versions. Design improvements have increased 8051 performance while retaining compatibility with the original MCS 51 instruction set. The original Intel 8051 ran at 12 clock cycles per machine cycle, and most instructions executed in one or two machine cycles. A typical maximum clock frequency of 12 MHz meant these old 8051s could execute one million single-cycle instructions, or 500,000 two-cycle instructions, per second. In contrast, enhanced 8051 silicon IP cores now run at one clock cycle per machine cycle, and have clock frequencies of up to 450 MHz. That means an 8051-compatible processor can now execute 450 million instructions per second. MCU based on 8051[edit] - Infineon: XC800 - NXP: NXP700 and NXP900 series - Silicon Labs: C8051 series - Texas Instruments CC111x, CC24xx and CC25xx families of RF SoCs Digital signal processor (DSP) variants[edit] Several variants with an additional 16-bit digital signal processor (DSP) (for example for MP3 or OGG coding/decoding) with up to 675 million instructions per second (MIPS)[14] and integrated USB 2.0 interface[15] or as intellectual property[16] exist. Enhanced 8-bit binary compatible microcontroller: MCS-151 family[edit] 1996 Intel announced the MCS-151 family, an up to 6 times faster variant.[2] 8051 fully binary and instruction set compatible, but with pipelined CPU, 16 bit internal code bus and 6x speed. The MCS-151 family was also discontinued by Intel, but is widely available in binary compatible and partly enhanced variants. 8/16/32-bit binary compatible microcontroller: MCS-251 family[edit] The 8051 8/16/32-bit microcontroller with 16MB (24-bit) address-space and 6 times faster instruction cycle was introduced by Intel in 1996.[2][17] It can perform as an 8-bit 8051, has 24-bit external address space which is 16-bit wide segmented and 32-bit ALU with mostly 8/16/32-bit wide data instructions (also Boolean processor with special registers/memory) and a large CISC instruction set, 40 8/16/32-bit registers with 8 8-bit registers in 4 times fast switching memory banks (maximum 512 addressable 8-bit special registers). It features extended instructions[18] - see also the programmer's guide[19] - and later variants with higher performance,[20] also available as intellectual property (IP).[21] It is 3-stage pipelined. The MCS-251 family was also discontinued by Intel, but is widely available in binary compatible and partly enhanced variants from many manufacturers. See also[edit] References[edit] - ^ John Wharton: An Introduction to the Intel MCS-51 Single-Chip Microcomputer Family, Application Note AP-69, May 1980, Intel Corporation. - ^ a b c Intel MCS 151 and MCS 251 Microcontrollers - ^ John Wharton: Using the Intel MCS-51 Boolean Processing Capabilities Application Note AP-70, May 1980, Intel Corporation. - ^ 8051 Tutorial: Interrupts - ^ a b Bradford J. Rodriguez. "CamelForth/8051". - ^ a b Brad Rodriguez. "Moving Forth Part 7: CamelForth for the 8051". - ^ Han-Way Huang. "Embedded System Design with C8051". - ^ Lewin A. R. W. Edwards. "So, You Wanna be an Embedded Engineer: The Guide to Embedded Engineering, from Consultancy to the Corporate Ladder". - ^ "8051 SwiftX Forth development". - ^ "MPE VFX Forth 7 cross compilers". "Intel bows out, discontinues MCS-51". - ^ "MCS® 51, MCS® 251 and MCS® 96 Microcontroller Product Lines, the Intel® 186, Intel386™ and Intel486™ Processors Product Lines, and the i960® 32 Bit RISC Processor, PCN 106013-01, Product Discontinuance, Reason for Revision: Add Key Milestone information and revise description of change". Intel. - ^ http://www.analog.com/static/imported-files/data_sheets/ADUC832.pdf - ^ TI Delivers new low-cost, high-performance audio DSP for Home and Car w/ 8051 - ^ Atmel AT85C51SND3 Audio DSP Data Sheet with USB 2.0 - ^ Integration of 8051 With DSP in Xilinx FPGA - ^ The 8051 microcontroller By Kenneth J Ayala Google books - ^ Temic TSC80251 Architecture - ^ Atmel TSC80251 Programmers Guide - ^ DQ80251 32bit Microcontroller DCD - ^ R80251XC 32bit Microcontroller Evatronix Further reading[edit] - Books - The 8051 Microcontroller : A Systems Approach; Mazidi, McKinlay, Mazidi; 648 pages; 2012; ISBN 978-0135080443. - C and the 8051; 4th Edition; Thomas Schultz; 464 pages; 2008; ISBN 978-0978399504. - The 8051/8052 Microcontroller : Architecture, Assembly Language, and Hardware Interfacing; Craig Steiner; 348 pages; 2005; ISBN 978-1581124590. - 8051 Microcontrollers : Hardware, Software and Applications; Calcutt, Cowan, Parchizadeh; 329 pages; 2000; ISBN 978-0340677070. - The Microcontroller Idea Book : Circuits, Programs, and Applications featuring the 8052-BASIC Microcontroller; Jan Axelson; 277 pages; 1994; ISBN 978-0965081900. - Payne, William (December 19, 1990) [1990]. Embedded Controller FORTH for the 8051 Family (hardcover). Boston: Academic Press. - Intel - MCS-51 Microcontroller Family User's Manual; Intel; 1994; publication number 121517. - MCS-51 Macro Assembler User's Guide; Intel; publication number 9800937. - 8-Bit Embedded Controllers; Intel; 1991; publication number 270645-003. - Microcontroller Handbook; Intel; 1984; publication number 210918-002. - 8051 Microcontroller Preliminary Architectural Specification and Functional Description; Intel; 44 pages; 1980. External links[edit] - Complete tutorial for 8051 microcontrollers - Instruction set of 8051 microcontroller - the source website for tutorials and simulator for 8051 - Basic 8051 Interfacing Circuits - Open source VHDL 8051 implementation (Oregano Systems) This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.