SlideShare une entreprise Scribd logo
1  sur  111
Télécharger pour lire hors ligne
1/28/13	
  
1	
  
Microprocessor	
  and	
  
Microcontroller	
  
66428	
  
Dr.	
  Sufyan	
  Samara	
  
Course	
  Outline	
  •  Objec>ves:	
  
–  Provides	
  and	
  overview	
  of	
  Microcontroller	
  architecture,	
  Address	
  modes	
  and	
  
instruc>on	
  sets.	
  Subrou>nes	
  and	
  interrupts.	
  Handling	
  soKware	
  tools	
  including	
  
IDE,	
  editor,	
  assembler,	
  simulator	
  and	
  C	
  compiler.	
  Interface	
  techniques	
  including	
  
parallel,	
  serial,	
  >mer,	
  and	
  analogue	
  peripheral	
  interface.	
  
•  Course	
  outline:	
  
•  THE	
  MICROPROCESSOR,	
  THE	
  MICROCONTROLLERS,	
  AND	
  THIER	
  
ARCHITECTUREs	
  
–  Internal	
  Microprocessor	
  Architecture	
  	
  
–  Internal	
  Microcontroller	
  Architecture	
  
–  Overview	
  of	
  memories	
  
–  The	
  Microchip	
  PIC	
  family	
  
•  Microcontrollers	
  	
  
–  Program	
  memory	
  and	
  the	
  stack,	
  Memory	
  and	
  memory	
  map	
  
–  Data	
  and	
  Special	
  Func>on	
  register	
  memory	
  
–  The	
  Configura>on	
  Word	
  
–  Some	
  issues	
  of	
  >ming,	
  pipelining,	
  power	
  up,	
  and	
  reset.	
  
–  Parallel	
  ports	
  and	
  the	
  clock	
  oscillator	
  
–  Microchip	
  instruc>on	
  set	
  and	
  the	
  MPLAB	
  
–  Working	
  with	
  C	
  programs	
  and	
  simulators	
  
–  Working	
  with	
  ADC	
  and	
  DAC	
  
–  Serial	
  and	
  parallel	
  interfaces	
  
1/28/13	
  
2	
  
Course	
  outline	
  –	
  cont.	
  
•  Microprocessors	
  
–  The	
  Intel	
  8088/8086	
  
–  Architecture,	
  addressing	
  modes	
  and	
  memory	
  mapping	
  
•  Address	
  modes	
  and	
  instruc@on	
  sets	
  
–  Data-­‐Addressing	
  Modes	
  
–  Program	
  Memory-­‐Addressing	
  Modes	
  and	
  stacks	
  
–  Intel	
  Instruc>on	
  set	
  and	
  the	
  MASM	
  assembler	
  
•  Working	
  with	
  @me:	
  interrupts,	
  counters	
  and	
  @mers	
  
–  Basic	
  interrupt	
  processing	
  
–  Working	
  with	
  interrupts	
  
–  The	
  main	
  idea	
  –	
  counters	
  and	
  >mers	
  
–  Working	
  with	
  >mers	
  
•  A	
  look	
  over	
  the	
  larger	
  microcontrollers	
  
–  16-­‐	
  bit	
  microcontrollers	
  
–  32-­‐bit	
  microcontrollers	
  
•  Textbook:	
  
–  Microchip	
  PIC	
  mid	
  range	
  manual	
  from	
  the	
  microchip	
  web	
  site	
  
Exams	
  
– First	
  Exam	
  	
  24/2/2013	
  
– Second	
  Exam	
  31/3/2013	
  
– Project	
  Deadline	
  22/4/2013	
  
– Final	
  Exam	
  decided	
  by	
  the	
  UNI	
  	
  
1/28/13	
  
3	
  
•  Microcontroller	
  architecture.	
  Address	
  modes	
  
and	
  instruc>on	
  sets.	
  Subrou>nes	
  and	
  
interrupts.	
  Handling	
  soKware	
  tools	
  including	
  
IDE,	
  editor,	
  assembler,	
  simulator	
  and	
  C	
  
compiler.	
  Interface	
  techniques	
  including	
  
parallel,	
  serial,	
  >mer,	
  and	
  analogue	
  peripheral	
  
interface.	
  
History	
  •  In	
  the	
  year	
  1969,	
  first	
  microprocessor	
  was	
  born.	
  	
  
•  In	
  1971	
  Intel	
  obtained	
  the	
  right	
  to	
  sell	
  this	
  integrated	
  circuit.	
  
–  Before	
  that	
  Intel	
  bought	
  the	
  license	
  from	
  the	
  Japanese	
  company	
  BUSICOM	
  company	
  which	
  first	
  came	
  with	
  the	
  idea.	
  	
  
•  During	
  that	
  year,	
  a	
  microprocessor	
  called	
  the	
  4004	
  appeared	
  on	
  the	
  market.	
  	
  
–  The	
  first	
  4-­‐bit	
  microprocessor	
  with	
  the	
  speed	
  of	
  6000	
  opera>ons	
  per	
  second.	
  	
  
•  Not	
  long	
  aKer	
  that,	
  American	
  company	
  CTC	
  requested	
  from	
  Intel	
  and	
  Texas	
  Instruments	
  to	
  manufacture	
  8-­‐bit	
  
microprocessor.	
  
–  In	
  April	
  1972	
  the	
  first	
  8-­‐bit	
  microprocessor	
  called	
  the	
  8008	
  appeared	
  on	
  the	
  market.	
  	
  
–  It	
  was	
  able	
  to	
  address	
  16Kb	
  of	
  memory,	
  had	
  45	
  instruc>ons	
  and	
  the	
  speed	
  of	
  300	
  000	
  opera>ons	
  per	
  second.	
  That	
  microprocessor	
  
was	
  the	
  predecessor	
  of	
  all	
  today’s	
  microprocessors.	
  	
  
•  In	
  April	
  1974,	
  Intel	
  launched	
  8-­‐bit	
  processor	
  called	
  the	
  8080.	
  	
  
–  Address	
  64Kb	
  of	
  memory,	
  had	
  75	
  instruc>ons	
  and	
  ini>al	
  price	
  was	
  $360.	
  
•  In	
  another	
  company	
  called	
  Motorola	
  launched	
  8-­‐bit	
  microprocessor	
  6800.	
  
•  At	
  the	
  WESCON	
  exhibi>on	
  in	
  the	
  USA	
  in	
  1975,	
  MOS	
  Technology	
  announced	
  that	
  it	
  was	
  selling	
  processors	
  6501	
  and	
  
•  6502	
  at	
  $25	
  each.	
  	
  
–  In	
  response	
  to	
  the	
  compe>tor,	
  both	
  Motorola	
  and	
  Intel	
  cut	
  the	
  prices	
  of	
  their	
  microprocessors	
  to	
  $69.95.	
  	
  
•  Due	
  to	
  low	
  price,	
  6502	
  became	
  very	
  popular	
  so	
  it	
  was	
  installed	
  into	
  computers	
  such	
  as	
  KIM-­‐1,	
  Apple	
  I,	
  Apple	
  
•  II,	
  Atari,	
  Commodore,	
  Acorn,	
  Oric,	
  Galeb,	
  Orao,	
  Ultra	
  and	
  many	
  others.	
  	
  
•  Soon	
  appeared	
  several	
  companies	
  manufacturing	
  the	
  6502	
  (Rockwell,	
  Sznertek,	
  GTE,	
  NCR,	
  Ricoh,	
  Commodore	
  took	
  
•  over	
  MOS	
  Technology).	
  	
  
•  Other	
  companies	
  such	
  as	
  Zilog	
  Inc	
  have	
  their	
  own	
  microprocessor.	
  	
  
–  In	
  1976	
  Zilog	
  announced	
  the	
  Z80.	
  When	
  designing	
  this	
  microprocessor	
  Faggin	
  
–  The	
  new	
  processor	
  was	
  compa>ble	
  with	
  the	
  8080,	
  i.e.	
  it	
  was	
  able	
  to	
  perform	
  all	
  the	
  programs	
  wriien	
  for	
  the	
  8080.	
  	
  
–  Apart	
  from	
  that,	
  many	
  other	
  features	
  was	
  included	
  so	
  that	
  the	
  Z80	
  was	
  the	
  most	
  powerful	
  microprocessor	
  at	
  that	
  >me.	
  	
  
–  It	
  was	
  able	
  to	
  directly	
  address	
  64Kb	
  of	
  memory,	
  had	
  176	
  instruc>ons,	
  a	
  large	
  number	
  of	
  registers,	
  built	
  in	
  op>on	
  for	
  refreshing	
  
dynamic	
  RAM	
  memory,	
  	
  single	
  power	
  supply,	
  greater	
  opera>ng	
  speed	
  etc.	
  	
  
–  The	
  Z80	
  was	
  a	
  great	
  success	
  and	
  everybody	
  replaced	
  the	
  8080	
  by	
  the	
  Z80.	
  	
  
•  In	
  1976	
  Intel	
  came	
  up	
  with	
  an	
  upgraded	
  version	
  of	
  8-­‐bit	
  microprocessor	
  called	
  the	
  8085.	
  However,	
  the	
  Z80	
  was	
  so	
  
much	
  beier	
  that	
  Intel	
  lost	
  the	
  baile.	
  	
  
•  Even	
  though	
  a	
  few	
  more	
  microprocessors	
  appeared	
  later	
  on	
  the	
  market	
  (6809,	
  2650,	
  SC/MP	
  etc.),	
  everything	
  was	
  
actually	
  decided.	
  There	
  were	
  no	
  such	
  great	
  improvements	
  which	
  could	
  make	
  manufacturers	
  to	
  change	
  their	
  mind,	
  so	
  
the	
  6502	
  and	
  Z80	
  along	
  with	
  the	
  6800	
  remained	
  chief	
  representa>ves	
  of	
  the	
  8-­‐bit	
  microprocessors	
  of	
  that	
  >me.	
  
1/28/13	
  
4	
  
uProcessors	
  <	
  uControllers	
  <	
  SoCs	
  
Microprocessors	
  (uP)	
  differ	
  from	
  
microcontrollers	
  (uC)	
  
uC:	
  suited	
  for	
  controlling	
  I/O	
  devices	
  that	
  requires	
  a	
  minimum	
  component	
  count	
  	
  
uP:	
  suited	
  for	
  processing	
  informa>on	
  in	
  computer	
  systems	
  	
  
Instruc>on	
  sets:	
  	
  
	
  	
  	
  	
  	
  uP:	
  processing	
  intensive	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  powerful	
  addressing	
  modes	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  instruc>ons	
  to	
  perform	
  complex	
  opera>ons	
  &	
  manipulate	
  large	
  volumes	
  of	
  data	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  processing	
  	
  capability	
  of	
  MCs	
  never	
  approaches	
  those	
  of	
  MPs	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  large	
  instruc>ons	
  -­‐-­‐	
  e.g.,	
  80X86	
  7-­‐byte	
  long	
  instruc>ons	
  	
  
	
  	
  	
  	
  uC:	
  cater	
  to	
  control	
  of	
  inputs	
  and	
  outputs	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  instruc>ons	
  to	
  set/clear	
  bits	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  boolean	
  opera>ons	
  (AND,	
  OR,	
  XOR,	
  NOT,	
  jump	
  if	
  a	
  bit	
  is	
  set/cleared),	
  etc.	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Extremely	
  compact	
  instruc>ons,	
  many	
  implemented	
  in	
  one	
  byte	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (Control	
  program	
  must	
  oKen	
  fit	
  in	
  the	
  small,	
  on-­‐chip	
  ROM)	
  	
  
Hardware	
  &	
  Instruc>onset	
  support:	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  uC:	
  built-­‐in	
  I/O	
  opera>ons,	
  event	
  >ming,	
  enabling	
  &	
  senng	
  up	
  priority	
  levels	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  for	
  interrupts	
  caused	
  by	
  external	
  s>muli	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  uP:	
  usually	
  require	
  external	
  circuitry	
  to	
  do	
  similar	
  things	
  (e.g,	
  8255	
  PPI,	
  8259	
  etc)	
  
1/28/13	
  
5	
  
Microprocessors	
  (uP)	
  and	
  
microcontrollers	
  (uC)	
  
Bus	
  widths:	
  	
  
	
  	
  	
  	
  	
  uP:	
  very	
  wide	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  large	
  memory	
  address	
  spaces	
  (>4	
  Gbytes)	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  lots	
  of	
  data	
  (Data	
  bus:	
  32,	
  64,	
  128	
  bits	
  wide)	
  	
  
	
  	
  	
  	
  uC:	
  narrow	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rela>vely	
  small	
  memory	
  address	
  spaces	
  (typically	
  kBytes)	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  less	
  data	
  (Data	
  bus	
  typically	
  4,	
  8,	
  16	
  bits	
  wide)	
  	
  
Clock	
  rates:	
  	
  
	
  	
  	
  	
  	
  uP	
  very	
  fast	
  (>	
  1	
  GHz)	
  	
  
	
  	
  	
  	
  	
  uC:	
  Rela>vely	
  slow	
  (typically	
  10-­‐20	
  MHz)	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  since	
  most	
  I/O	
  devices	
  being	
  controlled	
  are	
  rela>vely	
  slow	
  	
  
Cost:	
  	
  
	
  	
  	
  	
  	
  uP's	
  expensive	
  (oKen	
  >	
  $100)	
  	
  
	
  	
  	
  	
  	
  uCs	
  cheap	
  (oKen	
  $1	
  -­‐	
  $10)	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  4-­‐bit:	
  	
  <	
  $1.00	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  8-­‐bit:	
  	
  $1.00	
  -­‐	
  $8.00	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  16-­‐32-­‐bit:	
  	
  $6.00	
  -­‐	
  $20.00	
  	
  
1/28/13	
  
6	
  
	
  A	
  generic	
  microcontroller	
  
System-­‐on-­‐a-­‐chip	
  
Compare	
  to	
  lab-­‐on-­‐a-­‐chip	
  
ideas	
  
1/28/13	
  
7	
  
Example:	
  PSoC	
  (Cypress)	
  
Example	
  of	
  circuit	
  	
  
•  No>ce	
  the	
  processor/controller	
  
•  What	
  does	
  it	
  do?	
  
1/28/13	
  
8	
  
Find	
  the	
  microcontroller…	
  
1/28/13	
  
9	
  
Can	
  you	
  guess	
  what	
  this	
  circuit	
  does?	
  
1/28/13	
  
10	
  
Memory	
  types	
  
•  Vola>le.	
  This	
  is	
  memory	
  that	
  only	
  works	
  as	
  long	
  as	
  it	
  is	
  powered.	
  
It	
  loses	
  its	
  stored	
  value	
  when	
  power	
  is	
  removed,	
  but	
  can	
  be	
  used	
  
as	
  memory	
  for	
  temporary	
  data	
  storage.	
  	
  
–  commonly	
  been	
  called	
  RAM	
  (Random	
  Access	
  Memory)	
  
•  Non-­‐vola>le.	
  This	
  is	
  memory	
  that	
  retains	
  its	
  stored	
  value	
  even	
  
when	
  power	
  is	
  removed.	
  
–  hard	
  disk	
  
–  In	
  an	
  embedded	
  system	
  it	
  is	
  achieved	
  using	
  non-­‐vola>le	
  semiconductor	
  
memory,	
  commonly	
  been	
  called	
  ROM	
  (Read-­‐Only	
  Memory)	
  
•  An	
  ideal	
  memory	
  reads	
  and	
  writes	
  in	
  negligible	
  >me,	
  retains	
  its	
  
stored	
  value	
  indefinitely,	
  occupies	
  negligible	
  space	
  and	
  consumes	
  
negligible	
  power.	
  	
  
–  In	
  prac>ce	
  no	
  memory	
  technology	
  meets	
  all	
  these	
  happy	
  ideals	
  
	
  
Memory	
  –	
  cont.	
  
•  Sta>c	
  RAM	
  (SRAM)	
  
–  Each	
  memory	
  cell	
  is	
  designed	
  as	
  a	
  simple	
  flip-­‐flop.	
  
–  Data	
  is	
  held	
  only	
  as	
  long	
  as	
  power	
  is	
  supplied	
  (vola>le).	
  
–  Consume	
  very	
  liile	
  power,	
  and	
  can	
  retain	
  its	
  data	
  down	
  to	
  a	
  low	
  voltage	
  
(around	
  2	
  V).	
  
–  Each	
  cell	
  taking	
  six	
  transistors,	
  SRAM	
  is	
  not	
  a	
  high-­‐density	
  technology.	
  
•  EPROM	
  (Erasable	
  Programmable	
  Read-­‐Only	
  Memory)	
  
–  erased	
  by	
  exposing	
  it	
  to	
  intense	
  ultraviolet	
  light.	
  
–  each	
  memory	
  cell	
  is	
  made	
  of	
  a	
  single	
  MOS	
  transistor	
  (very	
  high	
  density	
  
and	
  robust)	
  
–  Within	
  the	
  transistor	
  there	
  is	
  embedded	
  a	
  ‘floa>ng	
  gate’.	
  Using	
  a	
  
technique	
  known	
  as	
  hot	
  electron	
  injec>on	
  (HEI),	
  the	
  floa>ng	
  gate	
  can	
  be	
  
charged.	
  When	
  it	
  is	
  not	
  charged,	
  the	
  transistor	
  behaves	
  normally	
  and	
  the	
  
cell	
  output	
  takes	
  one	
  logic	
  state	
  when	
  ac>vated.	
  When	
  it	
  is	
  charged,	
  the	
  
transistor	
  no	
  longer	
  works	
  properly	
  and	
  it	
  no	
  longer	
  responds	
  when	
  it	
  is	
  
ac>vated.	
  The	
  charge	
  placed	
  on	
  the	
  floa>ng	
  gate	
  is	
  totally	
  trapped	
  by	
  the	
  
surrounding	
  insulator.	
  Hence	
  EPROM	
  technology	
  is	
  non-­‐vola>le.	
  
–  Requires	
  quartz	
  window	
  and	
  ceramic	
  packaging.	
  
–  As	
  a	
  technology,	
  EPROM	
  has	
  now	
  almost	
  completely	
  given	
  way	
  to	
  Flash	
  
1/28/13	
  
11	
  
Memory	
  –	
  cont.	
  
•  EEPROM	
  (Electrically	
  Erasable	
  Programmable	
  Read-­‐
Only	
  Memory)	
  	
  
–  Uses	
  floa>ng	
  gate	
  technology.	
  
•  This	
  is	
  known	
  as	
  Nordheim–Fowler	
  tunnelling	
  (NFT).	
  
•  With	
  NFT,	
  it	
  is	
  possible	
  to	
  electrically	
  erase	
  the	
  memory	
  cell	
  as	
  well	
  
as	
  write	
  to	
  it.	
  
•  To	
  allow	
  this	
  to	
  happen,	
  a	
  number	
  of	
  switching	
  transistors	
  need	
  to	
  
be	
  included	
  around	
  the	
  memory	
  element	
  itself,	
  so	
  the	
  high	
  density	
  
of	
  EPROM	
  is	
  lost.	
  
•  EEPROM	
  is	
  non-­‐vola>le	
  
–  Because	
  the	
  charge	
  on	
  the	
  floa>ng	
  gate	
  is	
  totally	
  trapped	
  by	
  the	
  
surrounding	
  insulator	
  
•  Write	
  and	
  erase	
  byte	
  by	
  byte.	
  
•  Flash	
  
–  A	
  further	
  evolu>on	
  of	
  floa>ng-­‐gate	
  technology.	
  
–  can	
  only	
  erase	
  in	
  blocks.	
  
–  Non-­‐vola>le	
  	
  
Organizing	
  memory	
  
•  Two	
  important	
  buses	
  
–  Address	
  
–  Data	
  
•  Two	
  architectures	
  	
  
–  Von Neumann architecture
•  One bus for data and one for address
•  Serve for memory and others (program and I/O)
•  Disadvantages:	
  	
  
–  uses	
  the	
  same	
  data	
  bus	
  for	
  all	
  sizes	
  (areas)	
  of	
  memory	
  
–  Shared	
  between	
  many	
  things,	
  can	
  be	
  used	
  for	
  one	
  thing	
  at	
  a	
  	
  >me	
  
–  The	
  Harvard	
  architecture
•  Every	
  memory	
  area	
  gets	
  its	
  own	
  address	
  bus	
  and	
  its	
  own	
  data	
  bus	
  
•  Disadvantages:	
  
–  Complex	
  
–  Data	
  and	
  program	
  are	
  separated	
  (tables	
  inside	
  program	
  memory	
  can’t	
  be	
  treated	
  as	
  data)	
  	
  
1/28/13	
  
12	
  
(a)	
  The	
  Von	
  Neumann	
  way.	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (b)	
  The	
  Harvard	
  way	
  	
  	
  
uC	
  
•  Many	
  families	
  
–  Each	
  family	
  is	
  generally	
  the	
  same	
  processor	
  core	
  with	
  
different	
  peripherals	
  combina>on	
  and	
  different	
  
memory	
  size.	
  
–  One	
  core	
  might	
  be	
  8-­‐bit	
  with	
  limited	
  power,	
  another	
  
16-­‐bit	
  and	
  another	
  a	
  sophis>cated	
  32-­‐bit	
  machine.	
  	
  
–  Because	
  the	
  core	
  is	
  fixed	
  for	
  all	
  members	
  of	
  one	
  family,	
  
the	
  instruc>on	
  set	
  is	
  fixed	
  and	
  users	
  have	
  liile	
  difficulty	
  
in	
  moving	
  from	
  one	
  family	
  member	
  to	
  another.	
  
1/28/13	
  
13	
  
Microcontroller	
  packaging	
  and	
  appearance	
  
•  Usually	
  plas>c	
  or	
  ceramic	
  are	
  used	
  as	
  the	
  packaging	
  material.	
  
•  Interconnec>on	
  with	
  the	
  outside	
  world	
  is	
  provided	
  by	
  the	
  pins	
  on	
  the	
  
package	
  
•  Dual-­‐in-­‐line	
  package	
  (DIP),	
  with	
  its	
  pins	
  arranged	
  in	
  two	
  rows	
  along	
  the	
  
longer	
  sides	
  of	
  the	
  IC,	
  the	
  pin	
  spacing	
  being	
  0.1	
  inches	
  
•  Other	
  incudes:	
  Pin	
  grid	
  array	
  (PGA),	
  leadless	
  chip	
  carrier	
  (LCC)	
  packages,	
  
Small-­‐outline	
  integrated	
  circuit	
  (SOIC),	
  Plas>c	
  leaded	
  chip	
  carrier	
  (PLCC)	
  
packages,	
  plas>c	
  quad	
  flat	
  pack(PQFP),	
  and	
  thin	
  small-­‐outline	
  packages	
  
(TSOP)	
  
–  Used	
  when	
  number	
  of	
  pins	
  is	
  very	
  large	
  compared	
  to	
  IC	
  size	
  
	
  A	
  collec>on	
  of	
  microprocessors	
  and	
  microcontrollers	
  –	
  old	
  and	
  new.	
  From	
  leK	
  to	
  right:	
  
PIC	
  12F508,	
  PIC	
  16F84A,	
  PIC	
  16C72,	
  Motorola	
  68HC705B16,	
  PIC	
  16F877,	
  Motorola	
  68000	
  
Microchip	
  and	
  the	
  PIC	
  microcontroller	
  
•  Has	
  a	
  wide	
  range	
  of	
  different	
  families	
  
–  8-­‐bit,	
  16-­‐bit,	
  32-­‐bit	
  	
  
•  All	
  8-­‐bit	
  PIC	
  microcontrollers	
  are	
  lowcost,	
  self-­‐contained,	
  pipelined,	
  RISC,	
  
use	
  the	
  Harvard	
  structure,	
  have	
  a	
  single	
  accumulator	
  (the	
  Working,	
  or	
  W,	
  
register),	
  with	
  a	
  fixed	
  reset	
  vector.	
  
•  Microchip	
  offer	
  8-­‐bit	
  microcontrollers	
  with	
  four	
  different	
  prefixes,	
  10-­‐,	
  12-­‐,	
  
16-­‐,	
  and	
  18-­‐,	
  for	
  example	
  10F200,	
  or	
  18F242.	
  We	
  call	
  each	
  a	
  ‘Series’,	
  for	
  
example	
  ‘12	
  Series’,	
  ‘16	
  Series’,	
  ‘18	
  Series’.	
  	
  
–  Each	
  Series	
  is	
  iden>fied	
  by	
  the	
  first	
  two	
  digits	
  of	
  the	
  device	
  code.	
  
•  Leiers	
  are	
  used	
  as	
  follows:	
  
–  The	
  ‘C’	
  insert	
  implies	
  CMOS	
  technology	
  
–  The	
  ‘F’	
  insert	
  indicates	
  incorpora>on	
  of	
  Flash	
  memory	
  technology	
  (s>ll	
  using	
  
CMOS	
  as	
  the	
  core	
  technology).	
  	
  
