# Getting started with a microprocessor

I'm reading about a microprocessors at the moment and wondering if I could get started with an 8-bit microprocessor. What would I need to get started. I understand that they need external RAM and ROM. I don't know whether it is still possible to get an Intel 8-bit one as my book is from 1980. So are there any other recommendations?. I am looking for the circuit diagrams for creating my own PCBs, is this advisable? Something like a single board computer is what I'm looking for.

• Simple microprocessors with external RAM, ROM and I/O are no longer made. If you want that sort of thing you will have to design your own using an FPGA. – Leon Heller Jan 14 '11 at 20:03
• :( thats not very good. I guess I will have to just carry on play with my AVRs. – Dean Jan 14 '11 at 20:09
• search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2556260 DigiKey's microprocessor section – Toby Jaffey Jan 14 '11 at 21:44
• The 6802 is probably the easiest chip, it combines CPU and RAM. Add an IO chip (6821 IIRC?) and an (E)EPROM and off you go (give or take an Xtal, 7805, and maybe a NAND port). I once did a single sided PCB for this, but never got to using it. Development with EPROM is a PITA! – Wouter van Ooijen Aug 27 '11 at 8:14

What are your design requirements or goals? Any areas you expect to need to learn more about, or any areas you wish to focus on?

Because most of the Intel 8-bit microprocessors were so popular they are fairly easy to find as New Old Stock (NOS) or Pulled/Refurbished (reclaimed/recycled, usually tested). At least the 8080, 8088, 8086, and 8085 are available from distributors or obsolete / old-stock supplies.

Two others that are worth considering would be the Zilog - Z80 (technical description), and MOS Technology 6502 (technical description). The Z80 was created by Federico Faggin, who designed Intel's 8080, and made the Z80 a binary compatible (but enhanced) processor.

The Z80 requires fewer support chips than the i8080 with built-in DRAM refresher, a single (5V) voltage supply requirement (i8080 required +/-5V and +12V), and can be run at any clock speed up to its specified speed (e.g. 2.5 MHz for the first NMOS models).

Combined with 5V power supply, oscillator clock (e.g. TTL/CMOS oscillator "can"), Static RAM (rather than Dynamic RAM, DRAM) you only need a ROM/EPROM/EEPROM and interface (e.g. interface chips for parallel or serial interfaces) to built a minimal microcomputer.

One fairly popular book on building your own microcomputer using the Z80 was Build Your Own Z80 Computer (available with copyright permission of author/publisher) by Steve Ciarcia. Also check out the (dated) alt.comp.hardware.homebuilt FAQ, and the N8VEM community for additional resources and references.

The MOS 6502 was the another popular microprocessor, in part because it was so much cheaper ($25 USD) than the Motorola 6800 which was originally$300 USD circa 1975. It was used in popular systems such as the Apple I from Apple Computers, Commodore KIM-1, PET, and Vic-20, BBC Micro, and the Commodore 64 and Atari 2600 game system used 6502 derivatives (6510 and 6507). So there is a lot of material available from retro-computing and retro-gaming people online, and parts. The 6502, like the Z80 was produced by several sources (i.e. second sourcing) including Rockwell in additional to the primary designer / manufacturer, MOS Technology.

If you have a particular (strong) interest in the x86 or IBM PC / XT history then a 8088 or 8086 might be a educational target to consider. Otherwise I would lean towards the Z80 as my first pick, and the 6502 as my second choice due to parts availability and resource material availability.

The range of options is unlimited from a microcomputer built from almost exclusively discrete transistors, to a 25MHz 32-bit MC68030 workstation.

• Thanks for that. I like the look of the z80 microcomputer thing. Going to luck round some used bookshops to see if i can find it. So can have a hard copy. – Dean Jan 14 '11 at 22:38
• if you want to play around with an 8 bit cpu, the z80 and 6502 are probably electrically the least complicated, as they present non-multiplexed buses, operate from a single 5V supply, and don't require multi-phase clocks. – JustJeff Jan 14 '11 at 23:30
• Don't forget the 6809, probably the most sexy 8-bitter ever! Just 59 basic instructions, but thanks to the most complete set of addressing modes good for 1464 variants. – stevenvh Jun 15 '11 at 7:13

I will advise to build some Single Board Computer with already developed firmware (monitor) - you can practice programming immediately without need to burn E/EPROMS, and later replace firmware with yours

if you prefer intel CPUs - something like this based on i8085 - you can download Hex file monitor program, PLD's JEDEC file and Complete Hardware Schematic.

You can populate only necessary portion of components

• I didn't know they were called a single board computer. – Dean Jan 14 '11 at 18:59

Here are two tutorials from my bookmarks:

http://mysite.du.edu/~jcalvert/tech/6504.htm

Homebuilt 8bit micros:

http://6502.org/homebuilt

If you want to play around with an 8 bit cpu, the z80 and 6502 are probably electrically the least complicated, as they present non-multiplexed buses, operate from a single 5V supply, and don't require multi-phase clocks. Older chips like the 8080 or the 6800 need multiple supply voltages. The 8035 and 8085 multiplex address and data, requiring you to supply an external register to latch part of the address bus. The 6809 has more powerful instructions, but the single clock 6809 variant is harder to find than the quadrature-phase clock 6809E.

The only real reason to build an SBC around one of these is for the fun of it. A system based on a modern microcontroller will be smaller, use less power, and out-perform the old dinosaurs in terms of instruction set and integrated peripherals.

• It is really for the fun of it. – Dean Jan 15 '11 at 0:03
• @Dean: right on, go for it. – JustJeff Jan 17 '11 at 1:29

I have a few simple PCB designs here for a variety of MCUs. Some of the chips have been superseded, but there are current devices that will drop straight in. Appropriate programming and debugging tools will be needed, they are available quite cheaply from the chip manufacturers.

Start by getting a more current book. Lots have changed, for example current microprocessor shave memory controllers on board. Then buy (don't build) a SBC, similar to as @jet suggested. And you may just want a higher-end microcontroller rather than a microprocessor.

• Can you recommend me a new title then please struggled to find something newer. – Dean Jan 14 '11 at 19:05

Whatever you do, start with a higher level language like C. I know you would learn more about the internals with asm, but if you want to get something done in a finite time asm is usually not the best route.

And look at the cost of the compiler ( and other tools ) in making price comparisons.

• C will certainly be more portable, but I've found I can also be very productive in assembly, using macros to effectively raise the level of the language, including to form program structures and eliminate the spaghetti. You get code that's more readable, bug-free, maintainable, concise, etc.. Macros can be used to gain many of the benefits of a high-level language, without forfeiting the performance, efficiency, and control benefits of assembly. I have an article about the relevance of assembly language today, on my 6502-oriented website, at wilsonminesco.com/AssyDefense . – Garth Wilson Jun 12 '15 at 8:36

The CMOS 6502 (65c02) and 65816 are still in production today, with no end in sight, made by Western Design Center (http://www.westerndesigncenter.com/). They are conservatively rated for 14MHz and have many hardware and software enhancements over the original MOS 6502. There is a huge amount of support for them at 6502.org and forum.6502.org. I have a 6502 primer at http://wilsonminesco.com/6502primer/index.html in 22 chapters covering address decoding, memory-map requirements, interrupt connections, 74xx logic families and timing margins (plus "Do I need bus transceivers?", and static-handling precautions), clock generation, reset circuits, what to do with the "mystery" pins, construction for good AC performance, expansion buses and interfaces, getting more on a board, answering wire-wrap questions and doubts, "What about custom PC boards?", I/O ICs (plus extra info on 6551 ACIA clocking options), displays, where to buy 65-family parts, general steps for a successful project, program-wiriting: "Where do I start?" (and what to put in your .asm file), debugging, programming tips (some affecting hardware design too), basic workbench equipment, and a potpourri of circuits to interface real-world stuff. Happy building!

• Neat that the 65C02 is still available, though I do like some of the undocumented instructions from the 6502 which are not implemented in the 65C02 [e.g. opcodes exist which load A and X simultaneously, which store the binary-AND of A and X, and even perform a decrement and compare]. Incidentally, I find it curious that ADC takes an extra cycle on the 65C02 when the D flag is set, and JMP (abs) always takes an extra cycle, for reasons I don't entirely understand. – supercat Apr 2 '13 at 3:08
• supercat, the 'c02 has new instructions and addressing modes that I think are more useful than the NMOS 6502's illegal ones. IIRC, the extra cycle in ADC in decimal mode is to make the resulting flags valid (which they weren't on the NMOS). JMP(xxFF) on the NMOS did not work right, and that bug (along with all the others in the NMOS) were fixed on the CMOS. With the CMOS's unused op codes, you can do ultra-fast I/O, down to single-cycle. See how at wilsonminesco.com/6502primer/potpourri.html#Jeff . The CMOS also has more I/O pins: bus enable, vector pull, and memory lock. – Garth Wilson Jun 12 '15 at 4:56
• The 65C02 did add some useful new features, but some of the undocumented NMOS features like the ones I mentioned were useful, and I think there would have been room in the 65C02 opcode map to keep them. The C flag works correctly on NMOS BCD, while N and Z would rarely be relevant. While JMP(abs) was odd, ensuring the destination didn't cross a page boundary was not burdensome, and I must confess I'm not sure why the CMOS designers didn't make it run in five cycles by jinxing the instruction sequencer so that JMP(abs) would start out being processed just like JMP, but instead of proceeding... – supercat Jun 12 '15 at 11:54
• ...to the first cycle of the next instruction, it would proceed to the second, and "pretend" that it had just fetched a \$4C. I would think using the PC to increment the address before fetching the MSB of the final destination would have been easier than using the ALU for that purpose. As it is, making JMP (abs) take six cycles negates some of the reason for its existence (the NMOS version saved a cycle vs. jumping to a JMP instruction). – supercat Jun 12 '15 at 11:57

I suggest you just start browsing relevant questions on the site. There are lots of options for 8-bit/16-bit microcontrollers out there, and they don't typically require external memories (though this depends on your application I suppose). Popular microcontrollers with good development tools out there today are Atmel AVRs, TI MSP430s, and Microchip PICs.

• I know about microcontrollers (I use AVRs) but not microprocessors which is what i want to learn about. – Dean Jan 14 '11 at 16:01
• @Dean, OK - so you're thinking along the lines of ARMs then... I don't think you're going to find 8-bit cores that are in the realm of "microprocessors" as compared to what you are terming "microcontrollers." – vicatcu Jan 14 '11 at 16:05
• It doesn't have to be 8-bit but thats what i'm reading about so would help with understanding. – Dean Jan 14 '11 at 16:11
• @vicatu, ARMs are microcontrollers. --> What's the difference between a microcontroller and a microprocessor? – tyblu Jan 14 '11 at 18:32
• @tyblu, I believe ARM are available both as microprocessors (external RAM/ROM, etc., e.g. TI ARM Cortex AM3517) and microcontrollers (NXP LPC series). – mctylr Jan 14 '11 at 21:00