–  An	
  ‘A’	
  aKer	
  the	
  number	
  indicates	
  a	
  technological	
  upgrade	
  on	
  the	
  first	
  issue	
  
device.	
  	
  
–  An	
  ‘X’	
  indicates	
  that	
  a	
  certain	
  digit	
  can	
  take	
  a	
  number	
  of	
  values.	
  
–  For	
  example,	
  the	
  16C84,	
  the	
  16F84,	
  and	
  the	
  16F84A.	
  
•  In	
  some	
  cases	
  microcontrollers	
  of	
  one	
  Series	
  can	
  fall	
  into	
  more	
  than	
  one	
  
family.	
  	
  
1/28/13	
  
14	
  
Comparison	
  of	
  8-­‐bit	
  PIC	
  families	
  
•  Every	
  member	
  of	
  any	
  one	
  family	
  shares	
  the	
  same	
  core	
  architecture	
  
and	
  instruc>on	
  set.	
  	
  
•  The	
  processing	
  power	
  is	
  defined	
  to	
  some	
  extent	
  by	
  the	
  parameters	
  
quoted,	
  for	
  example	
  the	
  instruc>on	
  word	
  size,	
  and	
  the	
  number	
  of	
  
instruc>ons.	
  	
  
An	
  introduc>on	
  to	
  PIC	
  microcontrollers	
  
using	
  the	
  Baseline	
  Series	
  
•  We	
  will	
  look	
  at	
  the	
  PIC	
  12F508/509.	
  
•  The	
  only	
  difference	
  between	
  the	
  508	
  and	
  509	
  is	
  that	
  the	
  laier	
  
has	
  slightly	
  larger	
  program	
  and	
  data	
  memories.	
  
1/28/13	
  
15	
  
The	
  architecture	
  of	
  the	
  12F508	
  
The	
  architecture	
  of	
  the	
  12F508	
  –	
  cont.	
  
•  As	
  this	
  microcontroller	
  is	
  a	
  RISC	
  computer,	
  each	
  instruc>on	
  word	
  must	
  
carry	
  not	
  only	
  the	
  instruc>on	
  code	
  itself,	
  but	
  also	
  any	
  address	
  or	
  data	
  
informa>on	
  needed.	
  
•  Depending	
  on	
  the	
  instruc>on	
  itself,	
  five	
  bits	
  of	
  the	
  instruc>on	
  word	
  may	
  
carry	
  address	
  informa>on	
  and	
  hence	
  be	
  sent	
  down	
  the	
  ‘Direct	
  Addr’	
  bus	
  
to	
  the	
  address	
  mul>plexer	
  (‘Addr	
  MUX’).	
  Eight	
  bits	
  of	
  the	
  instruc>on	
  word	
  
may	
  carry	
  a	
  data	
  byte	
  that	
  is	
  to	
  be	
  used	
  as	
  literal	
  data	
  for	
  the	
  execu>on	
  of	
  
that	
  instruc>on.	
  This	
  goes	
  to	
  the	
  mul>plexer	
  (‘MUX’),	
  which	
  feeds	
  into	
  the	
  
ALU.	
  Finally,	
  there	
  is	
  the	
  instruc>on	
  data	
  itself,	
  which	
  feeds	
  into	
  the	
  
‘Instruc>on	
  Decode	
  and	
  Control’	
  unit.	
  
•  A	
  ‘Power-­‐on	
  Reset’	
  func>on	
  detects	
  when	
  power	
  is	
  applied	
  and	
  holds	
  the	
  
microcontroller	
  in	
  a	
  Reset	
  condi>on	
  while	
  the	
  power	
  supply	
  stabilizes.	
  
•  The	
  MCLR	
  input	
  can	
  be	
  used	
  to	
  place	
  the	
  CPU	
  in	
  a	
  Reset	
  condi>on	
  and	
  to	
  
force	
  the	
  program	
  to	
  start	
  again.	
  	
  
–  An	
  internal	
  clock	
  oscillator	
  (‘Internal	
  RC	
  OSC’)	
  is	
  provided	
  so	
  that	
  no	
  external	
  pins	
  
whatsoever	
  need	
  be	
  commiied	
  to	
  this	
  func>on.	
  	
  
–  External	
  oscillator	
  connec>ons	
  can,	
  however,	
  be	
  made,	
  using	
  input/output	
  pins	
  
GP4	
  and	
  GP5.	
  The	
  oscillator	
  signal	
  is	
  condi>oned	
  for	
  use	
  through	
  the	
  
microcontroller	
  in	
  the	
  ‘Timing	
  Genera>on’	
  unit.	
  	
  
•  The	
  ‘Watchdog	
  Timer’	
  is	
  a	
  safety	
  feature,	
  used	
  to	
  force	
  a	
  reset	
  in	
  the	
  
processor	
  if	
  it	
  crashes.	
  
1/28/13	
  
16	
  
The	
  PIC	
  16F877	
  
•  We	
  will	
  concentrate	
  on	
  just	
  one	
  device,	
  the	
  PIC	
  
16F877	
  
–  A	
  good	
  range	
  of	
  features	
  and	
  allows	
  most	
  of	
  the	
  
essen>al	
  techniques	
  to	
  be	
  explained.	
  	
  
–  It	
  has	
  a	
  set	
  of	
  serial	
  ports	
  built	
  in,	
  which	
  are	
  used	
  to	
  
transfer	
  data	
  to	
  and	
  from	
  other	
  devices,	
  as	
  well	
  as	
  
analogue	
  inputs,	
  which	
  allow	
  measurement	
  of	
  inputs	
  
such	
  as	
  temperature.	
  	
  
–  All	
  standard	
  types	
  of	
  microcontrollers	
  work	
  in	
  a	
  similar	
  
way,	
  so	
  analysis	
  of	
  one	
  will	
  make	
  it	
  possible	
  to	
  
understand	
  all	
  the	
  others.	
  
MCU	
  
•  The	
  microcontroller	
  contains	
  the	
  same	
  main	
  elements	
  as	
  any	
  computer	
  
system:	
  
–  Processor	
  
–  Memory	
  
–  Input/Output	
  
•  In	
  a	
  PC,	
  these	
  are	
  provided	
  as	
  separate	
  chips,	
  linked	
  together	
  via	
  bus	
  
connec>ons	
  on	
  a	
  printed	
  circuit	
  board,	
  but	
  under	
  the	
  control	
  of	
  the	
  
microprocessor	
  (CPU).	
  	
  
•  A	
  bus	
  is	
  a	
  set	
  of	
  lines	
  which	
  carry	
  data	
  in	
  parallel	
  form	
  which	
  are	
  shared	
  by	
  
the	
  peripheral	
  devices.	
  	
  	
  
•  The	
  system	
  can	
  be	
  designed	
  to	
  suit	
  a	
  par>cular	
  applica>on,	
  with	
  the	
  type	
  
of	
  CPU,	
  size	
  of	
  memory	
  and	
  selec>on	
  of	
  input/output	
  (I/O)	
  devices	
  
tailored	
  to	
  the	
  system	
  requirements.	
  
•  In	
  the	
  microcontroller,	
  all	
  these	
  elements	
  are	
  on	
  one	
  chip.	
  This	
  means	
  that	
  
the	
  MCU	
  (microcontroller)	
  for	
  a	
  par>cular	
  applica>on	
  must	
  be	
  chosen	
  
from	
  the	
  available	
  range	
  to	
  suit	
  the	
  requirements.	
  	
  
1/28/13	
  
17	
  
Execu>on,	
  revisited	
  
Memory,	
  revisited	
  
1/28/13	
  
18	
  
Input	
  and	
  Output	
  
•  Ports	
  are	
  based	
  on	
  a	
  data	
  register,	
  and	
  set	
  of	
  control	
  
registers,	
  which	
  pass	
  the	
  data	
  in	
  and	
  out	
  in	
  a	
  controlled	
  
manner,	
  oKen	
  according	
  to	
  a	
  standard	
  protocol	
  (method	
  of	
  
communica>on).	
  	
  
•  There	
  are	
  two	
  main	
  types	
  of	
  port:	
  	
  
–  (a)	
  Parallel	
  port,	
  the	
  data	
  is	
  usually	
  transferred	
  in	
  and	
  out	
  8	
  bits	
  at	
  a	
  
>me	
  
–  (b)	
  Serial	
  port,	
  the	
  data	
  is	
  transmiied	
  1	
  bit	
  at	
  a	
  >me	
  on	
  a	
  single	
  
line.	
  	
  
–  Poten>ally,	
  the	
  parallel	
  port	
  is	
  faster,	
  but	
  needs	
  more	
  pins;	
  on	
  the	
  
other	
  hand,	
  the	
  port	
  hardware	
  and	
  driver	
  soKware	
  are	
  simpler,	
  
because	
  the	
  serial	
  port	
  must	
  organize	
  the	
  data	
  in	
  groups	
  of	
  bits,	
  
usually	
  1	
  byte	
  at	
  a	
  >me,	
  or	
  in	
  packets,	
  as	
  in	
  a	
  network	
  
PIC	
  16F877	
  Architecture	
  
•  Microcontrollers	
  contain	
  all	
  the	
  components	
  
required	
  for	
  a	
  processor	
  system	
  in	
  one	
  chip:	
  a	
  
CPU,	
  memory	
  and	
  I/O.	
  	
  
•  A	
  complete	
  system	
  can	
  therefore	
  be	
  built	
  
using	
  one	
  MCU	
  chip	
  and	
  a	
  few	
  I/O	
  devices	
  
such	
  as	
  a	
  keypad,	
  display	
  and	
  other	
  interfacing	
  
circuits.	
  
1/28/13	
  
19	
  
Some	
  members	
  of	
  the	
  PIC	
  mid-­‐range	
  family	
  
Some	
  members	
  of	
  the	
  PIC	
  mid-­‐range	
  family	
  –	
  cont.	
  
1/28/13	
  
20	
  
An	
  architecture	
  
overview	
  of	
  the	
  
PIC16F877	
  
PIC	
  16F877	
  Pin	
  IN/Out	
  	
  
•  The	
  chip	
  can	
  be	
  obtained	
  in	
  different	
  packages,	
  
such	
  as	
  conven>onal	
  40-­‐pin	
  DIP	
  (Dual	
  In-­‐Line	
  
Package),	
  square	
  surface	
  mount	
  or	
  socket	
  format.	
  	
  
•  Most	
  of	
  the	
  pins	
  are	
  for	
  input	
  and	
  output,	
  and	
  
arranged	
  as	
  5	
  ports:	
  port	
  A	
  (5	
  pins),	
  port	
  B(8),	
  C(8),	
  
D(8)	
  and	
  E(3),	
  giving	
  a	
  total	
  of	
  32	
  I/O	
  pins.	
  	
  
–  These	
  can	
  all	
  operate	
  as	
  simple	
  digital	
  I/O	
  pins,	
  but	
  
most	
  have	
  more	
  than	
  one	
  func>on.	
  
–  The	
  mode	
  of	
  opera>on	
  of	
  each	
  is	
  selected	
  by	
  ini>alizing	
  
various	
  control	
  registers	
  within	
  the	
  chip.	
  	
  
–  Note,	
  in	
  par>cular,	
  that	
  Ports	
  A	
  and	
  E	
  become	
  
ANALOGUE	
  INPUTS	
  by	
  default	
  (on	
  power	
  up	
  or	
  reset),	
  
so	
  they	
  have	
  to	
  set	
  up	
  for	
  digital	
  I/O	
  if	
  required.	
  
1/28/13	
  
21	
  
PIC	
  16F877	
  Pin	
  IN/Out	
  –	
  cont.	
  
•  Port	
  B	
  is	
  used	
  for	
  downloading	
  the	
  program	
  to	
  
the	
  chip	
  flash	
  ROM	
  (RB6	
  and	
  RB7),	
  and	
  RB0	
  
and	
  RB4–RB7	
  can	
  generate	
  an	
  interrupt.	
  	
  
•  Port	
  C	
  gives	
  access	
  to	
  >mers	
  and	
  serial	
  ports.	
  
•  Port	
  D	
  can	
  be	
  used	
  as	
  a	
  slave	
  port,	
  with	
  Port	
  E	
  
providing	
  the	
  control	
  pins	
  for	
  this	
  func>on.	
  	
  
PIC	
  16F877	
  Pin	
  IN/Out	
  –	
  cont.	
  
•  The	
  chip	
  has	
  two	
  pairs	
  of	
  power	
  pins	
  (VDD=5	
  V	
  nominal	
  and	
  Vss	
  =0	
  
V)	
  (11,12	
  or	
  31,	
  32),	
  and	
  either	
  pair	
  can	
  be	
  used.	
  	
  
•  The	
  chip	
  can	
  work	
  down	
  to	
  about	
  2	
  V	
  supply,	
  for	
  baiery	
  and	
  
power-­‐saving	
  opera>on.	
  	
  
•  A	
  low-­‐frequency	
  clock	
  circuit	
  using	
  only	
  a	
  capacitor	
  and	
  resistor	
  
to	
  set	
  the	
  frequency	
  can	
  be	
  connected	
  to	
  CLKIN,	
  or	
  a	
  crystal	
  
oscillator	
  circuit	
  can	
  be	
  connected	
  across	
  CLKIN	
  and	
  CLKOUT.	
  	
  
•  MCLR	
  is	
  the	
  reset	
  input;	
  when	
  cleared	
  to	
  0,	
  the	
  MCU	
  stops,	
  and	
  
restarts	
  when	
  MCLR=1.	
  This	
  input	
  must	
  be	
  >ed	
  high	
  allowing	
  the	
  
chip	
  to	
  run	
  if	
  an	
  external	
  reset	
  circuit	
  is	
  not	
  connected.	
  	
  
–  It	
  is	
  usually	
  a	
  good	
  idea	
  to	
  incorporate	
  a	
  manual	
  reset	
  buion	
  in	
  all	
  but	
  the	
  
most	
  trivial	
  applica>ons.	
  
1/28/13	
  
22	
  
PIC	
  16F877	
  Pin	
  IN/Out	
  –	
  cont.	
  
PIC	
  16F877	
  Block	
  Diagram	
  
1/28/13	
  
23	
  
PIC16F877	
  block	
  diagram	
  –	
  cont.	
  
•  The	
  main	
  program	
  memory	
  is	
  flash	
  ROM,	
  which	
  
stores	
  a	
  list	
  of	
  14-­‐bits	
  instruc>ons.	
  	
  
•  Instruc>ons	
  are	
  fed	
  to	
  the	
  execu>on	
  unit,	
  and	
  used	
  
to	
  modify	
  the	
  RAM	
  file	
  registers.	
  	
  
•  The	
  file	
  register	
  include	
  special	
  control	
  registers,	
  
the	
  port	
  registers	
  and	
  a	
  set	
  of	
  general	
  purpose	
  
registers	
  which	
  can	
  be	
  used	
  to	
  store	
  data	
  
temporarily.	
  	
  
•  A	
  separate	
  working	
  register	
  (W)	
  is	
  used	
  with	
  the	
  
ALU	
  (Arithme>c	
  Logic	
  Unit)	
  to	
  process	
  data.	
  
Various	
  special	
  peripheral	
  modules	
  provide	
  a	
  range	
  
of	
  I/O	
  op>ons	
  	
  	
  
PIC16F877	
  block	
  diagram	
  –	
  cont.	
  
•  There	
  are	
  512	
  RAM	
  File	
  Register	
  addresses	
  (0–1FFh),	
  which	
  are	
  
organized	
  in	
  4	
  banks	
  (0–3),	
  each	
  bank	
  containing	
  128	
  addresses.	
  	
  
•  The	
  default	
  (selected	
  on	
  power	
  up)	
  is	
  Bank	
  0	
  which	
  is	
  numbered	
  
from	
  0	
  to	
  7Fh,	
  Bank	
  1	
  from	
  80h	
  to	
  FFh	
  and	
  so	
  on.	
  	
  
•  These	
  contain	
  both	
  Special	
  Func>on	
  Registers	
  (SFRs),	
  which	
  have	
  
a	
  dedicated	
  purpose,	
  and	
  the	
  General	
  Purpose	
  Registers	
  (GPRs).	
  	
  
•  The	
  file	
  registers	
  are	
  mapped	
  as	
  seen	
  in	
  the	
  next	
  slid.	
  
•  The	
  SFRs	
  may	
  be	
  shown	
  in	
  the	
  block	
  diagram	
  as	
  separate	
  from	
  
the	
  GPRs,	
  but	
  they	
  are	
  in	
  fact	
  in	
  the	
  same	
  logical	
  block,	
  and	
  
addressed	
  in	
  the	
  same	
  way.	
  	
  
•  Deduc>ng	
  the	
  SFRs	
  from	
  the	
  total	
  number	
  of	
  RAM	
  loca>ons,	
  and	
  
allowing	
  for	
  some	
  registers	
  which	
  are	
  repeated	
  in	
  more	
  than	
  one	
  
bank,	
  leaves	
  368	
  bytes	
  of	
  GPR	
  (data)	
  registers.	
  
1/28/13	
  
24	
  
Assume	
  the	
  following	
  circuit	
  
1/28/13	
  
25	
  
Test	
  Programs	
  
•  The	
  first	
  test	
  program,	
  will	
  simply	
  light	
  a	
  set	
  of	
  LEDs	
  
connected	
  to	
  Port	
  B	
  in	
  a	
  binary	
  count	
  sequence,	
  by	
  
incremen>ng	
  Port	
  B	
  data	
  register.	
  	
  
•  Show	
  in	
  simulator	
  (pr)	
  
•  The	
  second	
  test	
  program,	
  will	
  use	
  two	
  input	
  push	
  buions	
  
aiached	
  to	
  Port	
  D	
  to	
  control	
  the	
  output	
  (start,	
  stop	
  and	
  
reset).	
  The	
  program	
  will	
  also	
  include	
  a	
  delay	
  so	
  that	
  the	
  
output	
  is	
  slower,	
  and	
  visible	
  to	
  the	
  user.	
  	
  
–  Detailed	
  design	
  of	
  the	
  interfacing	
  will	
  be	
  covered	
  later.	
  	
  
–  A	
  simple	
  CR	
  clock	
  will	
  be	
  used,	
  which	
  is	
  set	
  to	
  40	
  kHz	
  (C	
  	
  4.7	
  nF,	
  R	
  ≈	
  
5	
  kΩ	
  (preset),	
  CR	
  	
  25	
  μs).	
  This	
  will	
  give	
  an	
  instruc>on	
  execu>on	
  >me	
  
of	
  100	
  μs.	
  
•  Show	
  in	
  Simulator	
  
The	
  PIC	
  Program	
  
•  Both	
  programs	
  are	
  wriien	
  as	
  a	
  source	
  code	
  (a	
  simple	
  text	
  file)	
  on	
  a	
  PC	
  
host	
  computer.	
  
•  Compiler	
  is	
  	
  MPLAB	
  (downloadable	
  from	
  www.microchip.com).	
  	
  
•  The	
  instruc>ons	
  are	
  selected	
  from	
  the	
  pre-­‐defined	
  PIC	
  instruc>on	
  set	
  (see	
  
next	
  slid)	
  according	
  to	
  the	
  opera>onal	
  sequence	
  required.	
  	
  
•  The	
  source	
  code	
  file	
  is	
  saved	
  as	
  PROGNAME.ASM.	
  	
  
•  The	
  source	
  code	
  is	
  assembled	
  (converted	
  into	
  machine	
  code)	
  by	
  the	
  
assembler	
  program	
  MPASM,	
  which	
  creates	
  the	
  list	
  of	
  binary	
  instruc>on	
  
codes.	
  As	
  this	
  is	
  normally	
  displayed	
  as	
  hexadecimal	
  numbers,	
  it	
  is	
  saved	
  as	
  
PROGNAME.HEX.	
  
•  The	
  hex	
  file	
  is	
  then	
  downloaded	
  to	
  the	
  PIC	
  chip	
  from	
  the	
  PC	
  	
  
–  by	
  placing	
  the	
  MCU	
  in	
  a	
  programming	
  unit	
  which	
  is	
  aiached	
  to	
  the	
  serial	
  port	
  of	
  
PC,	
  or	
  	
  
–  by	
  connec>ng	
  the	
  chip	
  to	
  a	
  programmer	
  aKer	
  finng	
  it	
  in	
  the	
  applica>on	
  board	
  
(in-­‐circuit	
  programming).	
  
–  The	
  hex	
  code	
  is	
  transferred	
  in	
  serial	
  form	
  via	
  Port	
  B	
  into	
  the	
  PIC	
  flash	
  program	
  
memory.	
  	
  
•  A	
  list	
  file	
  is	
  created	
  by	
  the	
  assembler,	
  which	
  shows	
  the	
  source	
  code	
  and	
  
machine	
  code	
  in	
  one	
  text	
  file.	
  
1/28/13	
  
26	
  
First	
  Test	
  Program	
  1	
  
1/28/13	
  
27	
  
First	
  Test	
  Program	
  –	
  cont.	
  
•  The	
  program	
  lis>ng	
  includes	
  the	
  source	
  code	
  at	
  the	
  right,	
  with	
  source	
  line	
  
numbers,	
  the	
  hex	
  machine	
  code	
  and	
  the	
  memory	
  loca>on	
  where	
  each	
  
instruc>on	
  is	
  stored	
  (0000–0004).	
  	
  
•  Direc>ve	
  are	
  not	
  converted	
  into	
  machine	
  code	
  (e.g.	
  PROCESSOR	
  and	
  END)	
  	
  
•  The	
  ‘877	
  has	
  8k	
  of	
  program	
  memory,	
  that	
  is,	
  it	
  can	
  store	
  a	
  maximum	
  8192	
  
14-­‐bit	
  instruc>ons.	
  	
  
•  The	
  reset	
  vector	
  (the	
  execu>on	
  start	
  address)	
  is	
  0x000.	
  
•  Let	
  us	
  look	
  at	
  a	
  typical	
  instruc>on	
  to	
  see	
  how	
  the	
  program	
  instruc>ons	
  are	
  
executed.	
  
–  Source	
  code:	
  MOVLW	
  05A	
  
–  Hex	
  code:	
  305A	
  (4	
  hex	
  digits)	
  
–  Binary	
  code:	
  0011	
  0000	
  0101	
  1010	
  (16	
  bits)	
  
–  Instruc>on:	
  11	
  00xx	
  kkkk	
  kkkk	
  (14	
  bits)	
  
–  The	
  instruc>on	
  means:	
  Move	
  a	
  Literal	
  (given	
  number,	
  5Ah)	
  into	
  the	
  Working	
  
register.	
  
•  The	
  source	
  code	
  consists	
  of	
  a	
  mnemonic	
  MOVLW	
  and	
  operand	
  05A.	
  This	
  
assembles	
  into	
  the	
  hex	
  code	
  305A,	
  and	
  is	
  stored	
  in	
  binary	
  in	
  program	
  
memory	
  as	
  11	
  0000	
  0101	
  1010.	
  	
  
First	
  Test	
  Program	
  –	
  cont.	
  
•  In	
  the	
  instruc>on	
  set	
  table,	
  shown	
  previously,	
  it	
  is	
  seen	
  that	
  the	
  
first	
  4	
  bits	
  (11	
  00)	
  are	
  the	
  instruc>on	
  code,	
  the	
  next	
  two	
  are	
  
unused	
  (xx,	
  appearing	
  as	
  00	
  in	
  the	
  binary	
  code)	
  and	
  the	
  last	
  8	
  are	
  
the	
  literal	
  value	
  (5A).	
  	
  
•  The	
  literal	
  is	
  represented	
  as	
  ‘kkkk	
  kkkk’	
  since	
  it	
  can	
  have	
  any	
  
value	
  from	
  00000000	
  to	
  11111111	
  (00–FF).	
  
•  The	
  format	
  of	
  other	
  instruc>ons	
  depends	
  mainly	
  on	
  the	
  number	
  
of	
  bits	
  required	
  for	
  the	
  operand	
  (data	
  to	
  be	
  processed).	
  	
  
•  The	
  number	
  of	
  op-­‐code	
  bits	
  can	
  vary	
  from	
  3	
  to	
  all	
  14,	
  depending	
  
on	
  the	
  number	
  of	
  bits	
  needed	
  for	
  the	
  operand.	
  	
  
•  This	
  is	
  different	
  from	
  a	
  conven>onal	
  processor,	
  such	
  as	
  the	
  
Pen>um,	
  where	
  the	
  op-­‐code	
  and	
  operand	
  are	
  each	
  created	
  as	
  a	
  
whole	
  number	
  of	
  bytes.	
  
•  The	
  PIC	
  instruc>on	
  is	
  more	
  compact,	
  as	
  is	
  the	
  instruc>on	
  set	
  
itself,	
  for	
  greater	
  speed	
  of	
  opera>on.	
  This	
  defines	
  it	
  as	
  a	
  RISC	
  
(Reduced	
  Instruc>on	
  Set	
  Computer)	
  chip.	
  
1/28/13	
  
28	
  
Second	
  test	
  program	
  
•  The	
  second	
  program	
  contains	
  many	
  of	
  the	
  basic	
  program	
  
elements,	
  see	
  next	
  slide.	
  
•  It	
  contains	
  the	
  machine	
  code,	
  memory	
  address	
  and	
  list	
  file	
  
line	
  number	
  as	
  before.	
  	
  
•  There	
  are	
  addi>onal	
  comments	
  to	
  aid	
  program	
  analysis	
  and	
  
debugging.	
  
•  Note	
  that	
  two	
  types	
  of	
  labels	
  are	
  used	
  in	
  program	
  to	
  
represent	
  numbers.	
  
•  Label	
  equates	
  are	
  used	
  at	
  the	
  top	
  of	
  the	
  program	
  to	
  declare	
  
labels	
  for	
  the	
  file	
  registers	
  which	
  will	
  be	
  used	
  in	
  the	
  
program.	
  Address	
  labels	
  are	
  placed	
  in	
  the	
  first	
  column	
  to	
  
mark	
  the	
  des>na>on	
  for	
  GOTO	
  and	
  CALL	
  instruc>ons.	
  
1/28/13	
  
29	
  
Chip	
  Configura>on	
  Word	
  
•  The	
  assembler	
  direc>ve	
  __CONFIG	
  is	
  included	
  at	
  
the	
  top	
  of	
  the	
  program,	
  which	
  sets	
  up	
  aspects	
  of	
  
the	
  chip	
  opera>on	
  which	
  cannot	
  be	
  subsequently	
  
changed	
  without	
  reprogramming.	
  	
  
•  The	
  configura>on	
  word	
  is	
  a	
  special	
  area	
  of	
  program	
  
memory	
  located	
  outside	
  the	
  normal	
  range	
  (address	
  
2007h)	
  and	
  stores	
  	
  chip	
  configura>ons	
  such	
  as	
  the	
  
clock	
  type.	
  
–  Done	
  by	
  loading	
  the	
  configura>on	
  bits	
  with	
  a	
  suitable	
  
binary	
  code	
  (see	
  next	
  slide).	
  	
  
Chip	
  Configura>on	
  Word	
  
1/28/13	
  
30	
  
CODE	
  PROTECTION	
  
•  Normally,	
  the	
  program	
  machine	
  code	
  can	
  be	
  read	
  back	
  to	
  the	
  programming	
  host	
  
computer,	
  be	
  disassembled	
  and	
  the	
  original	
  source	
  program	
  recovered.	
  
•  This	
  can	
  be	
  prevented	
  if	
  commercial	
  or	
  security	
  considera>ons	
  require	
  it.	
  The	
  
code	
  protec>on	
  bits	
  (CP1:CP0)	
  disable	
  reads	
  from	
  selected	
  program	
  areas.	
  
•  Program	
  memory	
  may	
  also	
  be	
  wriien	
  from	
  within	
  the	
  program	
  itself,	
  disabled	
  via	
  
the	
  WRT	
  bit.	
  	
  
•  Data	
  EEPROM	
  may	
  also	
  be	
  protected	
  from	
  external	
  reads	
  in	
  the	
  same	
  way	
  via	
  the	
  
CPD	
  bit,	
  while	
  internal	
  read	
  and	
  write	
  opera>ons	
  are	
  s>ll	
  allowed,	
  regardless	
  of	
  
the	
  state-­‐of-­‐the	
  code	
  protec>on	
  bits.	
  	
  
•  bit	
  13-­‐12,	
  bit	
  5-­‐4	
  
•  CP1:CP0:	
  FLASH	
  Program	
  Memory	
  Code	
  Protec>on	
  bit,	
  All	
  of	
  the	
  CP1:CP0	
  pairs	
  
have	
  to	
  be	
  given	
  the	
  same	
  value	
  to	
  enable	
  the	
  code	
  protec>on	
  scheme	
  listed.	
  
•  11	
  =	
  Code	
  protec>on	
  off	
  
•  10	
  =	
  1F00h	
  to	
  1FFFh	
  code	
  protected	
  	
  
•  01	
  =	
  1000h	
  to	
  1FFFh	
  code	
  protected	
  	
  
•  00	
  =	
  0000h	
  to	
  1FFFh	
  code	
  protected	
  
IN-­‐CIRCUIT	
  DEBUGGING	
  
•  In-­‐circuit	
  debugging	
  (ICD)	
  allows	
  the	
  program	
  
to	
  be	
  downloaded	
  aKer	
  the	
  chip	
  has	
  been	
  
fiied	
  in	
  the	
  applica>on	
  circuit,	
  and	
  allows	
  it	
  to	
  
be	
  tested	
  with	
  the	
  real	
  hardware.	
  	
  
•  The	
  normal	
  debugging	
  techniques	
  of	
  single	
  
stepping,	
  breakpoints	
  and	
  tracing	
  can	
  be	
  
applied	
  in	
  ICD	
  mode.	
  	
  
1/28/13	
  
31	
  
LOW	
  VOLTAGE	
  PROGRAMMING	
  
•  Normally,	
  when	
  the	
  chip	
  is	
  programmed,	
  a	
  high	
  
voltage	
  (12–14	
  V)	
  is	
  applied	
  to	
  the	
  PGM	
  pin	
  (RB3).	
  	
  
•  To	
  avoid	
  the	
  need	
  to	
  supply	
  this	
  voltage	
  during	
  in-­‐
circuit	
  programming	
  (e.g.	
  during	
  remote	
  
reprogramming),	
  a	
  low-­‐voltage	
  programming	
  
mode	
  is	
  available.	
  
•  Using	
  this	
  op>on	
  means	
  that	
  RB3	
  is	
  not	
  then	
  
available	
  for	
  general	
  I/O	
  func>ons	
  during	
  normal	
  
opera>on.	
  
POWER-­‐UP	
  TIMER	
  
•  When	
  the	
  supply	
  power	
  is	
  applied	
  to	
  the	
  programmed	
  
MCU,	
  the	
  start	
  of	
  program	
  execu>on	
  should	
  be	
  
delayed	
  un>l	
  the	
  power	
  supply	
  and	
  clock	
  are	
  stable,	
  
otherwise	
  the	
  program	
  may	
  not	
  run	
  correctly.	
  	
  
•  The	
  power-­‐up	
  >mer	
  may	
  therefore	
  be	
  enabled	
  
(PWRTE	
  0)	
  as	
  a	
  maier	
  of	
  rou>ne.	
  	
  
•  It	
  avoids	
  the	
  need	
  to	
  reset	
  the	
  MCU	
  manually	
  at	
  start	
  
up,	
  or	
  connect	
  an	
  external	
  reset	
  circuit,	
  as	
  is	
  necessary	
  
with	
  some	
  microprocessors.	
  	
  
•  At	
  a	
  clock	
  frequency	
  of	
  4	
  MHz,	
  this	
  works	
  out	
  to	
  
256μs.	
  
1/28/13	
  
32	
  
BROWN-­‐OUT	
  RESET	
  
•  Brown	
  out	
  refers	
  to	
  a	
  short	
  dip	
  in	
  the	
  power-­‐supply	
  (PSU)	
  
voltage,	
  caused	
  by	
  mains	
  supply	
  fluctua>on,	
  or	
  some	
  
other	
  supply	
  fault,	
  which	
  might	
  disrupt	
  the	
  program	
  
execu>on.	
  	
  
•  If	
  the	
  Brown-­‐Out	
  Detect	
  Enable	
  bit	
  (BODEN)	
  is	
  set,	
  a	
  PSU	
  
glitch	
  of	
  longer	
  than	
  about	
  100	
  μs	
  will	
  cause	
  the	
  device	
  to	
  
be	
  held	
  in	
  reset	
  un>l	
  the	
  supply	
  recovers,	
  and	
  then	
  wait	
  
for	
  the	
  power-­‐up	
  >mer	
  to	
  >me	
  out,	
  before	
  restar>ng.	
  The	
  
program	
  must	
  be	
  designed	
  to	
  recover	
  automa>cally.	
  
WATCHDOG	
  TIMER	
  
•  The	
  watchdog	
  >mer	
  is	
  designed	
  to	
  automa>cally	
  reset	
  the	
  MCU	
  if	
  
the	
  program	
  malfunc>ons,	
  by	
  stopping	
  or	
  genng	
  stuck	
  in	
  loop.	
  	
  
•  This	
  could	
  be	
  caused	
  by	
  an	
  undetected	
  bug	
  in	
  the	
  program,	
  an	
  
unplanned	
  sequence	
  of	
  inputs	
  or	
  supply	
  fault.	
  	
  
•  A	
  separate	
  internal	
  oscillator	
  and	
  counter	
  automa>cally	
  
generates	
  a	
  reset	
  about	
  every	
  18	
  ms,	
  unless	
  this	
  is	
  disabled	
  in	
  the	
  
configura>on	
  word.	
  	
  
•  If	
  the	
  watchdog	
  >mer	
  is	
  enabled,	
  it	
  should	
  be	
  regularly	
  reset	
  by	
  
an	
  instruc>on	
  in	
  the	
  program	
  loop	
  (CLRWDT)	
  to	
  prevent	
  the	
  
reset.	
  	
  
•  If	
  the	
  program	
  hangs,	
  and	
  the	
  watchdog	
  >mer	
  reset	
  instruc>on	
  
not	
  executed,	
  the	
  MCU	
  will	
  restart,	
  and	
  (possibly)	
  con>nue	
  
correctly,	
  depending	
  on	
  the	
  nature	
  of	
  the	
  fault.	
  
1/28/13	
  
33	
  
RC	
  OSCILLATOR	
  
•  The	
  MCU	
  clock	
  drives	
  the	
  program	
  along,	
  providing	
  
the	
  >ming	
  signals	
  for	
  program	
  execu>on.	
  	
  
•  The	
  RC	
  (resistor–capacitor)	
  clock	
  is	
  cheap	
  and	
  
useful.	
  It	
  allows	
  opera>ng	
  with	
  the	
  internal	
  clock	
  
driver	
  circuit,	
  to	
  generate	
  the	
  clock.	
  	
  
•  The	
  >me	
  constant	
  (product	
  R	
  X	
  C)	
  determines	
  the	
  
clock	
  period.	
  	
  
•  A	
  variable	
  resistor	
  can	
  be	
  used	
  to	
  give	
  a	
  manually	
  
adjustable	
  frequency,	
  although	
  it	
  is	
  not	
  very	
  stable	
  
or	
  accurate.	
  
CRYSTAL	
  (XTAL)	
  OSCILLATOR	
  
•  Used	
  for	
  greater	
  precision	
  
–  uses	
  the	
  hardware	
  >mers	
  to	
  make	
  accurate	
  measurements	
  	
  
–  generate	
  precise	
  output	
  signals	
  
•  Normally,	
  it	
  is	
  connected	
  across	
  the	
  clock	
  pins	
  with	
  a	
  pair	
  of	
  small	
  capacitors	
  (15	
  
pF)	
  to	
  stabilize	
  the	
  frequency.	
  	
  
•  The	
  crystal	
  acts	
  as	
  a	
  self-­‐contained	
  resonant	
  circuit,	
  where	
  the	
  quartz	
  or	
  ceramic	
  
crystal	
  vibrates	
  at	
  a	
  precise	
  frequency	
  when	
  subject	
  to	
  electrical	
  s>mula>on.	
  
•  A	
  convenient	
  value	
  (used	
  in	
  our	
  examples	
  later)	
  is	
  4	
  MHz;	
  this	
  gives	
  an	
  instruc>on	
  
cycle	
  >me	
  of	
  1	
  μs	
  
–  This	
  is	
  the	
  maximum	
  frequency	
  allowed	
  for	
  the	
  XT	
  configura>on	
  senng.	
  
•  Opera>ng	
  at	
  higher	
  frequency	
  requires	
  the	
  selec>on	
  of	
  the	
  HS	
  configura>on	
  
op>on.	
  
•  Each	
  instruc>on	
  takes	
  four	
  clock	
  cycles	
  	
  
1/28/13	
  
34	
  
CONFIGURATION	
  SETTINGS	
  
•  The	
  default	
  senng	
  for	
  the	
  configura>on	
  bits	
  is	
  3FFF,	
  which	
  
means	
  	
  
–  The	
  code	
  protec>on	
  is	
  off	
  
–  In-­‐circuit	
  debugging	
  disabled	
  	
  
–  Program	
  write	
  enabled	
  
–  Low-­‐voltage	
  programming	
  enabled	
  
–  Brown-­‐out	
  reset	
  enabled	
  
–  Power-­‐up	
  >mer	
  disabled	
  
–  Watchdog	
  >mer	
  enabled	
  
–  RC	
  oscillator	
  selected.	
  	
  
•  A	
  typical	
  senng	
  for	
  basic	
  development	
  work	
  would	
  enable	
  
in-­‐circuit	
  debugging,	
  enable	
  the	
  power-­‐up	
  >mer	
  
–  This	
  would	
  minimize	
  the	
  possibility	
  of	
  a	
  faulty	
  start-­‐up.	
  
•  For	
  reliable	
  star>ng,	
  disable	
  the	
  watchdog	
  >mer	
  and	
  use	
  the	
  
XT	
  oscillator	
  type.	
  
–  By	
  default,	
  the	
  watchdog	
  >mer	
  is	
  enabled.	
  	
  
PIC	
  Instruc>on	
  Set	
  
•  It	
  consists	
  of	
  35	
  separate	
  instruc>ons,	
  some	
  with	
  
alternate	
  result	
  des>na>ons.	
  
•  The	
  default	
  des>na>on	
  for	
  the	
  result	
  of	
  an	
  
opera>on	
  is	
  the	
  file	
  register,	
  but	
  the	
  working	
  
register	
  W	
  is	
  some>mes	
  an	
  op>on.	
  
•  	
  	
  
1/28/13	
  
35	
  
PIC	
  Instruc>on	
  Set	
  –	
  cont.	
  
PIC	
  Instruc>on	
  Set	
  –	
  cont.	
  
1/28/13	
  
36	
  
MOVE	
  instruc>on	
  
•  The	
  contents	
  of	
  a	
  register	
  are	
  copied	
  to	
  another.	
  	
  
•  No>ce	
  that	
  we	
  cannot	
  move	
  a	
  byte	
  directly	
  from	
  one	
  
file	
  register	
  to	
  another,	
  it	
  has	
  to	
  go	
  via	
  the	
  working	
  
register.	
  	
  
•  To	
  put	
  data	
  into	
  the	
  system	
  from	
  the	
  program	
  (a	
  
literal)	
  we	
  must	
  use	
  MOVLW	
  to	
  place	
  the	
  literal	
  into	
  W	
  
ini>ally.	
  	
  
–  It	
  can	
  then	
  be	
  moved	
  to	
  another	
  register	
  as	
  required.	
  
•  To	
  move	
  a	
  byte	
  from	
  W	
  to	
  a	
  file	
  register,	
  MOVWF	
  is	
  
used.	
  	
  
•  To	
  move	
  it	
  the	
  other	
  way,	
  MOVF	
  F,W	
  is	
  used,	
  where	
  F	
  
is	
  any	
  file	
  register	
  address.	
  	
  
•  MOVF	
  F,F	
  is	
  also	
  available.	
  
–  Can	
  be	
  used	
  to	
  test	
  a	
  register	
  without	
  changing	
  it.	
  
REGISTER	
  
•  Register	
  opera>ons	
  affect	
  only	
  a	
  single	
  register,	
  and	
  all	
  
except	
  CLRW	
  (clear	
  W)	
  operate	
  on	
  file	
  registers.	
  	
  
•  Clear	
  sets	
  all	
  bits	
  to	
  zero	
  (00h)	
  	
  
•  Decrement	
  decreases	
  the	
  value	
  by	
  1	
  
•  Increment	
  increases	
  it	
  by	
  1.	
  	
  
•  Swap	
  exchanges	
  the	
  upper	
  and	
  lower	
  four	
  bits	
  (nibbles).	
  	
  
•  Complement	
  inverts	
  all	
  the	
  bits,	
  which	
  in	
  effect	
  negates	
  the	
  
number.	
  	
  
•  Rotate	
  moves	
  all	
  bits	
  leK	
  or	
  right,	
  including	
  the	
  carry	
  flag	
  in	
  
this	
  process.	
  	
  
•  Clear	
  and	
  set	
  a	
  bit	
  operate	
  on	
  a	
  selected	
  bit,	
  where	
  the	
  
register	
  and	
  bit	
  need	
  to	
  be	
  specified	
  in	
  the	
  instruc>on.	
  
1/28/13	
  
37	
  
ARITHMETIC	
  &	
  LOGIC	
  
•  Addi>on	
  and	
  subtrac>on	
  uses	
  the	
  carry	
  flag.	
  
– If	
  the	
  result	
  generates	
  an	
  extra	
  bit	
  (e.g.	
  FF	
  +	
  FF	
  =	
  
1FE),	
  or	
  requires	
  a	
  borrow	
  (e.g.	
  1FE–FF	
  =	
  FF),	
  the	
  
carry	
  flag	
  is	
  used.	
  	
  
•  Logic	
  opera>ons	
  are	
  carried	
  out	
  on	
  bit	
  pairs	
  
(e.g.	
  00001111	
  AND	
  01010101=	
  00000101).	
  	
  
TEST,	
  SKIP	
  &	
  JUMP	
  
•  Condi>onal	
  jumps	
  are	
  ini>ated	
  using	
  a	
  bit	
  test	
  and	
  condi>onal	
  skip,	
  
followed	
  by	
  a	
  GOTO	
  or	
  CALL.	
  
•  The	
  bit	
  test	
  can	
  be	
  made	
  on	
  any	
  file	
  register	
  bit.	
  	
  
–  This	
  could	
  be	
  a	
  port	
  bit,	
  to	
  check	
  if	
  an	
  input	
  has	
  changed,	
  or	
  a	
  status	
  bit	
  in	
  a	
  
control	
  register.	
  
•  BTFSC	
  (Bit	
  Test	
  and	
  Skip	
  if	
  Clear)	
  and	
  BTFSS	
  (Bit	
  Test	
  and	
  Skip	
  if	
  Set)	
  are	
  
used	
  to	
  test	
  the	
  bit	
  and	
  skip	
  the	
  next	
  instruc>on,	
  or	
  not,	
  according	
  to	
  the	
  
state	
  of	
  the	
  bit	
  tested.	
  	
  
•  DECFSZ	
  and	
  INCFSZ	
  embody	
  a	
  commonly	
  used	
  test	
  –	
  decrement	
  or	
  
increment	
  a	
  register	
  and	
  jump	
  depending	
  on	
  the	
  effect	
  of	
  the	
  result	
  on	
  the	
  
zero	
  flag	
  (Z	
  is	
  set	
  if	
  result	
  	
  0).	
  	
  
•  The	
  bit	
  test	
  and	
  skip	
  may	
  be	
  followed	
  by	
  a	
  single	
  instruc>on	
  to	
  be	
  carried	
  
out	
  condi>onally,	
  but	
  GOTO	
  and	
  CALL	
  allow	
  a	
  block	
  of	
  condi>onal	
  code.	
  
•  Using	
  GOTO	
  label	
  simply	
  transfers	
  the	
  program	
  execu>on	
  point	
  to	
  some	
  
other	
  point	
  in	
  the	
  program	
  indicated	
  by	
  a	
  label	
  in	
  the	
  first	
  column	
  of	
  the	
  
source	
  code	
  line.	
  
•  A	
  CALL	
  label	
  means	
  that	
  the	
  program	
  returns	
  to	
  the	
  instruc>on	
  following	
  
the	
  CALL	
  when	
  RETURN	
  is	
  encountered	
  at	
  the	
  end	
  of	
  the	
  subrou>ne.	
  
–  Another	
  op>on	
  is	
  RETLW	
  (Return	
  with	
  Literal	
  in	
  W).	
  See	
  the	
  KEYPAD.	
  	
  
–  RETFIE	
  (Return	
  From	
  Interrupt)	
  will	
  be	
  explained	
  later.	
  
1/28/13	
  
38	
  
CONTROL	
  
•  NOP	
  simply	
  does	
  nothing	
  for	
  one	
  instruc>on	
  cycle	
  
(four	
  clock	
  cycles).	
  	
  
–  very	
  useful	
  for	
  punng	
  short	
  delays	
  in	
  the	
  program	
  
•  SLEEP	
  stops	
  the	
  program,	
  such	
  that	
  it	
  can	
  be	
  
restarted	
  with	
  an	
  external	
  interrupt.	
  	
  
•  The	
  unused	
  loca>ons	
  contain	
  the	
  code	
  3FFF	
  (all	
  1	
  
s),	
  which	
  is	
  a	
  valid	
  instruc>on	
  (ADDLW	
  FF).	
  	
  
•  CLRWDT	
  means	
  clear	
  the	
  watchdog	
  >mer.	
  If	
  the	
  
program	
  gets	
  stuck	
  in	
  a	
  loop	
  or	
  stops	
  for	
  any	
  other	
  
reason,	
  it	
  will	
  be	
  restarted	
  automa>cally	
  by	
  the	
  
watchdog	
  >mer.	
  	
  
•  To	
  stop	
  this	
  from	
  happening,	
  the	
  watchdog	
  >mer	
  
must	
  be	
  reset	
  at	
  regular	
  intervals	
  of	
  less	
  than,	
  say,	
  
10	
  ms,	
  within	
  the	
  program	
  loop,	
  using	
  CLRWDT.	
  
OPTIONAL	
  INSTRUCTIONS	
  
•  TRIS	
  was	
  an	
  instruc>on	
  originally	
  provided	
  to	
  make	
  port	
  
ini>aliza>on	
  simpler.	
  	
  
–  It	
  selects	
  register	
  bank	
  1	
  so	
  that	
  the	
  TRIS	
  data	
  direc>on	
  registers	
  
(TRISA,	
  TRISB,	
  etc.)	
  can	
  be	
  loaded	
  with	
  a	
  data	
  direc>on	
  code	
  (e.g.	
  
0àoutput).	
  	
  
•  The	
  manufacturer	
  no	
  longer	
  recommends	
  use	
  of	
  this	
  
instruc>on,	
  although	
  it	
  is	
  s>ll	
  supported	
  	
  
•  The	
  assembler	
  direc>ve	
  BANKSEL	
  can	
  be	
  used	
  
–  It	
  gives	
  more	
  flexible	
  access	
  to	
  the	
  registers	
  in	
  banks	
  1,	
  2,	
  3.	
  	
  
•  The	
  other	
  op>on	
  is	
  to	
  change	
  the	
  bank	
  select	
  bits	
  in	
  the	
  
STATUS	
  register	
  directly,	
  using	
  BSF	
  and	
  BCF.	
  	
  
•  OPTION,	
  providing	
  special	
  access	
  to	
  the	
  OPTION	
  register,	
  is	
  
the	
  other	
  instruc>on,	
  which	
  is	
  no	
  longer	
  recommended.	
  	
  
–  It	
  can	
  be	
  replaced	
  by	
  BANKSEL	
  to	
  select	
  bank	
  1	
  which	
  contains	
  the	
  
OPTION	
  register,	
  which	
  can	
  then	
  be	
  accessed	
  directly.	
  
1/28/13	
  
39	
  
Program	
  Execu>on	
  
•  The	
  program	
  counter	
  keeps	
  track	
  of	
  program	
  
execu>on;	
  it	
  clears	
  to	
  zero	
  on	
  power	
  up	
  or	
  reset.	
  	
  
•  With	
  8k	
  of	
  program	
  memory,	
  a	
  count	
  from	
  0000	
  to	
  
1FFF	
  (8191)	
  à	
  requires	
  (13	
  bits).	
  	
  
•  The	
  PCL	
  (Program	
  Counter	
  Low)	
  register	
  (SFR	
  02)	
  
contains	
  the	
  low	
  byte,	
  and	
  this	
  can	
  be	
  read	
  or	
  
wriien	
  like	
  any	
  other	
  file	
  register.	
  	
  
•  The	
  high	
  byte	
  is	
  only	
  indirectly	
  accessible	
  via	
  
PCLATH	
  (Program	
  Counter	
  Latch	
  High,	
  SFR	
  0Ah).	
  
SUBROUTINES	
  
•  A	
  label	
  is	
  used	
  at	
  the	
  start	
  of	
  the	
  subrou>ne	
  
•  When	
  a	
  subrou>ne	
  is	
  called	
  (Using	
  the	
  CALL	
  instruc>on),	
  	
  
–  the	
  des>na>on	
  address	
  is	
  copied	
  into	
  the	
  program	
  counter	
  
–  the	
  return	
  address	
  (the	
  one	
  following	
  the	
  CALL)	
  is	
  pushed	
  onto	
  the	
  stack	
  
•  In	
  the	
  PIC,	
  there	
  are	
  8	
  stack	
  address	
  storage	
  levels,	
  which	
  are	
  
used	
  in	
  turn.	
  	
  
•  The	
  subrou>ne	
  is	
  terminated	
  with	
  a	
  RETURN	
  instruc>on	
  
–  causes	
  the	
  program	
  to	
  go	
  back	
  to	
  the	
  original	
  posi>on	
  and	
  con>nue.	
  	
  
–  achieved	
  by	
  popping	
  the	
  address	
  from	
  the	
  top	
  of	
  the	
  stack	
  and	
  replacing	
  
it	
  in	
  the	
  program	
  counter.	
  	
  
•  CALL	
  and	
  RETURN	
  must	
  always	
  be	
  used	
  in	
  sequence	
  to	
  avoid	
  a	
  
stack	
  error,	
  and	
  a	
  possible	
  program	
  crash.	
  	
  
•  In	
  the	
  PIC,	
  the	
  stack	
  is	
  not	
  directly	
  accessible	
  
1/28/13	
  
40	
  
INTERRUPTS	
  
•  The	
  stack	
  is	
  used	
  when	
  an	
  interrupt	
  is	
  processed.	
  	
  
•  An	
  interrupt	
  is	
  effec>vely	
  a	
  call	
  and	
  return	
  which	
  is	
  ini>ated	
  
by	
  an	
  external	
  hardware	
  signal	
  	
  
•  Forces	
  the	
  processor	
  to	
  jump	
  to	
  a	
  dedicated	
  instruc>on	
  
sequence,	
  an	
  Interrupt	
  Service	
  Rou>ne	
  (ISR).	
  	
  
–  For	
  example,	
  the	
  MCU	
  can	
  be	
  set	
  up	
  so	
  that	
  when	
  a	
  hardware	
  >mer	
  
>mes	
  out	
  (finishes	
  its	
  count),	
  the	
  process	
  required	
  at	
  that	
  >me	
  is	
  
called	
  via	
  a	
  >mer	
  interrupt.	
  
•  When	
  an	
  interrupt	
  signal	
  is	
  received,	
  
–  	
  the	
  current	
  instruc>on	
  is	
  completed	
  and	
  	
  
–  the	
  address	
  of	
  the	
  next	
  instruc>on	
  (the	
  return	
  address)	
  is	
  pushed	
  
into	
  the	
  first	
  available	
  stack	
  loca>on.	
  	
  
–  The	
  ISR	
  is	
  called	
  
–  The	
  ISR	
  is	
  terminated	
  with	
  the	
  instruc>on	
  RETFIE	
  (return	
  from	
  
interrupt),	
  which	
  causes	
  the	
  return	
  address	
  to	
  be	
  pulled	
  from	
  the	
  
stack.	
  	
  
–  Program	
  execu>on	
  then	
  restarts	
  at	
  the	
  original	
  loca>on.	
  	
  
•  If	
  necessary,	
  the	
  registers	
  must	
  be	
  saved	
  at	
  the	
  beginning	
  of	
  
the	
  ISR,	
  and	
  restored	
  at	
  the	
  end,	
  in	
  spare	
  set	
  of	
  file	
  registers.	
  	
  
1/28/13	
  
41	
  
PAGE	
  BOUNDARIES	
  
•  Jump	
  instruc>ons	
  (CALL	
  or	
  GOTO)	
  provide	
  only	
  
an	
  11-­‐bit	
  des>na>on	
  address,	
  so	
  the	
  program	
  
memory	
  is	
  effec>vely	
  divided	
  into	
  four	
  2k	
  
blocks,	
  or	
  pages.	
  	
  
•  A	
  jump	
  across	
  the	
  program	
  memory	
  page	
  
boundary	
  requires	
  the	
  page	
  selec>on	
  bits	
  to	
  
be	
  modified	
  by	
  the	
  user	
  program.	
  	
  
•  Sec>ons	
  2.3	
  and	
  2.4	
  in	
  the	
  16F877	
  data	
  sheet	
  
contain	
  detail	
  how	
  to	
  handle	
  these	
  problems.	
  	
  
Special	
  Func>on	
  Registers	
  
•  Program	
  Counter	
  (PCL)	
  
– PCL	
  contains	
  the	
  low	
  8	
  bits	
  of	
  the	
  program	
  counter	
  
– the	
  upper	
  bits	
  (PC<8–12>)	
  are	
  accessed	
  via	
  PCLATH.	
  	
  
– PCL	
  is	
  incremented	
  during	
  each	
  instruc>on	
  
– The	
  contents	
  replaced	
  during	
  a	
  GOTO,	
  CALL	
  
(program	
  address)	
  or	
  RETURN	
  (stack).	
  	
  
1/28/13	
  
42	
  
The	
  STATUS	
  register	
  
•  The	
  status	
  register	
  records	
  the	
  result	
  of	
  certain	
  
opera>ons,	
  MCU	
  power	
  status	
  and	
  includes	
  the	
  
bank	
  selec>on	
  bits	
  	
  
•  It	
  is	
  recommended,	
  that	
  only	
  BCF,	
  BSF,	
  SWAPF	
  and	
  
MOVWF	
  instruc>ons	
  are	
  used	
  to	
  alter	
  the	
  STATUS	
  
register,	
  because	
  these	
  instruc>ons	
  do	
  not	
  affect	
  
the	
  Z,	
  C	
  or	
  DC	
  bits	
  from	
  the	
  STATUS	
  register.	
  	
  
1/28/13	
  
43	
  
ZERO	
  FLAG	
  (Z)	
  
•  This	
  is	
  set	
  when	
  the	
  result	
  of	
  a	
  register	
  
opera>on	
  is	
  zero,	
  and	
  cleared	
  when	
  it	
  is	
  not	
  
zero.	
  	
  
•  Bit	
  test	
  and	
  skip	
  instruc>ons	
  use	
  this	
  flag	
  for	
  
condi>onal	
  branching.	
  	
  
– these	
  do	
  not	
  affect	
  the	
  zero	
  flag	
  itself.	
  	
  
•  A	
  typical	
  use	
  of	
  the	
  zero	
  flag	
  is	
  to	
  check	
  if	
  two	
  
numbers	
  are	
  the	
  same	
  by	
  subtrac>ng	
  and	
  
applying	
  bit	
  test	
  and	
  skip	
  to	
  the	
  Z	
  bit.	
  
CARRY	
  FLAG	
  (C)	
  
•  This	
  flag	
  is	
  only	
  affected	
  by	
  add,	
  subtract	
  and	
  rotate	
  
instruc>ons.	
  	
  
–  When	
  two	
  8-­‐bit	
  numbers	
  give	
  a	
  9-­‐bit	
  sum.	
  	
  The	
  carry	
  bit	
  
must	
  then	
  be	
  included	
  in	
  subsequent	
  calcula>ons	
  to	
  give	
  
the	
  right	
  result.	
  	
  
–  When	
  subtrac>ng,	
  the	
  carry	
  flag	
  must	
  be	
  set	
  ini>ally,	
  
because	
  it	
  provides	
  the	
  borrow	
  digit	
  (if	
  required)	
  in	
  the	
  
most	
  significant	
  bit	
  of	
  the	
  result.	
  If	
  the	
  carry	
  flag	
  is	
  cleared	
  
aKer	
  a	
  subtrac>on,	
  it	
  means	
  the	
  result	
  was	
  nega>ve	
  
•  Taken	
  together,	
  the	
  zero	
  and	
  carry	
  flags	
  allow	
  the	
  
result	
  of	
  an	
  arithme>c	
  opera>on	
  to	
  be	
  detected	
  as	
  
posi>ve,	
  nega>ve	
  or	
  zero,	
  as	
  shown	
  in	
  next	
  slide.	
  
1/28/13	
  
44	
  
Arithme>c	
  results	
  
DIGIT	
  CARRY	
  (DC)	
  
•  A	
  file	
  register	
  can	
  be	
  seen	
  as	
  containing	
  8	
  
individual	
  bits,	
  or	
  1	
  byte.	
  	
  
•  It	
  can	
  also	
  be	
  used	
  as	
  two	
  4-­‐bit	
  nibbles.	
  	
  
•  The	
  digit	
  carry	
  records	
  a	
  carry	
  from	
  the	
  most	
  
significant	
  bit	
  of	
  the	
  low	
  nibble	
  (bit	
  3).	
  (same	
  
as	
  auxiliary	
  carry	
  in	
  Intel)	
  
– Allows	
  4-­‐bit	
  hexadecimal	
  arithme>c	
  to	
  be	
  carried	
  
out	
  in	
  the	
  same	
  way	
  as	
  8-­‐bit	
  binary	
  arithme>c	
  uses	
  
the	
  carry	
  flag	
  C.	
  
1/28/13	
  
45	
  
REGISTER	
  BANK	
  SELECT	
  (RP1:RP0)	
  
•  The	
  PIC	
  16F877	
  file	
  register	
  RAM	
  is	
  divided	
  into	
  four	
  banks	
  
of	
  128	
  loca>ons,	
  banks	
  0–3	
  	
  
•  At	
  power	
  on	
  reset,	
  bank	
  0	
  is	
  selected	
  by	
  default.	
  
•  To	
  access	
  the	
  others,	
  these	
  register	
  bank	
  select	
  bits	
  must	
  be	
  
changed,	
  
•  Some	
  registers	
  are	
  repeated	
  in	
  more	
  than	
  one	
  bank,	
  making	
  
it	
  easier	
  and	
  quicker	
  to	
  access	
  them	
  when	
  switched	
  to	
  that	
  
bank.	
  	
  
–  Ex:	
  status	
  register	
  repeats	
  in	
  all	
  banks.	
  	
  
•  A	
  block	
  of	
  GPRs	
  at	
  the	
  end	
  of	
  each	
  bank	
  repeat,	
  so	
  that	
  their	
  
data	
  contents	
  are	
  available	
  without	
  changing	
  banks.	
  
•  The	
  pseudo-­‐opera>on	
  BANKSEL	
  can	
  be	
  used.	
  	
  
•  The	
  operand	
  for	
  BANKSEL	
  is	
  any	
  register	
  in	
  that	
  bank,	
  or	
  its	
  
–  In	
  effect,	
  BANKSEL	
  detects	
  the	
  bank	
  bits	
  in	
  the	
  register	
  address	
  and	
  
copies	
  them	
  to	
  the	
  status	
  register	
  bank	
  select	
  bits.	
  
Register	
  bank	
  select	
  
1/28/13	
  
46	
  
POWER	
  STATUS	
  BITS	
  
•  There	
  are	
  two	
  read	
  only	
  bits	
  in	
  the	
  status	
  
register	
  which	
  indicate	
  the	
  overall	
  MCU	
  status.	
  	
  
•  The	
  Power	
  Down	
  (PD)	
  bit	
  is	
  clear	
  to	
  zero	
  when	
  
SLEEP	
  mode	
  is	
  entered.	
  	
  
•  The	
  Time	
  Out	
  (TO)	
  bit	
  is	
  cleared	
  when	
  a	
  
watchdog	
  >me	
  out	
  has	
  occurred.	
  
Parallel	
  input/output	
  
•  To	
  transfer	
  data	
  between	
  uC	
  CPU	
  and	
  the	
  
outside	
  world	
  
– switches,	
  keypads,	
  light-­‐eminng	
  diodes	
  (LEDs),	
  
displays,	
  external	
  sensors	
  (analog-­‐to-­‐digital	
  
converter),	
  motors	
  or	
  other	
  actuators,	
  and	
  sending	
  
serial	
  data	
  to	
  an	
  external	
  memory.	
  	
  
1/28/13	
  
47	
  
Ports	
  
•  There	
  are	
  five	
  parallel	
  ports	
  in	
  the	
  PIC	
  16F877,	
  labelled	
  A–E.	
  	
  
•  All	
  pins	
  can	
  be	
  used	
  as	
  bit-­‐	
  or	
  byte-­‐oriented	
  digital	
  input	
  or	
  
output	
  with	
  	
  
–  Some	
  having	
  alternate	
  func>ons	
  depending	
  on	
  the	
  ini>aliza>on	
  of	
  
the	
  relevant	
  control	
  registers.	
  	
  
•  The	
  TRIS	
  (data	
  direc>on)	
  register	
  bits	
  in	
  bank	
  1,	
  default	
  to	
  1,	
  
senng	
  the	
  ports	
  B,	
  C	
  and	
  D	
  as	
  inputs.	
  	
  
•  Ports	
  A	
  and	
  E	
  are	
  set	
  to	
  ANALOGUE	
  INPUT	
  by	
  default,	
  
because	
  the	
  analogue	
  control	
  register	
  ADCON1	
  in	
  bank	
  1	
  
defaults	
  to	
  0	
  -­‐	
  -­‐	
  -­‐	
  0000.	
  	
  
•  To	
  set	
  up	
  these	
  ports	
  for	
  digital	
  I/O,	
  this	
  register	
  must	
  be	
  
loaded	
  with	
  the	
  code	
  x	
  -­‐	
  -­‐	
  -­‐	
  011x	
  (x	
  	
  don’t	
  care),e.g.	
  06h.	
  	
  
•  ADCON1	
  can	
  be	
  ini>alized	
  with	
  bit	
  codes	
  that	
  give	
  a	
  mixture	
  
of	
  analogue	
  and	
  digital	
  I/O	
  on	
  Ports	
  A	
  and	
  E.	
  
•  ADCON1	
  is	
  in	
  bank	
  1	
  so	
  BANKSEL	
  is	
  needed	
  to	
  access	
  it.	
  
Port	
  func>ons	
  
1/28/13	
  
48	
  
	
  Two	
  bits	
  of	
  a	
  possible	
  digital	
  output	
  
port	
  
	
  Two	
  bits	
  of	
  a	
  possible	
  digital	
  input	
  port	
  
1/28/13	
  
49	
  
Combine	
  the	
  two	
  circuits	
  to	
  create	
  a	
  
programmable	
  bidirec>onal	
  input/output	
  pin	
  
Timers	
  
•  The	
  PIC	
  16F877	
  has	
  three	
  hardware	
  >mers.	
  
–  Used	
  to	
  carry	
  out	
  >ming	
  opera>ons	
  simultaneously	
  with	
  the	
  
program.	
  
–  Ex.:	
  Genera>ng	
  a	
  pulse	
  every	
  second	
  at	
  an	
  output.	
  
•  Timer0	
  uses	
  an	
  8-­‐bit	
  register	
  
–  TMR0,	
  file	
  register	
  address	
  01.	
  	
  
–  The	
  register	
  counts	
  from	
  0	
  to	
  255,	
  and	
  then	
  rolls	
  over	
  to	
  00	
  again.	
  
–  When	
  the	
  register	
  goes	
  from	
  FF	
  to	
  00,	
  	
  an	
  overflow	
  flag,	
  T0IF,	
  bit	
  2	
  
in	
  the	
  Interrupt	
  Control	
  Register	
  INTCON,	
  address	
  0B,	
  is	
  set.	
  	
  
•  The	
  >mer	
  register	
  is	
  incremented	
  via	
  a	
  clock	
  input	
  from	
  
either	
  the	
  MCU	
  oscillator	
  (fOSC)	
  or	
  an	
  external	
  pulse	
  train	
  at	
  
RA4.	
  	
  
•  If	
  the	
  internal	
  clock	
  is	
  used,	
  the	
  register	
  acts	
  as	
  a	
  >mer.	
  	
  
•  The	
  >mers	
  are	
  driven	
  from	
  the	
  instruc>on	
  clock	
  (fOSC/4).	
  	
  
•  If	
  the	
  chip	
  is	
  driven	
  from	
  a	
  crystal	
  of	
  4	
  MHz,	
  the	
  instruc>on	
  
clock	
  will	
  be	
  1	
  MHz,	
  and	
  the	
  >mer	
  will	
  update	
  every	
  1us.	
  
1/28/13	
  
50	
  
Timers	
  –	
  cont.	
  
•  A	
  >mer	
  can	
  work	
  as	
  a	
  counter.	
  	
  
–  Counts	
  external	
  pulses	
  	
  
–  >mers	
  can	
  also	
  be	
  used	
  as	
  counters.	
  	
  
•  Timer0,	
  can	
  be	
  controlled	
  by	
  a	
  pre-­‐scaler,	
  see	
  next	
  slide.	
  
•  The	
  pre-­‐scaler	
  is	
  a	
  divide	
  by	
  N	
  register,	
  where	
  N	
  	
  2,	
  4,	
  8,	
  16,	
  
32,	
  64,	
  128	
  or	
  256,	
  meaning	
  that	
  the	
  output	
  count	
  rate	
  is	
  
reduced	
  by	
  this	
  factor.	
  	
  
•  This	
  extends	
  the	
  count	
  period	
  or	
  total	
  count	
  by	
  the	
  same	
  
ra>o,	
  giving	
  a	
  greater	
  range	
  to	
  the	
  measurement.	
  	
  
•  The	
  watchdog	
  >mer	
  interval	
  can	
  also	
  be	
  extended,	
  if	
  this	
  is	
  
selected	
  as	
  the	
  clock	
  source.	
  	
  
•  The	
  pre-­‐scale	
  select	
  bits,	
  and	
  other	
  control	
  bits	
  for	
  Timer0	
  
are	
  found	
  in	
  OPTION_REG.	
  	
  
	
  BLOCK	
  DIAGRAM	
  OF	
  THE	
  TIMER0/WDT	
  PRESCALER	
  
1/28/13	
  
51	
  
	
  OPTION_REG	
  REGISTER	
  
Each	
  of	
  the	
  PORTB	
  pins	
  has	
  a	
  weak	
  internal	
  
pull-­‐up.	
  A	
  single	
  control	
  bit	
  can	
  turn	
  on	
  all	
  
the	
  pull-­‐ups.	
  This	
  is	
  performed	
  by	
  clearing	
  
bit	
  RBPU	
  (OPTION_REG<7>).	
  The	
  weak	
  pull-­‐
up	
  is	
  automa>cally	
  turned	
  off	
  when	
  the	
  
port	
  pin	
  is	
  configured	
  as	
  an	
  output.	
  The	
  
pull-­‐ups	
  are	
  disabled	
  on	
  a	
  Power-­‐on	
  Reset.	
  
RB0/INT	
  is	
  an	
  external	
  interrupt	
  input	
  pin	
  
and	
  is	
  configured	
  using	
  the	
  INTEDG	
  bit	
  
(OPTION_REG<6>).	
  
Typical	
  configura>ons	
  for	
  Timer0	
  
1/28/13	
  
52	
  
Timers	
  –	
  cont.	
  
•  Timer1	
  is	
  a	
  16-­‐bit	
  counter,	
  consis>ng	
  of	
  TMR1H	
  and	
  TMR1L	
  
(addresses	
  0E	
  AND	
  0F).	
  
–  When	
  the	
  low	
  byte	
  rolls	
  over	
  from	
  FF	
  to	
  00,	
  the	
  high	
  byte	
  is	
  
incremented.	
  	
  
–  The	
  maximum	
  count	
  is	
  therefore	
  65535,	
  which	
  allows	
  a	
  higher	
  
count	
  without	
  sacrificing	
  accuracy.	
  
•  Timer2	
  is	
  an	
  8-­‐bit	
  counter	
  (TMR2)	
  with	
  a	
  4-­‐bit	
  pre-­‐scaler,	
  4-­‐
bit	
  post-­‐scaler	
  and	
  a	
  comparator.	
  	
  
–  It	
  can	
  be	
  used	
  to	
  generate	
  Pulse	
  Width	
  Modulated	
  (PWM)	
  output	
  
which	
  is	
  useful	
  for	
  driving	
  DC	
  motors	
  and	
  servos,	
  among	
  other	
  
things.	
  	
  
•  These	
  >mers	
  can	
  also	
  be	
  used	
  in	
  capture	
  and	
  compare	
  
modes,	
  which	
  allow	
  external	
  signals	
  to	
  be	
  more	
  easily	
  
measured.	
  
	
  
Indirect	
  File	
  Register	
  Addressing	
  
•  File	
  register	
  00	
  (INDF)	
  is	
  used	
  for	
  indirect	
  file	
  register	
  
addressing.	
  	
  
•  The	
  address	
  of	
  the	
  register	
  is	
  placed	
  in	
  the	
  file	
  select	
  register	
  
(FSR).	
  	
  
•  When	
  data	
  is	
  wriien	
  to	
  or	
  read	
  from	
  INDF,	
  it	
  is	
  actually	
  
wriien	
  to	
  or	
  read	
  from	
  the	
  file	
  register	
  pointed	
  to	
  by	
  FSR.	
  	
  
•  This	
  is	
  most	
  useful	
  for	
  carrying	
  out	
  a	
  read	
  or	
  write	
  on	
  a	
  
con>nuous	
  block	
  of	
  GPRs,	
  
–  For	
  example,	
  when	
  saving	
  data	
  being	
  read	
  in	
  from	
  a	
  port	
  over	
  a	
  
period	
  of	
  >me.	
  	
  
•  Since	
  nine	
  bits	
  are	
  needed	
  to	
  address	
  all	
  file	
  registers	
  (000–
1FF),	
  the	
  IRP	
  bit	
  in	
  the	
  status	
  register	
  is	
  used	
  as	
  the	
  extra	
  bit.	
  	
  
1/28/13	
  
53	
  
Direct	
  and	
  indirect	
  addressing	
  of	
  the	
  file	
  registers	
  
Interrupt	
  Control	
  Registers	
  
•  The	
  registers	
  involved	
  in	
  interrupt	
  handling	
  are	
  INTCON,	
  PIR1,	
  PIR2,	
  PIE1,	
  
PIE2	
  and	
  PCON.	
  	
  
•  Interrupts	
  are	
  external	
  hardware	
  signals	
  which	
  force	
  the	
  MCU	
  to	
  suspend	
  
its	
  current	
  process,	
  and	
  carry	
  out	
  an	
  Interrupt	
  Service	
  Rou>ne	
  (ISR).	
  	
  
•  In	
  PIC	
  when	
  an	
  interrupt	
  occurs	
  the	
  program	
  execu>on	
  jumps	
  to	
  address	
  
004.	
  	
  
•  By	
  default,	
  interrupts	
  are	
  disabled.	
  
•  If	
  interrupts	
  are	
  to	
  be	
  used	
  	
  
–  the	
  main	
  program	
  start	
  address	
  needs	
  to	
  be	
  0005,	
  or	
  higher,	
  and	
  a	
  ‘GOTO	
  
start’	
  (or	
  similar	
  label)	
  placed	
  at	
  address	
  0000.	
  	
  	
  
–  A	
  ‘GOTO	
  ISR’	
  instruc>on	
  can	
  then	
  be	
  placed	
  at	
  004,	
  using	
  the	
  ORG	
  direc>ve,	
  
which	
  sets	
  the	
  address	
  at	
  which	
  the	
  instruc>on	
  will	
  be	
  placed	
  by	
  the	
  assembler.	
  
–  The	
  Global	
  Interrupt	
  Enable	
  bit	
  (INTCON,	
  GIE)	
  must	
  be	
  set	
  to	
  enable	
  the	
  interrupt	
  
system.	
  	
  
–  The	
  individual	
  interrupt	
  source	
  is	
  then	
  enabled.	
  	
  
–  For	
  example,	
  the	
  bit	
  INTCON,	
  T0IE	
  is	
  set	
  to	
  enable	
  the	
  Timer0	
  overflow	
  to	
  trigger	
  
the	
  interrupt	
  sequence.	
  	
  
–  When	
  the	
  >mer	
  overflows,	
  INTCON,	
  T0IF	
  (Timer0	
  Interrupt	
  Flag)	
  is	
  set	
  to	
  indicate	
  
the	
  interrupt	
  source,	
  and	
  the	
  ISR	
  called.	
  	
  
•  The	
  flags	
  can	
  be	
  checked	
  by	
  the	
  ISR	
  to	
  establish	
  the	
  source	
  of	
  the	
  
interrupt,	
  if	
  more	
  than	
  one	
  is	
  enabled.	
  
1/28/13	
  
54	
  
Interrupt	
  sources	
  and	
  control	
  bits	
  
Macros,	
  Special	
  Instruc>ons,	
  Assembler	
  Direc>ves	
  
Another	
  structured	
  
•  Supplementary	
  instruc>ons	
  
1/28/13	
  
55	
  
Program	
  Design	
  and	
  flowcharts	
  
•  There	
  are	
  two	
  main	
  forms	
  of	
  flowchart.	
  	
  
– Data	
  flowcharts:	
  used	
  to	
  represent	
  complex	
  data	
  
processing	
  systems	
  
– Program	
  flow	
  charts:	
  used	
  to	
  represent	
  overall	
  
program	
  structure	
  and	
  sequence,	
  but	
  not	
  the	
  
details.	
  
Previous	
  Example	
  flow	
  chart	
  
1/28/13	
  
56	
  
Flowchart	
  implementa>on	
  
Input	
  &	
  Output	
  (Interfacing)	
  
•  Switch	
  Input	
  
– input	
  loading	
  and	
  debouncing.	
  
1/28/13	
  
57	
  
Switch	
  Debouncing	
  
•  Delay	
  
•  Schmit	
  trigger	
  
•  capacitor	
  
Timer	
  and	
  Interrupts	
  
•  Allows	
  the	
  MCU	
  to	
  proceed	
  with	
  other	
  tasks	
  while	
  
carrying	
  out	
  a	
  >ming	
  opera>on	
  concurrently.	
  	
  
•  Ex:	
  debouncing	
  
– If	
  a	
  hardware	
  >mer	
  is	
  started	
  when	
  the	
  switch	
  is	
  first	
  
closed,	
  the	
  closure	
  can	
  be	
  confirmed	
  by	
  retes>ng	
  the	
  
input	
  aKer	
  a	
  >me	
  delay	
  to	
  check	
  if	
  it	
  is	
  s>ll	
  closed.	
  	
  
– Alterna>vely,	
  the	
  switch	
  input	
  can	
  be	
  processed	
  aKer	
  
the	
  buion	
  is	
  released,	
  rather	
  than	
  when	
  it	
  is	
  closed.	
  
The	
  system	
  responds	
  when	
  the	
  switch	
  is	
  released	
  
rather	
  than	
  when	
  it	
  is	
  pressed.	
  
1/28/13	
  
58	
  
Timer	
  0	
  
•  Show	
  (LED1H	
  design	
  and	
  code)	
  	
  
–  which	
  illustrates	
  the	
  use	
  of	
  a	
  hardware	
  >mer	
  and	
  the	
  use	
  of	
  
interrupt.	
  	
  
•  TMR0	
  (Timer0)	
  is	
  located	
  at	
  file	
  register	
  address	
  01.	
  	
  
•  It	
  operates	
  as	
  an	
  8-­‐bit	
  binary	
  up	
  counter,	
  driven	
  from	
  
an	
  external	
  or	
  internal	
  clock	
  source.	
  	
  
•  The	
  count	
  increments	
  with	
  each	
  input	
  pulse,	
  and	
  a	
  flag	
  
is	
  set	
  when	
  it	
  overflows	
  from	
  FF	
  to	
  00.	
  	
  
•  It	
  can	
  be	
  pre-­‐loaded	
  with	
  a	
  value	
  so	
  that	
  the	
  >me	
  out	
  
flag	
  is	
  set	
  aKer	
  the	
  required	
  interval.	
  	
  
–  For	
  example,	
  if	
  it	
  is	
  pre-­‐loaded	
  with	
  the	
  number	
  15610,	
  it	
  
will	
  overflow	
  aKer	
  100	
  counts	
  (25610).	
  
1/28/13	
  
59	
  
Keypad	
  Input	
  
•  A	
  keypad	
  is	
  simply	
  an	
  array	
  of	
  push	
  buions	
  connected	
  in	
  rows	
  and	
  columns,	
  so	
  
that	
  each	
  can	
  be	
  tested	
  for	
  closure	
  with	
  the	
  minimum	
  number	
  of	
  connec>ons.	
  	
  
•  There	
  are	
  12	
  keys	
  on	
  a	
  phone	
  type	
  pad	
  (0–9,	
  #,	
  ∗),	
  arranged	
  in	
  a	
  3X4	
  matrix.	
  The	
  
columns	
  are	
  labelled	
  1,	
  2,	
  3	
  and	
  the	
  rows	
  A,	
  B,	
  C,	
  D.	
  	
  
Keypad	
  Input	
  –	
  cont.	
  
•  If	
  we	
  assume	
  that	
  all	
  the	
  rows	
  and	
  columns	
  
are	
  ini>ally	
  high,	
  a	
  keystroke	
  can	
  be	
  detected	
  
by	
  senng	
  each	
  row	
  low	
  in	
  turn	
  and	
  checking	
  
each	
  column	
  for	
  a	
  zero.	
  
•  In	
  the	
  KEYPAD	
  circuit,	
  the	
  7	
  keypad	
  pins	
  are	
  
connected	
  to	
  Port	
  D.	
  	
  
– Bits	
  4–7	
  are	
  ini>alized	
  as	
  outputs,	
  and	
  bits	
  0–2	
  used	
  
as	
  inputs.	
  	
  
•  The	
  input	
  pins	
  are	
  pulled	
  high	
  to	
  logic	
  1.	
  The	
  
output	
  rows	
  are	
  also	
  ini>ally	
  set	
  to	
  1.	
  	
  
1/28/13	
  
60	
  
Keypad	
  opera>on	
  
•  If	
  a	
  0	
  is	
  now	
  output	
  on	
  row	
  A,	
  there	
  is	
  no	
  effect	
  on	
  the	
  inputs	
  
unless	
  a	
  buion	
  in	
  row	
  A	
  is	
  pressed.	
  If	
  these	
  are	
  checked	
  in	
  turn	
  
for	
  a	
  0,	
  a	
  buion	
  in	
  this	
  row	
  which	
  is	
  pressed	
  can	
  be	
  iden>fied	
  as	
  
a	
  specific	
  combina>on	
  of	
  output	
  and	
  input	
  bits.	
  
•  A	
  simple	
  way	
  to	
  achieve	
  this	
  result	
  is	
  to	
  increment	
  a	
  count	
  of	
  keys	
  
tested	
  when	
  each	
  is	
  checked,	
  so	
  that	
  when	
  a	
  buion	
  is	
  detected,	
  
the	
  scan	
  of	
  the	
  keyboard	
  is	
  terminated	
  with	
  current	
  key	
  number	
  
in	
  the	
  counter.	
  	
  
•  This	
  works	
  because	
  the	
  (non-­‐zero)	
  numbers	
  on	
  the	
  keypad	
  
arranged	
  in	
  order:	
  
–  Row	
  A	
  	
  1,	
  2,	
  3	
  
–  Row	
  B	
  	
  4,	
  5,	
  6	
  
–  Row	
  C	
  	
  7,	
  8,	
  9	
  
–  Row	
  D	
  	
  *,	
  0,	
  #	
  
•  Following	
  this	
  system,	
  the	
  star	
  symbol	
  is	
  represented	
  by	
  a	
  count	
  
of	
  10	
  (0Ah),	
  zero	
  by	
  11(0Bh)	
  and	
  hash	
  by	
  12	
  (0C).	
  
•  Show	
  Keypad	
  design	
  and	
  code.	
  
Calculator	
  
1/28/13	
  
61	
  
•  The	
  calculator	
  operates	
  as	
  follows:	
  
– To	
  perform	
  a	
  calcula>on,	
  press	
  a	
  number	
  key,	
  then	
  
an	
  opera>on	
  key,	
  then	
  another	
  number	
  and	
  then	
  
equals.	
  
– The	
  calcula>on	
  and	
  result	
  are	
  displayed.	
  For	
  the	
  
divide	
  opera>on,	
  the	
  result	
  is	
  displayed	
  as	
  result	
  
and	
  remainder.	
  	
  
Pseudo	
  code	
  for	
  the	
  calculator	
  •  CALC	
  
–  Single	
  digit	
  calculator	
  produces	
  two	
  digit	
  results.	
  
–  Hardware:	
  x12	
  keypad,	
  2x16	
  LCD,	
  P16F887	
  MCU	
  
•  MAIN	
  
•  Ini>alise	
  
–  PortC	
  =	
  keypad	
  
•  RC0	
  –	
  RC3	
  =	
  output	
  rows	
  
•  RC4	
  –	
  RC7	
  =	
  input	
  columns	
  
–  PortD	
  =	
  LCD	
  
•  RD1,	
  RD2	
  =	
  control	
  bits	
  
•  RD4–	
  RD7	
  =	
  data	
  bits	
  
–  CALL	
  Ini>alise	
  display	
  
•  Scan	
  Keypad	
  
–  REPEAT	
  
•  CALL	
  Keypad	
  input,	
  Delay	
  50ms	
  for	
  debounce	
  
•  CALL	
  Keypad	
  input,	
  Check	
  key	
  released	
  
•  IF	
  first	
  key,	
  load	
  Num1,	
  Display	
  character	
  and	
  restart	
  loop	
  
•  IF	
  second	
  key,	
  load	
  sign,	
  Display	
  character	
  and	
  restart	
  loop	
  
•  IF	
  third	
  key,	
  load	
  Num2	
  Display	
  character	
  and	
  restart	
  loop	
  
•  IFfourth	
  key,	
  CALL	
  Calculate	
  result	
  
•  IF	
  fiKh	
  key,	
  Clear	
  display	
  
–  ALWAYS	
  
1/28/13	
  
62	
  
Subrou>nes	
  	
  
•  Included	
  LCD	
  driver	
  rou>nes	
  
–  Ini>alise	
  display	
  
–  Display	
  character	
  
•  Keypad	
  Input	
  
–  Check	
  row	
  A,	
  IF	
  key	
  pressed,	
  load	
  ASCII	
  code	
  
–  Check	
  row	
  B,	
  IF	
  key	
  pressed,	
  load	
  ASCII	
  code	
  
–  Check	
  row	
  C,	
  IF	
  key	
  pressed,	
  load	
  ASCII	
  code	
  
–  Check	
  row	
  D,	
  IF	
  key	
  pressed,	
  load	
  ASCII	
  code	
  
–  ELSE	
  load	
  zero	
  code	
  
•  Calculate	
  result	
  
–  IF	
  key	
  =	
  ‘+’,	
  Add	
  
–  IF	
  key	
  =	
  ‘-­‐‘,	
  Subtract	
  
–  IF	
  key	
  =	
  ‘x’,	
  Mul>ply	
  
–  IF	
  key	
  =	
  ‘/’,	
  Divide	
  
–  Add	
  Add	
  Num1	
  +	
  Num2	
  
•  Load	
  result,	
  CALL	
  Two	
  digits	
  
–  Subtract	
  Subtract	
  Num1	
  –	
  Num2	
  
•  IF	
  result	
  nega>ve,	
  load	
  minus	
  sign,	
  CALL	
  Display	
  character	
  
•  Load	
  result,	
  CALL	
  Display	
  character	
  
Subrou>nes	
  –	
  cont.	
  
–  Mul>ply	
  
•  REPEAT	
  
•  Add	
  Num1	
  to	
  Result	
  
•  Decrement	
  Num2	
  
•  UNTIL	
  Num2=	
  0	
  
•  Load	
  result,	
  CALL	
  Two	
  digits	
  
–  Divide	
  
•  REPEAT	
  
•  Subtract	
  Num2	
  from	
  Num1	
  
•  Increment	
  Result	
  
•  UNTIL	
  Num1	
  nega>ve	
  
•  Add	
  Num2	
  back	
  onto	
  Num1	
  for	
  Remainder	
  
•  Load	
  Result,	
  CALL	
  Display	
  character	
  
•  Load	
  Remainder,	
  CALL	
  Display	
  character	
  
•  Two	
  digits	
  
–  Divide	
  result	
  by	
  10,	
  load	
  MSD,	
  CALL	
  Display	
  character	
  
–  Load	
  LSD,	
  CALL	
  Display	
  character	
  
1/28/13	
  
63	
  
•  Show	
  calc	
  code	
  and	
  design	
  	
  
ADC	
  
•  Registers	
  used	
  	
  	
  
– ADCON0	
  
– ADCON1	
  
– The	
  output	
  from	
  the	
  converter	
  is	
  stored	
  in	
  ADRESH	
  
(analogue	
  to	
  digital	
  conversion	
  result,	
  high	
  byte)	
  
and	
  ADRESL	
  (low	
  byte).	
  	
  
•  Show	
  ADC	
  code	
  and	
  design	
  (VINTEST)	
  
1/28/13	
  
64	
  
8-­‐bit	
  Conversion	
  
•  The	
  16F877	
  MCU	
  has	
  eight	
  analogue	
  inputs	
  available,	
  
at	
  RA0,	
  RA1,	
  RA2,	
  RA3,	
  RA5,	
  RE0,	
  RE1	
  and	
  RE2.	
  	
  
•  RA2	
  and	
  RA3	
  may	
  be	
  used	
  as	
  reference	
  voltage	
  inputs,	
  
senng	
  the	
  minimum	
  and	
  maximum	
  values	
  for	
  the	
  
measured	
  voltage	
  range.	
  	
  
•  These	
  inputs	
  default	
  to	
  analogue	
  opera>on,	
  so	
  the	
  
register	
  ADCON1	
  has	
  to	
  be	
  ini>alized	
  explicitly	
  to	
  use	
  
these	
  pins	
  for	
  digital	
  input	
  or	
  output.	
  
•  The	
  ADC	
  converts	
  an	
  analogue	
  input	
  voltage	
  (e.g.	
  0	
  –	
  
2.56V)	
  to	
  10-­‐bit	
  binary,	
  but	
  only	
  the	
  upper	
  8	
  bits	
  of	
  
the	
  result	
  are	
  used,	
  giving	
  a	
  resolu>on	
  of	
  10	
  mV	
  per	
  
bit	
  ((1/256)	
  X	
  2.56	
  V).	
  
ADC	
  block	
  diagram	
  
1/28/13	
  
65	
  
ADC	
  OPERATION	
  
•  The	
  inputs	
  are	
  connected	
  to	
  a	
  func>on	
  selector	
  block	
  which	
  sets	
  
up	
  each	
  pin	
  for	
  analogue	
  or	
  digital	
  opera>on	
  according	
  to	
  the	
  4-­‐
bit	
  control	
  code	
  loaded	
  into	
  the	
  A/D	
  port	
  configura>on	
  control	
  
bits,	
  PCFG0–PCFG3	
  in	
  ADCON1.	
  	
  
–  The	
  code	
  used,	
  0011,	
  sets	
  Port	
  E	
  as	
  digital	
  I/O,	
  and	
  Port	
  A	
  as	
  analogue	
  
inputs	
  with	
  AN3	
  as	
  the	
  posi>ve	
  reference	
  input.	
  
•  The	
  analogue	
  inputs	
  are	
  then	
  fed	
  to	
  a	
  mul>plexer	
  which	
  allows	
  
one	
  of	
  the	
  eight	
  inputs	
  to	
  be	
  selected	
  at	
  any	
  one	
  >me.	
  	
  
–  This	
  is	
  controlled	
  by	
  the	
  three	
  analogue	
  channel	
  select	
  bits,	
  CHS0–CHS2	
  in	
  
ADCON0.	
  	
  
–  In	
  the	
  example,	
  channel	
  0	
  is	
  selected	
  (000),	
  RA0	
  input.	
  	
  
–  If	
  more	
  than	
  one	
  channel	
  is	
  to	
  be	
  sampled,	
  these	
  select	
  bits	
  need	
  to	
  be	
  
changed	
  between	
  ADC	
  conversions.	
  	
  
•  The	
  conversion	
  is	
  triggered	
  by	
  senng	
  the	
  GO/DONE	
  bit,	
  which	
  is	
  
later	
  cleared	
  automa>cally	
  to	
  indicate	
  that	
  the	
  conversion	
  is	
  
complete.	
  	
  
ADC	
  control	
  registers	
  
1/28/13	
  
66	
  
ADC	
  Test	
  Circuit	
  
ADC	
  clock	
  
•  The	
  speed	
  of	
  the	
  conversion	
  is	
  selected	
  by	
  bits	
  ADSC1	
  and	
  ADSC0.	
  	
  
•  The	
  ADC	
  operates	
  by	
  successive	
  approxima>on;	
  	
  
–  this	
  means	
  that	
  the	
  input	
  voltage	
  is	
  fed	
  to	
  a	
  comparator,	
  and	
  if	
  the	
  voltage	
  is	
  
higher	
  than	
  50%	
  of	
  the	
  range,	
  the	
  MSB	
  of	
  the	
  result	
  is	
  set	
  high.	
  	
  
–  The	
  voltage	
  is	
  then	
  checked	
  against	
  the	
  mid-­‐point	
  of	
  the	
  remaining	
  range,	
  and	
  the	
  
next	
  bit	
  set	
  high	
  or	
  low	
  accordingly,	
  and	
  so	
  on	
  for	
  10	
  bits.	
  	
  
•  This	
  takes	
  a	
  significant	
  amount	
  of	
  >me:	
  the	
  minimum	
  conversion	
  >me	
  is	
  
1.6	
  μs	
  per	
  bit,	
  making	
  16	
  μs	
  for	
  a	
  10-­‐bit	
  conversion.	
  	
  
•  The	
  ADC	
  clock	
  speed	
  must	
  be	
  selected	
  such	
  that	
  this	
  minimum	
  >me	
  
requirement	
  is	
  sa>sfied;	
  	
  
•  The	
  MCU	
  clock	
  is	
  divided	
  by	
  2,	
  8	
  or	
  32	
  as	
  necessary.	
  	
  
•  Our	
  simulated	
  test	
  circuit	
  is	
  clocked	
  at	
  4	
  MHz.	
  This	
  gives	
  a	
  clock	
  period	
  of	
  
0.25	
  μs.	
  We	
  need	
  a	
  conversion	
  >me	
  of	
  at	
  least	
  1.6	
  μs;	
  if	
  we	
  select	
  the	
  
divide	
  by	
  8	
  op>on,	
  the	
  ADC	
  clock	
  period	
  will	
  then	
  be	
  8	
  X	
  0.25	
  =	
  2	
  μs,	
  which	
  
is	
  just	
  longer	
  than	
  the	
  minimum	
  required.	
  
•  The	
  select	
  bits	
  are	
  therefore	
  set	
  to	
  01.	
  
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY
MICROPROCESSOR HISTORY

Contenu connexe

Tendances

Difference between microprocessor and microcontroller
Difference between microprocessor and microcontrollerDifference between microprocessor and microcontroller
Difference between microprocessor and microcontrollerMicrocontrollers Lab
 
8051 microcontroller and embedded system
8051 microcontroller and embedded system8051 microcontroller and embedded system
8051 microcontroller and embedded systemsb108ec
 
Difference Between Microprocessors and Microcontrollers
Difference Between Microprocessors and MicrocontrollersDifference Between Microprocessors and Microcontrollers
Difference Between Microprocessors and Microcontrollerselprocus
 
Overview of microcontroller and microprocessor
Overview of microcontroller and microprocessor Overview of microcontroller and microprocessor
Overview of microcontroller and microprocessor Mrunal Deshkar
 
[ PPT ] NS _ppt 4..ppt microprocesser and microcontroller fundamentals
[ PPT ] NS _ppt 4..ppt microprocesser and microcontroller fundamentals [ PPT ] NS _ppt 4..ppt microprocesser and microcontroller fundamentals
[ PPT ] NS _ppt 4..ppt microprocesser and microcontroller fundamentals naresh1992
 
Introduction of microcontroller
Introduction of microcontrollerIntroduction of microcontroller
Introduction of microcontrollerEngineer Maze
 
Introduction to microcontroller
Introduction to microcontrollerIntroduction to microcontroller
Introduction to microcontrollerRajib Roy
 
Introduction to Microcontroller
Introduction to MicrocontrollerIntroduction to Microcontroller
Introduction to MicrocontrollerNikhil Sharma
 
Microprocessor Introduction
Microprocessor IntroductionMicroprocessor Introduction
Microprocessor IntroductionNaveen Dubey
 
comparison between Microprocessor-Microcontroller
comparison between Microprocessor-Microcontrollercomparison between Microprocessor-Microcontroller
comparison between Microprocessor-MicrocontrollerDabbaru Murali
 
Micro processor, micro controller, raspberry pi3
Micro processor, micro controller, raspberry pi3Micro processor, micro controller, raspberry pi3
Micro processor, micro controller, raspberry pi3Sai Kumar
 
Evolution of microprocessors
Evolution of microprocessorsEvolution of microprocessors
Evolution of microprocessorsharinder
 
Microprocessor and Microcontroller - ITVoyagers
Microprocessor and Microcontroller - ITVoyagersMicroprocessor and Microcontroller - ITVoyagers
Microprocessor and Microcontroller - ITVoyagersITVoyagers
 
introduction to microprocessors
introduction to microprocessorsintroduction to microprocessors
introduction to microprocessorsvishi1993
 
microprocessor and microcntroller
microprocessor and microcntrollermicroprocessor and microcntroller
microprocessor and microcntrollerjhcid
 
Introduction to Microprocessors
Introduction to MicroprocessorsIntroduction to Microprocessors
Introduction to MicroprocessorsSridari Iyer
 
Micro Processor And Micro controller
Micro Processor And Micro controller Micro Processor And Micro controller
Micro Processor And Micro controller Raja pirian
 

Tendances (20)

Difference between microprocessor and microcontroller
Difference between microprocessor and microcontrollerDifference between microprocessor and microcontroller
Difference between microprocessor and microcontroller
 
8051 microcontroller and embedded system
8051 microcontroller and embedded system8051 microcontroller and embedded system
8051 microcontroller and embedded system
 
Difference Between Microprocessors and Microcontrollers
Difference Between Microprocessors and MicrocontrollersDifference Between Microprocessors and Microcontrollers
Difference Between Microprocessors and Microcontrollers
 
Overview of microcontroller and microprocessor
Overview of microcontroller and microprocessor Overview of microcontroller and microprocessor
Overview of microcontroller and microprocessor
 
[ PPT ] NS _ppt 4..ppt microprocesser and microcontroller fundamentals
[ PPT ] NS _ppt 4..ppt microprocesser and microcontroller fundamentals [ PPT ] NS _ppt 4..ppt microprocesser and microcontroller fundamentals
[ PPT ] NS _ppt 4..ppt microprocesser and microcontroller fundamentals
 
Introduction of microcontroller
Introduction of microcontrollerIntroduction of microcontroller
Introduction of microcontroller
 
Introduction to microcontroller
Introduction to microcontrollerIntroduction to microcontroller
Introduction to microcontroller
 
Introduction to Microcontroller
Introduction to MicrocontrollerIntroduction to Microcontroller
Introduction to Microcontroller
 
Microprocessor Introduction
Microprocessor IntroductionMicroprocessor Introduction
Microprocessor Introduction
 
comparison between Microprocessor-Microcontroller
comparison between Microprocessor-Microcontrollercomparison between Microprocessor-Microcontroller
comparison between Microprocessor-Microcontroller
 
Micro processor, micro controller, raspberry pi3
Micro processor, micro controller, raspberry pi3Micro processor, micro controller, raspberry pi3
Micro processor, micro controller, raspberry pi3
 
Microcontroller
MicrocontrollerMicrocontroller
Microcontroller
 
Evolution of microprocessors
Evolution of microprocessorsEvolution of microprocessors
Evolution of microprocessors
 
Introduction to Microcontroller
Introduction to MicrocontrollerIntroduction to Microcontroller
Introduction to Microcontroller
 
Microprocessor and Microcontroller - ITVoyagers
Microprocessor and Microcontroller - ITVoyagersMicroprocessor and Microcontroller - ITVoyagers
Microprocessor and Microcontroller - ITVoyagers
 
introduction to microprocessors
introduction to microprocessorsintroduction to microprocessors
introduction to microprocessors
 
microprocessor and microcntroller
microprocessor and microcntrollermicroprocessor and microcntroller
microprocessor and microcntroller
 
Unit 1
Unit 1Unit 1
Unit 1
 
Introduction to Microprocessors
Introduction to MicroprocessorsIntroduction to Microprocessors
Introduction to Microprocessors
 
Micro Processor And Micro controller
Micro Processor And Micro controller Micro Processor And Micro controller
Micro Processor And Micro controller
 

Similaire à MICROPROCESSOR HISTORY

Sistem mikroprosessor
Sistem mikroprosessorSistem mikroprosessor
Sistem mikroprosessorfahmihafid
 
8051 microcontroller
8051 microcontroller8051 microcontroller
8051 microcontrollersnehapvs
 
EE6602 Embedded System
EE6602 Embedded SystemEE6602 Embedded System
EE6602 Embedded Systemrmkceteee
 
microprocessormicrocontrollerbysanat-140107013112-phpapp02.pdf
microprocessormicrocontrollerbysanat-140107013112-phpapp02.pdfmicroprocessormicrocontrollerbysanat-140107013112-phpapp02.pdf
microprocessormicrocontrollerbysanat-140107013112-phpapp02.pdfMECHANICALENGINEERIN19
 
Embedded systems-for-beginners-electro8
Embedded systems-for-beginners-electro8Embedded systems-for-beginners-electro8
Embedded systems-for-beginners-electro8Electro 8
 
Challenges in Embedded Computing
Challenges in Embedded ComputingChallenges in Embedded Computing
Challenges in Embedded ComputingPradeep Kumar TS
 
1. Introduction to Microprocessor.pptx
1. Introduction to Microprocessor.pptx1. Introduction to Microprocessor.pptx
1. Introduction to Microprocessor.pptxISMT College
 
Introduction to microprocessor
Introduction to microprocessorIntroduction to microprocessor
Introduction to microprocessorSudhir Reddy
 
embedded-systems-for-beginners
embedded-systems-for-beginnersembedded-systems-for-beginners
embedded-systems-for-beginnersmohamed gaber
 
INDUSTRIAL TRAINING REPORT EMBEDDED SYSTEM.pptx
INDUSTRIAL TRAINING REPORT EMBEDDED SYSTEM.pptxINDUSTRIAL TRAINING REPORT EMBEDDED SYSTEM.pptx
INDUSTRIAL TRAINING REPORT EMBEDDED SYSTEM.pptxMeghdeepSingh
 
Summer training embedded system and its scope
Summer training  embedded system and its scopeSummer training  embedded system and its scope
Summer training embedded system and its scopeArshit Rai
 
Journey of Microprocessors By Basit Ali
Journey of Microprocessors By Basit AliJourney of Microprocessors By Basit Ali
Journey of Microprocessors By Basit AliBasit Ali
 
System On Chip (SOC)
System On Chip (SOC)System On Chip (SOC)
System On Chip (SOC)Shivam Gupta
 
Ajal mod 1
Ajal mod 1Ajal mod 1
Ajal mod 1AJAL A J
 

Similaire à MICROPROCESSOR HISTORY (20)

Sistem mikroprosessor
Sistem mikroprosessorSistem mikroprosessor
Sistem mikroprosessor
 
8051 microcontroller
8051 microcontroller8051 microcontroller
8051 microcontroller
 
Microprocessor
MicroprocessorMicroprocessor
Microprocessor
 
EE6602 Embedded System
EE6602 Embedded SystemEE6602 Embedded System
EE6602 Embedded System
 
microprocessormicrocontrollerbysanat-140107013112-phpapp02.pdf
microprocessormicrocontrollerbysanat-140107013112-phpapp02.pdfmicroprocessormicrocontrollerbysanat-140107013112-phpapp02.pdf
microprocessormicrocontrollerbysanat-140107013112-phpapp02.pdf
 
Embedded systems-for-beginners-electro8
Embedded systems-for-beginners-electro8Embedded systems-for-beginners-electro8
Embedded systems-for-beginners-electro8
 
Embedded System Basics
Embedded System BasicsEmbedded System Basics
Embedded System Basics
 
Challenges in Embedded Computing
Challenges in Embedded ComputingChallenges in Embedded Computing
Challenges in Embedded Computing
 
1. Introduction to Microprocessor.pptx
1. Introduction to Microprocessor.pptx1. Introduction to Microprocessor.pptx
1. Introduction to Microprocessor.pptx
 
Introduction to microprocessor
Introduction to microprocessorIntroduction to microprocessor
Introduction to microprocessor
 
embedded-systems-for-beginners
embedded-systems-for-beginnersembedded-systems-for-beginners
embedded-systems-for-beginners
 
Module 1.pdf
Module 1.pdfModule 1.pdf
Module 1.pdf
 
INDUSTRIAL TRAINING REPORT EMBEDDED SYSTEM.pptx
INDUSTRIAL TRAINING REPORT EMBEDDED SYSTEM.pptxINDUSTRIAL TRAINING REPORT EMBEDDED SYSTEM.pptx
INDUSTRIAL TRAINING REPORT EMBEDDED SYSTEM.pptx
 
Summer training embedded system and its scope
Summer training  embedded system and its scopeSummer training  embedded system and its scope
Summer training embedded system and its scope
 
ankit
ankitankit
ankit
 
Journey of Microprocessors By Basit Ali
Journey of Microprocessors By Basit AliJourney of Microprocessors By Basit Ali
Journey of Microprocessors By Basit Ali
 
Processors selection
Processors selectionProcessors selection
Processors selection
 
System On Chip (SOC)
System On Chip (SOC)System On Chip (SOC)
System On Chip (SOC)
 
Computer Evolution
Computer EvolutionComputer Evolution
Computer Evolution
 
Ajal mod 1
Ajal mod 1Ajal mod 1
Ajal mod 1
 

Dernier

4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfMr Bounab Samir
 
Q4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxQ4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxnelietumpap1
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptxSherlyMaeNeri
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomnelietumpap1
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 

Dernier (20)

4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
Raw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptxRaw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptx
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
 
Q4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptxQ4 English4 Week3 PPT Melcnmg-based.pptx
Q4 English4 Week3 PPT Melcnmg-based.pptx
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptx
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choom
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 

MICROPROCESSOR HISTORY

  • 1. 1/28/13   1   Microprocessor  and   Microcontroller   66428   Dr.  Sufyan  Samara   Course  Outline  •  Objec>ves:   –  Provides  and  overview  of  Microcontroller  architecture,  Address  modes  and   instruc>on  sets.  Subrou>nes  and  interrupts.  Handling  soKware  tools  including   IDE,  editor,  assembler,  simulator  and  C  compiler.  Interface  techniques  including   parallel,  serial,  >mer,  and  analogue  peripheral  interface.   •  Course  outline:   •  THE  MICROPROCESSOR,  THE  MICROCONTROLLERS,  AND  THIER   ARCHITECTUREs   –  Internal  Microprocessor  Architecture     –  Internal  Microcontroller  Architecture   –  Overview  of  memories   –  The  Microchip  PIC  family   •  Microcontrollers     –  Program  memory  and  the  stack,  Memory  and  memory  map   –  Data  and  Special  Func>on  register  memory   –  The  Configura>on  Word   –  Some  issues  of  >ming,  pipelining,  power  up,  and  reset.   –  Parallel  ports  and  the  clock  oscillator   –  Microchip  instruc>on  set  and  the  MPLAB   –  Working  with  C  programs  and  simulators   –  Working  with  ADC  and  DAC   –  Serial  and  parallel  interfaces  
  • 2. 1/28/13   2   Course  outline  –  cont.   •  Microprocessors   –  The  Intel  8088/8086   –  Architecture,  addressing  modes  and  memory  mapping   •  Address  modes  and  instruc@on  sets   –  Data-­‐Addressing  Modes   –  Program  Memory-­‐Addressing  Modes  and  stacks   –  Intel  Instruc>on  set  and  the  MASM  assembler   •  Working  with  @me:  interrupts,  counters  and  @mers   –  Basic  interrupt  processing   –  Working  with  interrupts   –  The  main  idea  –  counters  and  >mers   –  Working  with  >mers   •  A  look  over  the  larger  microcontrollers   –  16-­‐  bit  microcontrollers   –  32-­‐bit  microcontrollers   •  Textbook:   –  Microchip  PIC  mid  range  manual  from  the  microchip  web  site   Exams   – First  Exam    24/2/2013   – Second  Exam  31/3/2013   – Project  Deadline  22/4/2013   – Final  Exam  decided  by  the  UNI    
  • 3. 1/28/13   3   •  Microcontroller  architecture.  Address  modes   and  instruc>on  sets.  Subrou>nes  and   interrupts.  Handling  soKware  tools  including   IDE,  editor,  assembler,  simulator  and  C   compiler.  Interface  techniques  including   parallel,  serial,  >mer,  and  analogue  peripheral   interface.   History  •  In  the  year  1969,  first  microprocessor  was  born.     •  In  1971  Intel  obtained  the  right  to  sell  this  integrated  circuit.   –  Before  that  Intel  bought  the  license  from  the  Japanese  company  BUSICOM  company  which  first  came  with  the  idea.     •  During  that  year,  a  microprocessor  called  the  4004  appeared  on  the  market.     –  The  first  4-­‐bit  microprocessor  with  the  speed  of  6000  opera>ons  per  second.     •  Not  long  aKer  that,  American  company  CTC  requested  from  Intel  and  Texas  Instruments  to  manufacture  8-­‐bit   microprocessor.   –  In  April  1972  the  first  8-­‐bit  microprocessor  called  the  8008  appeared  on  the  market.     –  It  was  able  to  address  16Kb  of  memory,  had  45  instruc>ons  and  the  speed  of  300  000  opera>ons  per  second.  That  microprocessor   was  the  predecessor  of  all  today’s  microprocessors.     •  In  April  1974,  Intel  launched  8-­‐bit  processor  called  the  8080.     –  Address  64Kb  of  memory,  had  75  instruc>ons  and  ini>al  price  was  $360.   •  In  another  company  called  Motorola  launched  8-­‐bit  microprocessor  6800.   •  At  the  WESCON  exhibi>on  in  the  USA  in  1975,  MOS  Technology  announced  that  it  was  selling  processors  6501  and   •  6502  at  $25  each.     –  In  response  to  the  compe>tor,  both  Motorola  and  Intel  cut  the  prices  of  their  microprocessors  to  $69.95.     •  Due  to  low  price,  6502  became  very  popular  so  it  was  installed  into  computers  such  as  KIM-­‐1,  Apple  I,  Apple   •  II,  Atari,  Commodore,  Acorn,  Oric,  Galeb,  Orao,  Ultra  and  many  others.     •  Soon  appeared  several  companies  manufacturing  the  6502  (Rockwell,  Sznertek,  GTE,  NCR,  Ricoh,  Commodore  took   •  over  MOS  Technology).     •  Other  companies  such  as  Zilog  Inc  have  their  own  microprocessor.     –  In  1976  Zilog  announced  the  Z80.  When  designing  this  microprocessor  Faggin   –  The  new  processor  was  compa>ble  with  the  8080,  i.e.  it  was  able  to  perform  all  the  programs  wriien  for  the  8080.     –  Apart  from  that,  many  other  features  was  included  so  that  the  Z80  was  the  most  powerful  microprocessor  at  that  >me.     –  It  was  able  to  directly  address  64Kb  of  memory,  had  176  instruc>ons,  a  large  number  of  registers,  built  in  op>on  for  refreshing   dynamic  RAM  memory,    single  power  supply,  greater  opera>ng  speed  etc.     –  The  Z80  was  a  great  success  and  everybody  replaced  the  8080  by  the  Z80.     •  In  1976  Intel  came  up  with  an  upgraded  version  of  8-­‐bit  microprocessor  called  the  8085.  However,  the  Z80  was  so   much  beier  that  Intel  lost  the  baile.     •  Even  though  a  few  more  microprocessors  appeared  later  on  the  market  (6809,  2650,  SC/MP  etc.),  everything  was   actually  decided.  There  were  no  such  great  improvements  which  could  make  manufacturers  to  change  their  mind,  so   the  6502  and  Z80  along  with  the  6800  remained  chief  representa>ves  of  the  8-­‐bit  microprocessors  of  that  >me.  
  • 4. 1/28/13   4   uProcessors  <  uControllers  <  SoCs   Microprocessors  (uP)  differ  from   microcontrollers  (uC)   uC:  suited  for  controlling  I/O  devices  that  requires  a  minimum  component  count     uP:  suited  for  processing  informa>on  in  computer  systems     Instruc>on  sets:              uP:  processing  intensive                        powerful  addressing  modes                        instruc>ons  to  perform  complex  opera>ons  &  manipulate  large  volumes  of  data                        processing    capability  of  MCs  never  approaches  those  of  MPs                        large  instruc>ons  -­‐-­‐  e.g.,  80X86  7-­‐byte  long  instruc>ons            uC:  cater  to  control  of  inputs  and  outputs                        instruc>ons  to  set/clear  bits                        boolean  opera>ons  (AND,  OR,  XOR,  NOT,  jump  if  a  bit  is  set/cleared),  etc.                        Extremely  compact  instruc>ons,  many  implemented  in  one  byte                                    (Control  program  must  oKen  fit  in  the  small,  on-­‐chip  ROM)     Hardware  &  Instruc>onset  support:                        uC:  built-­‐in  I/O  opera>ons,  event  >ming,  enabling  &  senng  up  priority  levels                        for  interrupts  caused  by  external  s>muli                        uP:  usually  require  external  circuitry  to  do  similar  things  (e.g,  8255  PPI,  8259  etc)  
  • 5. 1/28/13   5   Microprocessors  (uP)  and   microcontrollers  (uC)   Bus  widths:              uP:  very  wide                        large  memory  address  spaces  (>4  Gbytes)                        lots  of  data  (Data  bus:  32,  64,  128  bits  wide)            uC:  narrow                        rela>vely  small  memory  address  spaces  (typically  kBytes)                        less  data  (Data  bus  typically  4,  8,  16  bits  wide)     Clock  rates:              uP  very  fast  (>  1  GHz)              uC:  Rela>vely  slow  (typically  10-­‐20  MHz)                        since  most  I/O  devices  being  controlled  are  rela>vely  slow     Cost:              uP's  expensive  (oKen  >  $100)              uCs  cheap  (oKen  $1  -­‐  $10)                        4-­‐bit:    <  $1.00                        8-­‐bit:    $1.00  -­‐  $8.00                      16-­‐32-­‐bit:    $6.00  -­‐  $20.00    
  • 6. 1/28/13   6    A  generic  microcontroller   System-­‐on-­‐a-­‐chip   Compare  to  lab-­‐on-­‐a-­‐chip   ideas  
  • 7. 1/28/13   7   Example:  PSoC  (Cypress)   Example  of  circuit     •  No>ce  the  processor/controller   •  What  does  it  do?  
  • 8. 1/28/13   8   Find  the  microcontroller…  
  • 9. 1/28/13   9   Can  you  guess  what  this  circuit  does?  
  • 10. 1/28/13   10   Memory  types   •  Vola>le.  This  is  memory  that  only  works  as  long  as  it  is  powered.   It  loses  its  stored  value  when  power  is  removed,  but  can  be  used   as  memory  for  temporary  data  storage.     –  commonly  been  called  RAM  (Random  Access  Memory)   •  Non-­‐vola>le.  This  is  memory  that  retains  its  stored  value  even   when  power  is  removed.   –  hard  disk   –  In  an  embedded  system  it  is  achieved  using  non-­‐vola>le  semiconductor   memory,  commonly  been  called  ROM  (Read-­‐Only  Memory)   •  An  ideal  memory  reads  and  writes  in  negligible  >me,  retains  its   stored  value  indefinitely,  occupies  negligible  space  and  consumes   negligible  power.     –  In  prac>ce  no  memory  technology  meets  all  these  happy  ideals     Memory  –  cont.   •  Sta>c  RAM  (SRAM)   –  Each  memory  cell  is  designed  as  a  simple  flip-­‐flop.   –  Data  is  held  only  as  long  as  power  is  supplied  (vola>le).   –  Consume  very  liile  power,  and  can  retain  its  data  down  to  a  low  voltage   (around  2  V).   –  Each  cell  taking  six  transistors,  SRAM  is  not  a  high-­‐density  technology.   •  EPROM  (Erasable  Programmable  Read-­‐Only  Memory)   –  erased  by  exposing  it  to  intense  ultraviolet  light.   –  each  memory  cell  is  made  of  a  single  MOS  transistor  (very  high  density   and  robust)   –  Within  the  transistor  there  is  embedded  a  ‘floa>ng  gate’.  Using  a   technique  known  as  hot  electron  injec>on  (HEI),  the  floa>ng  gate  can  be   charged.  When  it  is  not  charged,  the  transistor  behaves  normally  and  the   cell  output  takes  one  logic  state  when  ac>vated.  When  it  is  charged,  the   transistor  no  longer  works  properly  and  it  no  longer  responds  when  it  is   ac>vated.  The  charge  placed  on  the  floa>ng  gate  is  totally  trapped  by  the   surrounding  insulator.  Hence  EPROM  technology  is  non-­‐vola>le.   –  Requires  quartz  window  and  ceramic  packaging.   –  As  a  technology,  EPROM  has  now  almost  completely  given  way  to  Flash  
  • 11. 1/28/13   11   Memory  –  cont.   •  EEPROM  (Electrically  Erasable  Programmable  Read-­‐ Only  Memory)     –  Uses  floa>ng  gate  technology.   •  This  is  known  as  Nordheim–Fowler  tunnelling  (NFT).   •  With  NFT,  it  is  possible  to  electrically  erase  the  memory  cell  as  well   as  write  to  it.   •  To  allow  this  to  happen,  a  number  of  switching  transistors  need  to   be  included  around  the  memory  element  itself,  so  the  high  density   of  EPROM  is  lost.   •  EEPROM  is  non-­‐vola>le   –  Because  the  charge  on  the  floa>ng  gate  is  totally  trapped  by  the   surrounding  insulator   •  Write  and  erase  byte  by  byte.   •  Flash   –  A  further  evolu>on  of  floa>ng-­‐gate  technology.   –  can  only  erase  in  blocks.   –  Non-­‐vola>le     Organizing  memory   •  Two  important  buses   –  Address   –  Data   •  Two  architectures     –  Von Neumann architecture •  One bus for data and one for address •  Serve for memory and others (program and I/O) •  Disadvantages:     –  uses  the  same  data  bus  for  all  sizes  (areas)  of  memory   –  Shared  between  many  things,  can  be  used  for  one  thing  at  a    >me   –  The  Harvard  architecture •  Every  memory  area  gets  its  own  address  bus  and  its  own  data  bus   •  Disadvantages:   –  Complex   –  Data  and  program  are  separated  (tables  inside  program  memory  can’t  be  treated  as  data)    
  • 12. 1/28/13   12   (a)  The  Von  Neumann  way.                                                                                                                (b)  The  Harvard  way       uC   •  Many  families   –  Each  family  is  generally  the  same  processor  core  with   different  peripherals  combina>on  and  different   memory  size.   –  One  core  might  be  8-­‐bit  with  limited  power,  another   16-­‐bit  and  another  a  sophis>cated  32-­‐bit  machine.     –  Because  the  core  is  fixed  for  all  members  of  one  family,   the  instruc>on  set  is  fixed  and  users  have  liile  difficulty   in  moving  from  one  family  member  to  another.  
  • 13. 1/28/13   13   Microcontroller  packaging  and  appearance   •  Usually  plas>c  or  ceramic  are  used  as  the  packaging  material.   •  Interconnec>on  with  the  outside  world  is  provided  by  the  pins  on  the   package   •  Dual-­‐in-­‐line  package  (DIP),  with  its  pins  arranged  in  two  rows  along  the   longer  sides  of  the  IC,  the  pin  spacing  being  0.1  inches   •  Other  incudes:  Pin  grid  array  (PGA),  leadless  chip  carrier  (LCC)  packages,   Small-­‐outline  integrated  circuit  (SOIC),  Plas>c  leaded  chip  carrier  (PLCC)   packages,  plas>c  quad  flat  pack(PQFP),  and  thin  small-­‐outline  packages   (TSOP)   –  Used  when  number  of  pins  is  very  large  compared  to  IC  size    A  collec>on  of  microprocessors  and  microcontrollers  –  old  and  new.  From  leK  to  right:   PIC  12F508,  PIC  16F84A,  PIC  16C72,  Motorola  68HC705B16,  PIC  16F877,  Motorola  68000   Microchip  and  the  PIC  microcontroller   •  Has  a  wide  range  of  different  families   –  8-­‐bit,  16-­‐bit,  32-­‐bit     •  All  8-­‐bit  PIC  microcontrollers  are  lowcost,  self-­‐contained,  pipelined,  RISC,   use  the  Harvard  structure,  have  a  single  accumulator  (the  Working,  or  W,   register),  with  a  fixed  reset  vector.   •  Microchip  offer  8-­‐bit  microcontrollers  with  four  different  prefixes,  10-­‐,  12-­‐,   16-­‐,  and  18-­‐,  for  example  10F200,  or  18F242.  We  call  each  a  ‘Series’,  for   example  ‘12  Series’,  ‘16  Series’,  ‘18  Series’.     –  Each  Series  is  iden>fied  by  the  first  two  digits  of  the  device  code.   •  Leiers  are  used  as  follows:   –  The  ‘C’  insert  implies  CMOS  technology   –  The  ‘F’  insert  indicates  incorpora>on  of  Flash  memory  technology  (s>ll  using   CMOS  as  the  core  technology).     –  An  ‘A’  aKer  the  number  indicates  a  technological  upgrade  on  the  first  issue   device.     –  An  ‘X’  indicates  that  a  certain  digit  can  take  a  number  of  values.   –  For  example,  the  16C84,  the  16F84,  and  the  16F84A.   •  In  some  cases  microcontrollers  of  one  Series  can  fall  into  more  than  one   family.    
  • 14. 1/28/13   14   Comparison  of  8-­‐bit  PIC  families   •  Every  member  of  any  one  family  shares  the  same  core  architecture   and  instruc>on  set.     •  The  processing  power  is  defined  to  some  extent  by  the  parameters   quoted,  for  example  the  instruc>on  word  size,  and  the  number  of   instruc>ons.     An  introduc>on  to  PIC  microcontrollers   using  the  Baseline  Series   •  We  will  look  at  the  PIC  12F508/509.   •  The  only  difference  between  the  508  and  509  is  that  the  laier   has  slightly  larger  program  and  data  memories.  
  • 15. 1/28/13   15   The  architecture  of  the  12F508   The  architecture  of  the  12F508  –  cont.   •  As  this  microcontroller  is  a  RISC  computer,  each  instruc>on  word  must   carry  not  only  the  instruc>on  code  itself,  but  also  any  address  or  data   informa>on  needed.   •  Depending  on  the  instruc>on  itself,  five  bits  of  the  instruc>on  word  may   carry  address  informa>on  and  hence  be  sent  down  the  ‘Direct  Addr’  bus   to  the  address  mul>plexer  (‘Addr  MUX’).  Eight  bits  of  the  instruc>on  word   may  carry  a  data  byte  that  is  to  be  used  as  literal  data  for  the  execu>on  of   that  instruc>on.  This  goes  to  the  mul>plexer  (‘MUX’),  which  feeds  into  the   ALU.  Finally,  there  is  the  instruc>on  data  itself,  which  feeds  into  the   ‘Instruc>on  Decode  and  Control’  unit.   •  A  ‘Power-­‐on  Reset’  func>on  detects  when  power  is  applied  and  holds  the   microcontroller  in  a  Reset  condi>on  while  the  power  supply  stabilizes.   •  The  MCLR  input  can  be  used  to  place  the  CPU  in  a  Reset  condi>on  and  to   force  the  program  to  start  again.     –  An  internal  clock  oscillator  (‘Internal  RC  OSC’)  is  provided  so  that  no  external  pins   whatsoever  need  be  commiied  to  this  func>on.     –  External  oscillator  connec>ons  can,  however,  be  made,  using  input/output  pins   GP4  and  GP5.  The  oscillator  signal  is  condi>oned  for  use  through  the   microcontroller  in  the  ‘Timing  Genera>on’  unit.     •  The  ‘Watchdog  Timer’  is  a  safety  feature,  used  to  force  a  reset  in  the   processor  if  it  crashes.  
  • 16. 1/28/13   16   The  PIC  16F877   •  We  will  concentrate  on  just  one  device,  the  PIC   16F877   –  A  good  range  of  features  and  allows  most  of  the   essen>al  techniques  to  be  explained.     –  It  has  a  set  of  serial  ports  built  in,  which  are  used  to   transfer  data  to  and  from  other  devices,  as  well  as   analogue  inputs,  which  allow  measurement  of  inputs   such  as  temperature.     –  All  standard  types  of  microcontrollers  work  in  a  similar   way,  so  analysis  of  one  will  make  it  possible  to   understand  all  the  others.   MCU   •  The  microcontroller  contains  the  same  main  elements  as  any  computer   system:   –  Processor   –  Memory   –  Input/Output   •  In  a  PC,  these  are  provided  as  separate  chips,  linked  together  via  bus   connec>ons  on  a  printed  circuit  board,  but  under  the  control  of  the   microprocessor  (CPU).     •  A  bus  is  a  set  of  lines  which  carry  data  in  parallel  form  which  are  shared  by   the  peripheral  devices.       •  The  system  can  be  designed  to  suit  a  par>cular  applica>on,  with  the  type   of  CPU,  size  of  memory  and  selec>on  of  input/output  (I/O)  devices   tailored  to  the  system  requirements.   •  In  the  microcontroller,  all  these  elements  are  on  one  chip.  This  means  that   the  MCU  (microcontroller)  for  a  par>cular  applica>on  must  be  chosen   from  the  available  range  to  suit  the  requirements.    
  • 17. 1/28/13   17   Execu>on,  revisited   Memory,  revisited  
  • 18. 1/28/13   18   Input  and  Output   •  Ports  are  based  on  a  data  register,  and  set  of  control   registers,  which  pass  the  data  in  and  out  in  a  controlled   manner,  oKen  according  to  a  standard  protocol  (method  of   communica>on).     •  There  are  two  main  types  of  port:     –  (a)  Parallel  port,  the  data  is  usually  transferred  in  and  out  8  bits  at  a   >me   –  (b)  Serial  port,  the  data  is  transmiied  1  bit  at  a  >me  on  a  single   line.     –  Poten>ally,  the  parallel  port  is  faster,  but  needs  more  pins;  on  the   other  hand,  the  port  hardware  and  driver  soKware  are  simpler,   because  the  serial  port  must  organize  the  data  in  groups  of  bits,   usually  1  byte  at  a  >me,  or  in  packets,  as  in  a  network   PIC  16F877  Architecture   •  Microcontrollers  contain  all  the  components   required  for  a  processor  system  in  one  chip:  a   CPU,  memory  and  I/O.     •  A  complete  system  can  therefore  be  built   using  one  MCU  chip  and  a  few  I/O  devices   such  as  a  keypad,  display  and  other  interfacing   circuits.  
  • 19. 1/28/13   19   Some  members  of  the  PIC  mid-­‐range  family   Some  members  of  the  PIC  mid-­‐range  family  –  cont.  
  • 20. 1/28/13   20   An  architecture   overview  of  the   PIC16F877   PIC  16F877  Pin  IN/Out     •  The  chip  can  be  obtained  in  different  packages,   such  as  conven>onal  40-­‐pin  DIP  (Dual  In-­‐Line   Package),  square  surface  mount  or  socket  format.     •  Most  of  the  pins  are  for  input  and  output,  and   arranged  as  5  ports:  port  A  (5  pins),  port  B(8),  C(8),   D(8)  and  E(3),  giving  a  total  of  32  I/O  pins.     –  These  can  all  operate  as  simple  digital  I/O  pins,  but   most  have  more  than  one  func>on.   –  The  mode  of  opera>on  of  each  is  selected  by  ini>alizing   various  control  registers  within  the  chip.     –  Note,  in  par>cular,  that  Ports  A  and  E  become   ANALOGUE  INPUTS  by  default  (on  power  up  or  reset),   so  they  have  to  set  up  for  digital  I/O  if  required.  
  • 21. 1/28/13   21   PIC  16F877  Pin  IN/Out  –  cont.   •  Port  B  is  used  for  downloading  the  program  to   the  chip  flash  ROM  (RB6  and  RB7),  and  RB0   and  RB4–RB7  can  generate  an  interrupt.     •  Port  C  gives  access  to  >mers  and  serial  ports.   •  Port  D  can  be  used  as  a  slave  port,  with  Port  E   providing  the  control  pins  for  this  func>on.     PIC  16F877  Pin  IN/Out  –  cont.   •  The  chip  has  two  pairs  of  power  pins  (VDD=5  V  nominal  and  Vss  =0   V)  (11,12  or  31,  32),  and  either  pair  can  be  used.     •  The  chip  can  work  down  to  about  2  V  supply,  for  baiery  and   power-­‐saving  opera>on.     •  A  low-­‐frequency  clock  circuit  using  only  a  capacitor  and  resistor   to  set  the  frequency  can  be  connected  to  CLKIN,  or  a  crystal   oscillator  circuit  can  be  connected  across  CLKIN  and  CLKOUT.     •  MCLR  is  the  reset  input;  when  cleared  to  0,  the  MCU  stops,  and   restarts  when  MCLR=1.  This  input  must  be  >ed  high  allowing  the   chip  to  run  if  an  external  reset  circuit  is  not  connected.     –  It  is  usually  a  good  idea  to  incorporate  a  manual  reset  buion  in  all  but  the   most  trivial  applica>ons.  
  • 22. 1/28/13   22   PIC  16F877  Pin  IN/Out  –  cont.   PIC  16F877  Block  Diagram  
  • 23. 1/28/13   23   PIC16F877  block  diagram  –  cont.   •  The  main  program  memory  is  flash  ROM,  which   stores  a  list  of  14-­‐bits  instruc>ons.     •  Instruc>ons  are  fed  to  the  execu>on  unit,  and  used   to  modify  the  RAM  file  registers.     •  The  file  register  include  special  control  registers,   the  port  registers  and  a  set  of  general  purpose   registers  which  can  be  used  to  store  data   temporarily.     •  A  separate  working  register  (W)  is  used  with  the   ALU  (Arithme>c  Logic  Unit)  to  process  data.   Various  special  peripheral  modules  provide  a  range   of  I/O  op>ons       PIC16F877  block  diagram  –  cont.   •  There  are  512  RAM  File  Register  addresses  (0–1FFh),  which  are   organized  in  4  banks  (0–3),  each  bank  containing  128  addresses.     •  The  default  (selected  on  power  up)  is  Bank  0  which  is  numbered   from  0  to  7Fh,  Bank  1  from  80h  to  FFh  and  so  on.     •  These  contain  both  Special  Func>on  Registers  (SFRs),  which  have   a  dedicated  purpose,  and  the  General  Purpose  Registers  (GPRs).     •  The  file  registers  are  mapped  as  seen  in  the  next  slid.   •  The  SFRs  may  be  shown  in  the  block  diagram  as  separate  from   the  GPRs,  but  they  are  in  fact  in  the  same  logical  block,  and   addressed  in  the  same  way.     •  Deduc>ng  the  SFRs  from  the  total  number  of  RAM  loca>ons,  and   allowing  for  some  registers  which  are  repeated  in  more  than  one   bank,  leaves  368  bytes  of  GPR  (data)  registers.  
  • 24. 1/28/13   24   Assume  the  following  circuit  
  • 25. 1/28/13   25   Test  Programs   •  The  first  test  program,  will  simply  light  a  set  of  LEDs   connected  to  Port  B  in  a  binary  count  sequence,  by   incremen>ng  Port  B  data  register.     •  Show  in  simulator  (pr)   •  The  second  test  program,  will  use  two  input  push  buions   aiached  to  Port  D  to  control  the  output  (start,  stop  and   reset).  The  program  will  also  include  a  delay  so  that  the   output  is  slower,  and  visible  to  the  user.     –  Detailed  design  of  the  interfacing  will  be  covered  later.     –  A  simple  CR  clock  will  be  used,  which  is  set  to  40  kHz  (C    4.7  nF,  R  ≈   5  kΩ  (preset),  CR    25  μs).  This  will  give  an  instruc>on  execu>on  >me   of  100  μs.   •  Show  in  Simulator   The  PIC  Program   •  Both  programs  are  wriien  as  a  source  code  (a  simple  text  file)  on  a  PC   host  computer.   •  Compiler  is    MPLAB  (downloadable  from  www.microchip.com).     •  The  instruc>ons  are  selected  from  the  pre-­‐defined  PIC  instruc>on  set  (see   next  slid)  according  to  the  opera>onal  sequence  required.     •  The  source  code  file  is  saved  as  PROGNAME.ASM.     •  The  source  code  is  assembled  (converted  into  machine  code)  by  the   assembler  program  MPASM,  which  creates  the  list  of  binary  instruc>on   codes.  As  this  is  normally  displayed  as  hexadecimal  numbers,  it  is  saved  as   PROGNAME.HEX.   •  The  hex  file  is  then  downloaded  to  the  PIC  chip  from  the  PC     –  by  placing  the  MCU  in  a  programming  unit  which  is  aiached  to  the  serial  port  of   PC,  or     –  by  connec>ng  the  chip  to  a  programmer  aKer  finng  it  in  the  applica>on  board   (in-­‐circuit  programming).   –  The  hex  code  is  transferred  in  serial  form  via  Port  B  into  the  PIC  flash  program   memory.     •  A  list  file  is  created  by  the  assembler,  which  shows  the  source  code  and   machine  code  in  one  text  file.  
  • 26. 1/28/13   26   First  Test  Program  1  
  • 27. 1/28/13   27   First  Test  Program  –  cont.   •  The  program  lis>ng  includes  the  source  code  at  the  right,  with  source  line   numbers,  the  hex  machine  code  and  the  memory  loca>on  where  each   instruc>on  is  stored  (0000–0004).     •  Direc>ve  are  not  converted  into  machine  code  (e.g.  PROCESSOR  and  END)     •  The  ‘877  has  8k  of  program  memory,  that  is,  it  can  store  a  maximum  8192   14-­‐bit  instruc>ons.     •  The  reset  vector  (the  execu>on  start  address)  is  0x000.   •  Let  us  look  at  a  typical  instruc>on  to  see  how  the  program  instruc>ons  are   executed.   –  Source  code:  MOVLW  05A   –  Hex  code:  305A  (4  hex  digits)   –  Binary  code:  0011  0000  0101  1010  (16  bits)   –  Instruc>on:  11  00xx  kkkk  kkkk  (14  bits)   –  The  instruc>on  means:  Move  a  Literal  (given  number,  5Ah)  into  the  Working   register.   •  The  source  code  consists  of  a  mnemonic  MOVLW  and  operand  05A.  This   assembles  into  the  hex  code  305A,  and  is  stored  in  binary  in  program   memory  as  11  0000  0101  1010.     First  Test  Program  –  cont.   •  In  the  instruc>on  set  table,  shown  previously,  it  is  seen  that  the   first  4  bits  (11  00)  are  the  instruc>on  code,  the  next  two  are   unused  (xx,  appearing  as  00  in  the  binary  code)  and  the  last  8  are   the  literal  value  (5A).     •  The  literal  is  represented  as  ‘kkkk  kkkk’  since  it  can  have  any   value  from  00000000  to  11111111  (00–FF).   •  The  format  of  other  instruc>ons  depends  mainly  on  the  number   of  bits  required  for  the  operand  (data  to  be  processed).     •  The  number  of  op-­‐code  bits  can  vary  from  3  to  all  14,  depending   on  the  number  of  bits  needed  for  the  operand.     •  This  is  different  from  a  conven>onal  processor,  such  as  the   Pen>um,  where  the  op-­‐code  and  operand  are  each  created  as  a   whole  number  of  bytes.   •  The  PIC  instruc>on  is  more  compact,  as  is  the  instruc>on  set   itself,  for  greater  speed  of  opera>on.  This  defines  it  as  a  RISC   (Reduced  Instruc>on  Set  Computer)  chip.  
  • 28. 1/28/13   28   Second  test  program   •  The  second  program  contains  many  of  the  basic  program   elements,  see  next  slide.   •  It  contains  the  machine  code,  memory  address  and  list  file   line  number  as  before.     •  There  are  addi>onal  comments  to  aid  program  analysis  and   debugging.   •  Note  that  two  types  of  labels  are  used  in  program  to   represent  numbers.   •  Label  equates  are  used  at  the  top  of  the  program  to  declare   labels  for  the  file  registers  which  will  be  used  in  the   program.  Address  labels  are  placed  in  the  first  column  to   mark  the  des>na>on  for  GOTO  and  CALL  instruc>ons.  
  • 29. 1/28/13   29   Chip  Configura>on  Word   •  The  assembler  direc>ve  __CONFIG  is  included  at   the  top  of  the  program,  which  sets  up  aspects  of   the  chip  opera>on  which  cannot  be  subsequently   changed  without  reprogramming.     •  The  configura>on  word  is  a  special  area  of  program   memory  located  outside  the  normal  range  (address   2007h)  and  stores    chip  configura>ons  such  as  the   clock  type.   –  Done  by  loading  the  configura>on  bits  with  a  suitable   binary  code  (see  next  slide).     Chip  Configura>on  Word  
  • 30. 1/28/13   30   CODE  PROTECTION   •  Normally,  the  program  machine  code  can  be  read  back  to  the  programming  host   computer,  be  disassembled  and  the  original  source  program  recovered.   •  This  can  be  prevented  if  commercial  or  security  considera>ons  require  it.  The   code  protec>on  bits  (CP1:CP0)  disable  reads  from  selected  program  areas.   •  Program  memory  may  also  be  wriien  from  within  the  program  itself,  disabled  via   the  WRT  bit.     •  Data  EEPROM  may  also  be  protected  from  external  reads  in  the  same  way  via  the   CPD  bit,  while  internal  read  and  write  opera>ons  are  s>ll  allowed,  regardless  of   the  state-­‐of-­‐the  code  protec>on  bits.     •  bit  13-­‐12,  bit  5-­‐4   •  CP1:CP0:  FLASH  Program  Memory  Code  Protec>on  bit,  All  of  the  CP1:CP0  pairs   have  to  be  given  the  same  value  to  enable  the  code  protec>on  scheme  listed.   •  11  =  Code  protec>on  off   •  10  =  1F00h  to  1FFFh  code  protected     •  01  =  1000h  to  1FFFh  code  protected     •  00  =  0000h  to  1FFFh  code  protected   IN-­‐CIRCUIT  DEBUGGING   •  In-­‐circuit  debugging  (ICD)  allows  the  program   to  be  downloaded  aKer  the  chip  has  been   fiied  in  the  applica>on  circuit,  and  allows  it  to   be  tested  with  the  real  hardware.     •  The  normal  debugging  techniques  of  single   stepping,  breakpoints  and  tracing  can  be   applied  in  ICD  mode.    
  • 31. 1/28/13   31   LOW  VOLTAGE  PROGRAMMING   •  Normally,  when  the  chip  is  programmed,  a  high   voltage  (12–14  V)  is  applied  to  the  PGM  pin  (RB3).     •  To  avoid  the  need  to  supply  this  voltage  during  in-­‐ circuit  programming  (e.g.  during  remote   reprogramming),  a  low-­‐voltage  programming   mode  is  available.   •  Using  this  op>on  means  that  RB3  is  not  then   available  for  general  I/O  func>ons  during  normal   opera>on.   POWER-­‐UP  TIMER   •  When  the  supply  power  is  applied  to  the  programmed   MCU,  the  start  of  program  execu>on  should  be   delayed  un>l  the  power  supply  and  clock  are  stable,   otherwise  the  program  may  not  run  correctly.     •  The  power-­‐up  >mer  may  therefore  be  enabled   (PWRTE  0)  as  a  maier  of  rou>ne.     •  It  avoids  the  need  to  reset  the  MCU  manually  at  start   up,  or  connect  an  external  reset  circuit,  as  is  necessary   with  some  microprocessors.     •  At  a  clock  frequency  of  4  MHz,  this  works  out  to   256μs.  
  • 32. 1/28/13   32   BROWN-­‐OUT  RESET   •  Brown  out  refers  to  a  short  dip  in  the  power-­‐supply  (PSU)   voltage,  caused  by  mains  supply  fluctua>on,  or  some   other  supply  fault,  which  might  disrupt  the  program   execu>on.     •  If  the  Brown-­‐Out  Detect  Enable  bit  (BODEN)  is  set,  a  PSU   glitch  of  longer  than  about  100  μs  will  cause  the  device  to   be  held  in  reset  un>l  the  supply  recovers,  and  then  wait   for  the  power-­‐up  >mer  to  >me  out,  before  restar>ng.  The   program  must  be  designed  to  recover  automa>cally.   WATCHDOG  TIMER   •  The  watchdog  >mer  is  designed  to  automa>cally  reset  the  MCU  if   the  program  malfunc>ons,  by  stopping  or  genng  stuck  in  loop.     •  This  could  be  caused  by  an  undetected  bug  in  the  program,  an   unplanned  sequence  of  inputs  or  supply  fault.     •  A  separate  internal  oscillator  and  counter  automa>cally   generates  a  reset  about  every  18  ms,  unless  this  is  disabled  in  the   configura>on  word.     •  If  the  watchdog  >mer  is  enabled,  it  should  be  regularly  reset  by   an  instruc>on  in  the  program  loop  (CLRWDT)  to  prevent  the   reset.     •  If  the  program  hangs,  and  the  watchdog  >mer  reset  instruc>on   not  executed,  the  MCU  will  restart,  and  (possibly)  con>nue   correctly,  depending  on  the  nature  of  the  fault.  
  • 33. 1/28/13   33   RC  OSCILLATOR   •  The  MCU  clock  drives  the  program  along,  providing   the  >ming  signals  for  program  execu>on.     •  The  RC  (resistor–capacitor)  clock  is  cheap  and   useful.  It  allows  opera>ng  with  the  internal  clock   driver  circuit,  to  generate  the  clock.     •  The  >me  constant  (product  R  X  C)  determines  the   clock  period.     •  A  variable  resistor  can  be  used  to  give  a  manually   adjustable  frequency,  although  it  is  not  very  stable   or  accurate.   CRYSTAL  (XTAL)  OSCILLATOR   •  Used  for  greater  precision   –  uses  the  hardware  >mers  to  make  accurate  measurements     –  generate  precise  output  signals   •  Normally,  it  is  connected  across  the  clock  pins  with  a  pair  of  small  capacitors  (15   pF)  to  stabilize  the  frequency.     •  The  crystal  acts  as  a  self-­‐contained  resonant  circuit,  where  the  quartz  or  ceramic   crystal  vibrates  at  a  precise  frequency  when  subject  to  electrical  s>mula>on.   •  A  convenient  value  (used  in  our  examples  later)  is  4  MHz;  this  gives  an  instruc>on   cycle  >me  of  1  μs   –  This  is  the  maximum  frequency  allowed  for  the  XT  configura>on  senng.   •  Opera>ng  at  higher  frequency  requires  the  selec>on  of  the  HS  configura>on   op>on.   •  Each  instruc>on  takes  four  clock  cycles    
  • 34. 1/28/13   34   CONFIGURATION  SETTINGS   •  The  default  senng  for  the  configura>on  bits  is  3FFF,  which   means     –  The  code  protec>on  is  off   –  In-­‐circuit  debugging  disabled     –  Program  write  enabled   –  Low-­‐voltage  programming  enabled   –  Brown-­‐out  reset  enabled   –  Power-­‐up  >mer  disabled   –  Watchdog  >mer  enabled   –  RC  oscillator  selected.     •  A  typical  senng  for  basic  development  work  would  enable   in-­‐circuit  debugging,  enable  the  power-­‐up  >mer   –  This  would  minimize  the  possibility  of  a  faulty  start-­‐up.   •  For  reliable  star>ng,  disable  the  watchdog  >mer  and  use  the   XT  oscillator  type.   –  By  default,  the  watchdog  >mer  is  enabled.     PIC  Instruc>on  Set   •  It  consists  of  35  separate  instruc>ons,  some  with   alternate  result  des>na>ons.   •  The  default  des>na>on  for  the  result  of  an   opera>on  is  the  file  register,  but  the  working   register  W  is  some>mes  an  op>on.   •     
  • 35. 1/28/13   35   PIC  Instruc>on  Set  –  cont.   PIC  Instruc>on  Set  –  cont.  
  • 36. 1/28/13   36   MOVE  instruc>on   •  The  contents  of  a  register  are  copied  to  another.     •  No>ce  that  we  cannot  move  a  byte  directly  from  one   file  register  to  another,  it  has  to  go  via  the  working   register.     •  To  put  data  into  the  system  from  the  program  (a   literal)  we  must  use  MOVLW  to  place  the  literal  into  W   ini>ally.     –  It  can  then  be  moved  to  another  register  as  required.   •  To  move  a  byte  from  W  to  a  file  register,  MOVWF  is   used.     •  To  move  it  the  other  way,  MOVF  F,W  is  used,  where  F   is  any  file  register  address.     •  MOVF  F,F  is  also  available.   –  Can  be  used  to  test  a  register  without  changing  it.   REGISTER   •  Register  opera>ons  affect  only  a  single  register,  and  all   except  CLRW  (clear  W)  operate  on  file  registers.     •  Clear  sets  all  bits  to  zero  (00h)     •  Decrement  decreases  the  value  by  1   •  Increment  increases  it  by  1.     •  Swap  exchanges  the  upper  and  lower  four  bits  (nibbles).     •  Complement  inverts  all  the  bits,  which  in  effect  negates  the   number.     •  Rotate  moves  all  bits  leK  or  right,  including  the  carry  flag  in   this  process.     •  Clear  and  set  a  bit  operate  on  a  selected  bit,  where  the   register  and  bit  need  to  be  specified  in  the  instruc>on.  
  • 37. 1/28/13   37   ARITHMETIC  &  LOGIC   •  Addi>on  and  subtrac>on  uses  the  carry  flag.   – If  the  result  generates  an  extra  bit  (e.g.  FF  +  FF  =   1FE),  or  requires  a  borrow  (e.g.  1FE–FF  =  FF),  the   carry  flag  is  used.     •  Logic  opera>ons  are  carried  out  on  bit  pairs   (e.g.  00001111  AND  01010101=  00000101).     TEST,  SKIP  &  JUMP   •  Condi>onal  jumps  are  ini>ated  using  a  bit  test  and  condi>onal  skip,   followed  by  a  GOTO  or  CALL.   •  The  bit  test  can  be  made  on  any  file  register  bit.     –  This  could  be  a  port  bit,  to  check  if  an  input  has  changed,  or  a  status  bit  in  a   control  register.   •  BTFSC  (Bit  Test  and  Skip  if  Clear)  and  BTFSS  (Bit  Test  and  Skip  if  Set)  are   used  to  test  the  bit  and  skip  the  next  instruc>on,  or  not,  according  to  the   state  of  the  bit  tested.     •  DECFSZ  and  INCFSZ  embody  a  commonly  used  test  –  decrement  or   increment  a  register  and  jump  depending  on  the  effect  of  the  result  on  the   zero  flag  (Z  is  set  if  result    0).     •  The  bit  test  and  skip  may  be  followed  by  a  single  instruc>on  to  be  carried   out  condi>onally,  but  GOTO  and  CALL  allow  a  block  of  condi>onal  code.   •  Using  GOTO  label  simply  transfers  the  program  execu>on  point  to  some   other  point  in  the  program  indicated  by  a  label  in  the  first  column  of  the   source  code  line.   •  A  CALL  label  means  that  the  program  returns  to  the  instruc>on  following   the  CALL  when  RETURN  is  encountered  at  the  end  of  the  subrou>ne.   –  Another  op>on  is  RETLW  (Return  with  Literal  in  W).  See  the  KEYPAD.     –  RETFIE  (Return  From  Interrupt)  will  be  explained  later.  
  • 38. 1/28/13   38   CONTROL   •  NOP  simply  does  nothing  for  one  instruc>on  cycle   (four  clock  cycles).     –  very  useful  for  punng  short  delays  in  the  program   •  SLEEP  stops  the  program,  such  that  it  can  be   restarted  with  an  external  interrupt.     •  The  unused  loca>ons  contain  the  code  3FFF  (all  1   s),  which  is  a  valid  instruc>on  (ADDLW  FF).     •  CLRWDT  means  clear  the  watchdog  >mer.  If  the   program  gets  stuck  in  a  loop  or  stops  for  any  other   reason,  it  will  be  restarted  automa>cally  by  the   watchdog  >mer.     •  To  stop  this  from  happening,  the  watchdog  >mer   must  be  reset  at  regular  intervals  of  less  than,  say,   10  ms,  within  the  program  loop,  using  CLRWDT.   OPTIONAL  INSTRUCTIONS   •  TRIS  was  an  instruc>on  originally  provided  to  make  port   ini>aliza>on  simpler.     –  It  selects  register  bank  1  so  that  the  TRIS  data  direc>on  registers   (TRISA,  TRISB,  etc.)  can  be  loaded  with  a  data  direc>on  code  (e.g.   0àoutput).     •  The  manufacturer  no  longer  recommends  use  of  this   instruc>on,  although  it  is  s>ll  supported     •  The  assembler  direc>ve  BANKSEL  can  be  used   –  It  gives  more  flexible  access  to  the  registers  in  banks  1,  2,  3.     •  The  other  op>on  is  to  change  the  bank  select  bits  in  the   STATUS  register  directly,  using  BSF  and  BCF.     •  OPTION,  providing  special  access  to  the  OPTION  register,  is   the  other  instruc>on,  which  is  no  longer  recommended.     –  It  can  be  replaced  by  BANKSEL  to  select  bank  1  which  contains  the   OPTION  register,  which  can  then  be  accessed  directly.  
  • 39. 1/28/13   39   Program  Execu>on   •  The  program  counter  keeps  track  of  program   execu>on;  it  clears  to  zero  on  power  up  or  reset.     •  With  8k  of  program  memory,  a  count  from  0000  to   1FFF  (8191)  à  requires  (13  bits).     •  The  PCL  (Program  Counter  Low)  register  (SFR  02)   contains  the  low  byte,  and  this  can  be  read  or   wriien  like  any  other  file  register.     •  The  high  byte  is  only  indirectly  accessible  via   PCLATH  (Program  Counter  Latch  High,  SFR  0Ah).   SUBROUTINES   •  A  label  is  used  at  the  start  of  the  subrou>ne   •  When  a  subrou>ne  is  called  (Using  the  CALL  instruc>on),     –  the  des>na>on  address  is  copied  into  the  program  counter   –  the  return  address  (the  one  following  the  CALL)  is  pushed  onto  the  stack   •  In  the  PIC,  there  are  8  stack  address  storage  levels,  which  are   used  in  turn.     •  The  subrou>ne  is  terminated  with  a  RETURN  instruc>on   –  causes  the  program  to  go  back  to  the  original  posi>on  and  con>nue.     –  achieved  by  popping  the  address  from  the  top  of  the  stack  and  replacing   it  in  the  program  counter.     •  CALL  and  RETURN  must  always  be  used  in  sequence  to  avoid  a   stack  error,  and  a  possible  program  crash.     •  In  the  PIC,  the  stack  is  not  directly  accessible  
  • 40. 1/28/13   40   INTERRUPTS   •  The  stack  is  used  when  an  interrupt  is  processed.     •  An  interrupt  is  effec>vely  a  call  and  return  which  is  ini>ated   by  an  external  hardware  signal     •  Forces  the  processor  to  jump  to  a  dedicated  instruc>on   sequence,  an  Interrupt  Service  Rou>ne  (ISR).     –  For  example,  the  MCU  can  be  set  up  so  that  when  a  hardware  >mer   >mes  out  (finishes  its  count),  the  process  required  at  that  >me  is   called  via  a  >mer  interrupt.   •  When  an  interrupt  signal  is  received,   –   the  current  instruc>on  is  completed  and     –  the  address  of  the  next  instruc>on  (the  return  address)  is  pushed   into  the  first  available  stack  loca>on.     –  The  ISR  is  called   –  The  ISR  is  terminated  with  the  instruc>on  RETFIE  (return  from   interrupt),  which  causes  the  return  address  to  be  pulled  from  the   stack.     –  Program  execu>on  then  restarts  at  the  original  loca>on.     •  If  necessary,  the  registers  must  be  saved  at  the  beginning  of   the  ISR,  and  restored  at  the  end,  in  spare  set  of  file  registers.    
  • 41. 1/28/13   41   PAGE  BOUNDARIES   •  Jump  instruc>ons  (CALL  or  GOTO)  provide  only   an  11-­‐bit  des>na>on  address,  so  the  program   memory  is  effec>vely  divided  into  four  2k   blocks,  or  pages.     •  A  jump  across  the  program  memory  page   boundary  requires  the  page  selec>on  bits  to   be  modified  by  the  user  program.     •  Sec>ons  2.3  and  2.4  in  the  16F877  data  sheet   contain  detail  how  to  handle  these  problems.     Special  Func>on  Registers   •  Program  Counter  (PCL)   – PCL  contains  the  low  8  bits  of  the  program  counter   – the  upper  bits  (PC<8–12>)  are  accessed  via  PCLATH.     – PCL  is  incremented  during  each  instruc>on   – The  contents  replaced  during  a  GOTO,  CALL   (program  address)  or  RETURN  (stack).    
  • 42. 1/28/13   42   The  STATUS  register   •  The  status  register  records  the  result  of  certain   opera>ons,  MCU  power  status  and  includes  the   bank  selec>on  bits     •  It  is  recommended,  that  only  BCF,  BSF,  SWAPF  and   MOVWF  instruc>ons  are  used  to  alter  the  STATUS   register,  because  these  instruc>ons  do  not  affect   the  Z,  C  or  DC  bits  from  the  STATUS  register.    
  • 43. 1/28/13   43   ZERO  FLAG  (Z)   •  This  is  set  when  the  result  of  a  register   opera>on  is  zero,  and  cleared  when  it  is  not   zero.     •  Bit  test  and  skip  instruc>ons  use  this  flag  for   condi>onal  branching.     – these  do  not  affect  the  zero  flag  itself.     •  A  typical  use  of  the  zero  flag  is  to  check  if  two   numbers  are  the  same  by  subtrac>ng  and   applying  bit  test  and  skip  to  the  Z  bit.   CARRY  FLAG  (C)   •  This  flag  is  only  affected  by  add,  subtract  and  rotate   instruc>ons.     –  When  two  8-­‐bit  numbers  give  a  9-­‐bit  sum.    The  carry  bit   must  then  be  included  in  subsequent  calcula>ons  to  give   the  right  result.     –  When  subtrac>ng,  the  carry  flag  must  be  set  ini>ally,   because  it  provides  the  borrow  digit  (if  required)  in  the   most  significant  bit  of  the  result.  If  the  carry  flag  is  cleared   aKer  a  subtrac>on,  it  means  the  result  was  nega>ve   •  Taken  together,  the  zero  and  carry  flags  allow  the   result  of  an  arithme>c  opera>on  to  be  detected  as   posi>ve,  nega>ve  or  zero,  as  shown  in  next  slide.  
  • 44. 1/28/13   44   Arithme>c  results   DIGIT  CARRY  (DC)   •  A  file  register  can  be  seen  as  containing  8   individual  bits,  or  1  byte.     •  It  can  also  be  used  as  two  4-­‐bit  nibbles.     •  The  digit  carry  records  a  carry  from  the  most   significant  bit  of  the  low  nibble  (bit  3).  (same   as  auxiliary  carry  in  Intel)   – Allows  4-­‐bit  hexadecimal  arithme>c  to  be  carried   out  in  the  same  way  as  8-­‐bit  binary  arithme>c  uses   the  carry  flag  C.  
  • 45. 1/28/13   45   REGISTER  BANK  SELECT  (RP1:RP0)   •  The  PIC  16F877  file  register  RAM  is  divided  into  four  banks   of  128  loca>ons,  banks  0–3     •  At  power  on  reset,  bank  0  is  selected  by  default.   •  To  access  the  others,  these  register  bank  select  bits  must  be   changed,   •  Some  registers  are  repeated  in  more  than  one  bank,  making   it  easier  and  quicker  to  access  them  when  switched  to  that   bank.     –  Ex:  status  register  repeats  in  all  banks.     •  A  block  of  GPRs  at  the  end  of  each  bank  repeat,  so  that  their   data  contents  are  available  without  changing  banks.   •  The  pseudo-­‐opera>on  BANKSEL  can  be  used.     •  The  operand  for  BANKSEL  is  any  register  in  that  bank,  or  its   –  In  effect,  BANKSEL  detects  the  bank  bits  in  the  register  address  and   copies  them  to  the  status  register  bank  select  bits.   Register  bank  select  
  • 46. 1/28/13   46   POWER  STATUS  BITS   •  There  are  two  read  only  bits  in  the  status   register  which  indicate  the  overall  MCU  status.     •  The  Power  Down  (PD)  bit  is  clear  to  zero  when   SLEEP  mode  is  entered.     •  The  Time  Out  (TO)  bit  is  cleared  when  a   watchdog  >me  out  has  occurred.   Parallel  input/output   •  To  transfer  data  between  uC  CPU  and  the   outside  world   – switches,  keypads,  light-­‐eminng  diodes  (LEDs),   displays,  external  sensors  (analog-­‐to-­‐digital   converter),  motors  or  other  actuators,  and  sending   serial  data  to  an  external  memory.    
  • 47. 1/28/13   47   Ports   •  There  are  five  parallel  ports  in  the  PIC  16F877,  labelled  A–E.     •  All  pins  can  be  used  as  bit-­‐  or  byte-­‐oriented  digital  input  or   output  with     –  Some  having  alternate  func>ons  depending  on  the  ini>aliza>on  of   the  relevant  control  registers.     •  The  TRIS  (data  direc>on)  register  bits  in  bank  1,  default  to  1,   senng  the  ports  B,  C  and  D  as  inputs.     •  Ports  A  and  E  are  set  to  ANALOGUE  INPUT  by  default,   because  the  analogue  control  register  ADCON1  in  bank  1   defaults  to  0  -­‐  -­‐  -­‐  0000.     •  To  set  up  these  ports  for  digital  I/O,  this  register  must  be   loaded  with  the  code  x  -­‐  -­‐  -­‐  011x  (x    don’t  care),e.g.  06h.     •  ADCON1  can  be  ini>alized  with  bit  codes  that  give  a  mixture   of  analogue  and  digital  I/O  on  Ports  A  and  E.   •  ADCON1  is  in  bank  1  so  BANKSEL  is  needed  to  access  it.   Port  func>ons  
  • 48. 1/28/13   48    Two  bits  of  a  possible  digital  output   port    Two  bits  of  a  possible  digital  input  port  
  • 49. 1/28/13   49   Combine  the  two  circuits  to  create  a   programmable  bidirec>onal  input/output  pin   Timers   •  The  PIC  16F877  has  three  hardware  >mers.   –  Used  to  carry  out  >ming  opera>ons  simultaneously  with  the   program.   –  Ex.:  Genera>ng  a  pulse  every  second  at  an  output.   •  Timer0  uses  an  8-­‐bit  register   –  TMR0,  file  register  address  01.     –  The  register  counts  from  0  to  255,  and  then  rolls  over  to  00  again.   –  When  the  register  goes  from  FF  to  00,    an  overflow  flag,  T0IF,  bit  2   in  the  Interrupt  Control  Register  INTCON,  address  0B,  is  set.     •  The  >mer  register  is  incremented  via  a  clock  input  from   either  the  MCU  oscillator  (fOSC)  or  an  external  pulse  train  at   RA4.     •  If  the  internal  clock  is  used,  the  register  acts  as  a  >mer.     •  The  >mers  are  driven  from  the  instruc>on  clock  (fOSC/4).     •  If  the  chip  is  driven  from  a  crystal  of  4  MHz,  the  instruc>on   clock  will  be  1  MHz,  and  the  >mer  will  update  every  1us.  
  • 50. 1/28/13   50   Timers  –  cont.   •  A  >mer  can  work  as  a  counter.     –  Counts  external  pulses     –  >mers  can  also  be  used  as  counters.     •  Timer0,  can  be  controlled  by  a  pre-­‐scaler,  see  next  slide.   •  The  pre-­‐scaler  is  a  divide  by  N  register,  where  N    2,  4,  8,  16,   32,  64,  128  or  256,  meaning  that  the  output  count  rate  is   reduced  by  this  factor.     •  This  extends  the  count  period  or  total  count  by  the  same   ra>o,  giving  a  greater  range  to  the  measurement.     •  The  watchdog  >mer  interval  can  also  be  extended,  if  this  is   selected  as  the  clock  source.     •  The  pre-­‐scale  select  bits,  and  other  control  bits  for  Timer0   are  found  in  OPTION_REG.      BLOCK  DIAGRAM  OF  THE  TIMER0/WDT  PRESCALER  
  • 51. 1/28/13   51    OPTION_REG  REGISTER   Each  of  the  PORTB  pins  has  a  weak  internal   pull-­‐up.  A  single  control  bit  can  turn  on  all   the  pull-­‐ups.  This  is  performed  by  clearing   bit  RBPU  (OPTION_REG<7>).  The  weak  pull-­‐ up  is  automa>cally  turned  off  when  the   port  pin  is  configured  as  an  output.  The   pull-­‐ups  are  disabled  on  a  Power-­‐on  Reset.   RB0/INT  is  an  external  interrupt  input  pin   and  is  configured  using  the  INTEDG  bit   (OPTION_REG<6>).   Typical  configura>ons  for  Timer0  
  • 52. 1/28/13   52   Timers  –  cont.   •  Timer1  is  a  16-­‐bit  counter,  consis>ng  of  TMR1H  and  TMR1L   (addresses  0E  AND  0F).   –  When  the  low  byte  rolls  over  from  FF  to  00,  the  high  byte  is   incremented.     –  The  maximum  count  is  therefore  65535,  which  allows  a  higher   count  without  sacrificing  accuracy.   •  Timer2  is  an  8-­‐bit  counter  (TMR2)  with  a  4-­‐bit  pre-­‐scaler,  4-­‐ bit  post-­‐scaler  and  a  comparator.     –  It  can  be  used  to  generate  Pulse  Width  Modulated  (PWM)  output   which  is  useful  for  driving  DC  motors  and  servos,  among  other   things.     •  These  >mers  can  also  be  used  in  capture  and  compare   modes,  which  allow  external  signals  to  be  more  easily   measured.     Indirect  File  Register  Addressing   •  File  register  00  (INDF)  is  used  for  indirect  file  register   addressing.     •  The  address  of  the  register  is  placed  in  the  file  select  register   (FSR).     •  When  data  is  wriien  to  or  read  from  INDF,  it  is  actually   wriien  to  or  read  from  the  file  register  pointed  to  by  FSR.     •  This  is  most  useful  for  carrying  out  a  read  or  write  on  a   con>nuous  block  of  GPRs,   –  For  example,  when  saving  data  being  read  in  from  a  port  over  a   period  of  >me.     •  Since  nine  bits  are  needed  to  address  all  file  registers  (000– 1FF),  the  IRP  bit  in  the  status  register  is  used  as  the  extra  bit.    
  • 53. 1/28/13   53   Direct  and  indirect  addressing  of  the  file  registers   Interrupt  Control  Registers   •  The  registers  involved  in  interrupt  handling  are  INTCON,  PIR1,  PIR2,  PIE1,   PIE2  and  PCON.     •  Interrupts  are  external  hardware  signals  which  force  the  MCU  to  suspend   its  current  process,  and  carry  out  an  Interrupt  Service  Rou>ne  (ISR).     •  In  PIC  when  an  interrupt  occurs  the  program  execu>on  jumps  to  address   004.     •  By  default,  interrupts  are  disabled.   •  If  interrupts  are  to  be  used     –  the  main  program  start  address  needs  to  be  0005,  or  higher,  and  a  ‘GOTO   start’  (or  similar  label)  placed  at  address  0000.       –  A  ‘GOTO  ISR’  instruc>on  can  then  be  placed  at  004,  using  the  ORG  direc>ve,   which  sets  the  address  at  which  the  instruc>on  will  be  placed  by  the  assembler.   –  The  Global  Interrupt  Enable  bit  (INTCON,  GIE)  must  be  set  to  enable  the  interrupt   system.     –  The  individual  interrupt  source  is  then  enabled.     –  For  example,  the  bit  INTCON,  T0IE  is  set  to  enable  the  Timer0  overflow  to  trigger   the  interrupt  sequence.     –  When  the  >mer  overflows,  INTCON,  T0IF  (Timer0  Interrupt  Flag)  is  set  to  indicate   the  interrupt  source,  and  the  ISR  called.     •  The  flags  can  be  checked  by  the  ISR  to  establish  the  source  of  the   interrupt,  if  more  than  one  is  enabled.  
  • 54. 1/28/13   54   Interrupt  sources  and  control  bits   Macros,  Special  Instruc>ons,  Assembler  Direc>ves   Another  structured   •  Supplementary  instruc>ons  
  • 55. 1/28/13   55   Program  Design  and  flowcharts   •  There  are  two  main  forms  of  flowchart.     – Data  flowcharts:  used  to  represent  complex  data   processing  systems   – Program  flow  charts:  used  to  represent  overall   program  structure  and  sequence,  but  not  the   details.   Previous  Example  flow  chart  
  • 56. 1/28/13   56   Flowchart  implementa>on   Input  &  Output  (Interfacing)   •  Switch  Input   – input  loading  and  debouncing.  
  • 57. 1/28/13   57   Switch  Debouncing   •  Delay   •  Schmit  trigger   •  capacitor   Timer  and  Interrupts   •  Allows  the  MCU  to  proceed  with  other  tasks  while   carrying  out  a  >ming  opera>on  concurrently.     •  Ex:  debouncing   – If  a  hardware  >mer  is  started  when  the  switch  is  first   closed,  the  closure  can  be  confirmed  by  retes>ng  the   input  aKer  a  >me  delay  to  check  if  it  is  s>ll  closed.     – Alterna>vely,  the  switch  input  can  be  processed  aKer   the  buion  is  released,  rather  than  when  it  is  closed.   The  system  responds  when  the  switch  is  released   rather  than  when  it  is  pressed.  
  • 58. 1/28/13   58   Timer  0   •  Show  (LED1H  design  and  code)     –  which  illustrates  the  use  of  a  hardware  >mer  and  the  use  of   interrupt.     •  TMR0  (Timer0)  is  located  at  file  register  address  01.     •  It  operates  as  an  8-­‐bit  binary  up  counter,  driven  from   an  external  or  internal  clock  source.     •  The  count  increments  with  each  input  pulse,  and  a  flag   is  set  when  it  overflows  from  FF  to  00.     •  It  can  be  pre-­‐loaded  with  a  value  so  that  the  >me  out   flag  is  set  aKer  the  required  interval.     –  For  example,  if  it  is  pre-­‐loaded  with  the  number  15610,  it   will  overflow  aKer  100  counts  (25610).  
  • 59. 1/28/13   59   Keypad  Input   •  A  keypad  is  simply  an  array  of  push  buions  connected  in  rows  and  columns,  so   that  each  can  be  tested  for  closure  with  the  minimum  number  of  connec>ons.     •  There  are  12  keys  on  a  phone  type  pad  (0–9,  #,  ∗),  arranged  in  a  3X4  matrix.  The   columns  are  labelled  1,  2,  3  and  the  rows  A,  B,  C,  D.     Keypad  Input  –  cont.   •  If  we  assume  that  all  the  rows  and  columns   are  ini>ally  high,  a  keystroke  can  be  detected   by  senng  each  row  low  in  turn  and  checking   each  column  for  a  zero.   •  In  the  KEYPAD  circuit,  the  7  keypad  pins  are   connected  to  Port  D.     – Bits  4–7  are  ini>alized  as  outputs,  and  bits  0–2  used   as  inputs.     •  The  input  pins  are  pulled  high  to  logic  1.  The   output  rows  are  also  ini>ally  set  to  1.    
  • 60. 1/28/13   60   Keypad  opera>on   •  If  a  0  is  now  output  on  row  A,  there  is  no  effect  on  the  inputs   unless  a  buion  in  row  A  is  pressed.  If  these  are  checked  in  turn   for  a  0,  a  buion  in  this  row  which  is  pressed  can  be  iden>fied  as   a  specific  combina>on  of  output  and  input  bits.   •  A  simple  way  to  achieve  this  result  is  to  increment  a  count  of  keys   tested  when  each  is  checked,  so  that  when  a  buion  is  detected,   the  scan  of  the  keyboard  is  terminated  with  current  key  number   in  the  counter.     •  This  works  because  the  (non-­‐zero)  numbers  on  the  keypad   arranged  in  order:   –  Row  A    1,  2,  3   –  Row  B    4,  5,  6   –  Row  C    7,  8,  9   –  Row  D    *,  0,  #   •  Following  this  system,  the  star  symbol  is  represented  by  a  count   of  10  (0Ah),  zero  by  11(0Bh)  and  hash  by  12  (0C).   •  Show  Keypad  design  and  code.   Calculator  
  • 61. 1/28/13   61   •  The  calculator  operates  as  follows:   – To  perform  a  calcula>on,  press  a  number  key,  then   an  opera>on  key,  then  another  number  and  then   equals.   – The  calcula>on  and  result  are  displayed.  For  the   divide  opera>on,  the  result  is  displayed  as  result   and  remainder.     Pseudo  code  for  the  calculator  •  CALC   –  Single  digit  calculator  produces  two  digit  results.   –  Hardware:  x12  keypad,  2x16  LCD,  P16F887  MCU   •  MAIN   •  Ini>alise   –  PortC  =  keypad   •  RC0  –  RC3  =  output  rows   •  RC4  –  RC7  =  input  columns   –  PortD  =  LCD   •  RD1,  RD2  =  control  bits   •  RD4–  RD7  =  data  bits   –  CALL  Ini>alise  display   •  Scan  Keypad   –  REPEAT   •  CALL  Keypad  input,  Delay  50ms  for  debounce   •  CALL  Keypad  input,  Check  key  released   •  IF  first  key,  load  Num1,  Display  character  and  restart  loop   •  IF  second  key,  load  sign,  Display  character  and  restart  loop   •  IF  third  key,  load  Num2  Display  character  and  restart  loop   •  IFfourth  key,  CALL  Calculate  result   •  IF  fiKh  key,  Clear  display   –  ALWAYS  
  • 62. 1/28/13   62   Subrou>nes     •  Included  LCD  driver  rou>nes   –  Ini>alise  display   –  Display  character   •  Keypad  Input   –  Check  row  A,  IF  key  pressed,  load  ASCII  code   –  Check  row  B,  IF  key  pressed,  load  ASCII  code   –  Check  row  C,  IF  key  pressed,  load  ASCII  code   –  Check  row  D,  IF  key  pressed,  load  ASCII  code   –  ELSE  load  zero  code   •  Calculate  result   –  IF  key  =  ‘+’,  Add   –  IF  key  =  ‘-­‐‘,  Subtract   –  IF  key  =  ‘x’,  Mul>ply   –  IF  key  =  ‘/’,  Divide   –  Add  Add  Num1  +  Num2   •  Load  result,  CALL  Two  digits   –  Subtract  Subtract  Num1  –  Num2   •  IF  result  nega>ve,  load  minus  sign,  CALL  Display  character   •  Load  result,  CALL  Display  character   Subrou>nes  –  cont.   –  Mul>ply   •  REPEAT   •  Add  Num1  to  Result   •  Decrement  Num2   •  UNTIL  Num2=  0   •  Load  result,  CALL  Two  digits   –  Divide   •  REPEAT   •  Subtract  Num2  from  Num1   •  Increment  Result   •  UNTIL  Num1  nega>ve   •  Add  Num2  back  onto  Num1  for  Remainder   •  Load  Result,  CALL  Display  character   •  Load  Remainder,  CALL  Display  character   •  Two  digits   –  Divide  result  by  10,  load  MSD,  CALL  Display  character   –  Load  LSD,  CALL  Display  character  
  • 63. 1/28/13   63   •  Show  calc  code  and  design     ADC   •  Registers  used       – ADCON0   – ADCON1   – The  output  from  the  converter  is  stored  in  ADRESH   (analogue  to  digital  conversion  result,  high  byte)   and  ADRESL  (low  byte).     •  Show  ADC  code  and  design  (VINTEST)  
  • 64. 1/28/13   64   8-­‐bit  Conversion   •  The  16F877  MCU  has  eight  analogue  inputs  available,   at  RA0,  RA1,  RA2,  RA3,  RA5,  RE0,  RE1  and  RE2.     •  RA2  and  RA3  may  be  used  as  reference  voltage  inputs,   senng  the  minimum  and  maximum  values  for  the   measured  voltage  range.     •  These  inputs  default  to  analogue  opera>on,  so  the   register  ADCON1  has  to  be  ini>alized  explicitly  to  use   these  pins  for  digital  input  or  output.   •  The  ADC  converts  an  analogue  input  voltage  (e.g.  0  –   2.56V)  to  10-­‐bit  binary,  but  only  the  upper  8  bits  of   the  result  are  used,  giving  a  resolu>on  of  10  mV  per   bit  ((1/256)  X  2.56  V).   ADC  block  diagram  
  • 65. 1/28/13   65   ADC  OPERATION   •  The  inputs  are  connected  to  a  func>on  selector  block  which  sets   up  each  pin  for  analogue  or  digital  opera>on  according  to  the  4-­‐ bit  control  code  loaded  into  the  A/D  port  configura>on  control   bits,  PCFG0–PCFG3  in  ADCON1.     –  The  code  used,  0011,  sets  Port  E  as  digital  I/O,  and  Port  A  as  analogue   inputs  with  AN3  as  the  posi>ve  reference  input.   •  The  analogue  inputs  are  then  fed  to  a  mul>plexer  which  allows   one  of  the  eight  inputs  to  be  selected  at  any  one  >me.     –  This  is  controlled  by  the  three  analogue  channel  select  bits,  CHS0–CHS2  in   ADCON0.     –  In  the  example,  channel  0  is  selected  (000),  RA0  input.     –  If  more  than  one  channel  is  to  be  sampled,  these  select  bits  need  to  be   changed  between  ADC  conversions.     •  The  conversion  is  triggered  by  senng  the  GO/DONE  bit,  which  is   later  cleared  automa>cally  to  indicate  that  the  conversion  is   complete.     ADC  control  registers  
  • 66. 1/28/13   66   ADC  Test  Circuit   ADC  clock   •  The  speed  of  the  conversion  is  selected  by  bits  ADSC1  and  ADSC0.     •  The  ADC  operates  by  successive  approxima>on;     –  this  means  that  the  input  voltage  is  fed  to  a  comparator,  and  if  the  voltage  is   higher  than  50%  of  the  range,  the  MSB  of  the  result  is  set  high.     –  The  voltage  is  then  checked  against  the  mid-­‐point  of  the  remaining  range,  and  the   next  bit  set  high  or  low  accordingly,  and  so  on  for  10  bits.     •  This  takes  a  significant  amount  of  >me:  the  minimum  conversion  >me  is   1.6  μs  per  bit,  making  16  μs  for  a  10-­‐bit  conversion.     •  The  ADC  clock  speed  must  be  selected  such  that  this  minimum  >me   requirement  is  sa>sfied;     •  The  MCU  clock  is  divided  by  2,  8  or  32  as  necessary.     •  Our  simulated  test  circuit  is  clocked  at  4  MHz.  This  gives  a  clock  period  of   0.25  μs.  We  need  a  conversion  >me  of  at  least  1.6  μs;  if  we  select  the   divide  by  8  op>on,  the  ADC  clock  period  will  then  be  8  X  0.25  =  2  μs,  which   is  just  longer  than  the  minimum  required.   •  The  select  bits  are  therefore  set  to  01.