0% found this document useful (0 votes)
233 views59 pages

Pic 16F84

This document provides an overview of two microcontrollers: the PIC 16F84 and PIC 16F877. It discusses the architecture, instructions, and applications of the PIC 16F84, including its registers, timers, interrupts, and addressing modes. It also covers some of the key applications of the PIC 16F877 such as using it with a keypad, LCD, stepper motors, analog to digital conversions, timers, PWM, serial communications and graphical LCD.

Uploaded by

drago.fire.x326
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
233 views59 pages

Pic 16F84

This document provides an overview of two microcontrollers: the PIC 16F84 and PIC 16F877. It discusses the architecture, instructions, and applications of the PIC 16F84, including its registers, timers, interrupts, and addressing modes. It also covers some of the key applications of the PIC 16F877 such as using it with a keypad, LCD, stepper motors, analog to digital conversions, timers, PWM, serial communications and graphical LCD.

Uploaded by

drago.fire.x326
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 59

Microcontroller

1
Outline
• Microcontroller PIC 16F84
– Architecture, Instructions, Applications

• Microcontroller PIC 16F877


– Architecture, Applications with, Keypad, LCD, Stepper
motors, Analog to digital conversions, Timers, PWM, Serial
communications, graphical LCD

2
h e
T e r
1 : l l
r t r o
te n
a p c o 8 4
h
C ic r o 6 F
1
m IC
P

3
Plan of presentation

• Definition of microcontroller
• Architecture
• Registers
• Timers
• Interrupts
• Addressing modes
• subroutines
4
Microcontrollers versus
Microprocessors
• Microcontroller differs from a microprocessor in
many ways. First and the most important is its
functionality. In order for a microprocessor to be
used, other components such as memory, or
components for receiving and sending data must be
added to it. In short that means that microprocessor
is the very heart of the computer.

• On the other hand, microcontroller is designed to be


all of that in one. No other external components are
needed for its application because all necessary
peripherals are already built into it. Thus, we save
the time and space needed to construct devices 5
6
PIC 16F84
• PIC16F84 belongs to a class of
8-bit microcontrollers of RISC
architecture. Its general
structure is shown on the
following map representing
basic blocks.

Since PIC16F84 is a RISC
microcontroller, that means that
it has a reduced set of
instructions, more precisely 35
instructions . (ex. Intel's and
Motorola's microcontrollers have
over hundred instructions) All of
these instructions are executed
in one cycle except for jump and
branch instructions.
• 7
Pin of PIC 16F84

• PIC16F84 has a total of 18 pins.


It is most frequently found in a
DIP18 type of case but can also
be found in SMD case which is
smaller from a DIP. DIP is an
abbreviation for Dual In Package.
SMD is an abbreviation for
Surface Mount Devices
suggesting that holes for pins to
go through when mounting, aren't
necessary in soldering this type
of a component.
8
XT oscillator
• Crystal oscillator is kept in metal housing
with two pins where you have written
down the frequency at which crystal
oscillates. One ceramic capacitor of
30pF whose other end is connected to
the ground needs to be connected with
each pin. Oscillator and capacitors can
be packed in joint case with three pins.
Such element is called ceramic
resonator and is represented in charts
like the one below. Center pins of the
element is the ground, while end pins are
connected with OSC1 and OSC2 pins on
the microcontroller. When designing a
device, the rule is to place an oscillator
nearer a microcontroller, so as to avoid
any interference on lines on which
microcontroller is receiving a clock.
9
RC oscillator
• In applications where great time precision is not necessary,
RC oscillator offers additional savings during purchase.
Resonant frequency of RC oscillator depends on supply
voltage rate, resistance R, capacity C and working
temperature. It should be mentioned here that resonant
frequency is also influenced by normal variations in process
parameters, by tolerance of external R and C components,
etc.

10
Reset
• Reset is used for putting the microcontroller into a 'known' condition. That
practically means that microcontroller can behave rather inaccurately
under certain undesirable conditions. In order to continue its proper
functioning it has to be reset, meaning all registers would be placed in a
starting position. Reset is not only used when microcontroller doesn't
behave the way we want it to, but can also be used when trying out a
device as an interrupt in program execution, or to get a microcontroller
ready when loading a program.
• In order to prevent from bringing a logical zero to MCLR pin accidentally
(line above it means that reset is activated by a logical zero), MCLR has to
be connected via resistor to the positive supply pole. Resistor should be
between 5 and 10K. This kind of resistor whose function is to keep a
certain line on a logical one as a preventive, is called a pull up.

11
• Central processing unit (CPU) is the brain of a microcontroller. That part is
responsible for finding and fetching the right instruction which needs to be
executed, for decoding that instruction, and finally for its execution.
• Arithmetic logic unit is responsible for performing operations of adding,
subtracting, moving (left or right within a register) and logic operations.
Moving data inside a register is also known as 'shifting'. PIC16F84 contains
an 8-bit arithmetic logic unit and 8-bit work registers.
• Depending on which instruction is being executed, ALU can affect values of
Carry (C), Digit Carry (DC), and Zero (Z) bits in STATUS register.

12
13
PORTB and TRISB
• PORTB has adjoined 8 pins. The appropriate register for data
direction is TRISB. Setting a bit in TRISB register defines the
corresponding port pin as input, and resetting a bit in TRISB
register defines the corresponding port pin as output.

14
PORTA and TRISA
• PORTA has 5 adjoining pins. The corresponding register for
data direction is TRISA at address 85h. Like with port B, setting
a bit in TRISA register defines also the corresponding port pin
as input, and clearing a bit in TRISA register defines the
corresponding port pin as output.

15
16
Some instructions
• BSF : bit set in file register
– BSF PORTA,3
– BSF TRISA,2
• BCF : bit clear in file register
– BCF TRISB,6; RB6 is output
• MOVLW: move lateral (immediate number) to register w
– MOVLW 0x6D
– ADDLW 0x56; w+56 w
– ANDLW B’00011000’
– ADDLW D’56
17
Memory organization
PIC16F84 has two separate memory blocks, one for data and the
other for program. EEPROM memory with GPR and SFR
registers in RAM memory make up the data block, while FLASH
memory makes up the program block. 

• Program memory

Program memory has been carried out in FLASH technology


which makes it possible to program a microcontroller many
times before it's installed into a device, and even after its
installment if eventual changes in program or process
parameters should occur. The size of program memory is 1024
locations with 14 bits width where locations zero and four are
reserved for reset and interrupt vector.
18
Memory and Registers
• Data memory
Data memory consists of EEPROM and RAM memories. EEPROM memory
consists of 64 eight bit locations whose contents is not lost during loosing of
power supply. EEPROM is not  directly addressable, but is accessed
indirectly through EEADR and EEDATA registers. As EEPROM memory,
there is a strict procedure for writing in EEPROM which must be followed in
order to avoid accidental writing.

• Locations of RAM memory are also called GPR registers which is an


abbreviation for General Purpose Registers. GPR registers can be
accessed regardless of which bank is selected at the moment. 

• SFR registers
Registers which take up first 12 locations in banks 0 and 1 are registers of
specialized function assigned with certain blocks of the microcontroller.
These are called Special Function Registers.
19
Some instructions
• Movwf, f: move W to a file register
– MOVWF PORTA
– MOVLW 0x45
– MOVWF TRISA
• ADDWF f,d ;add W+fd (destination)
– ADDWF PORTA,w; porta+ww
– ADDWF PORTA,f; porta+wporta
• INCF PORTA,f; porta+1porta
• DECF PORTB,w; portb-1w
20
Bit test, indirect mode

• BTFSS PORTA,3
• GOTO label
• BTFSC INTCON,5

21
Program counter and stack
• Program Counter
Program counter (PC) is a 13-bit register that contains the address of the
instruction being executed. It is physically carried out as a combination of a
5-bit register PCLATH for the five higher bits of the address, and the 8-bit
register PCL for the lower 8 bits of the address. By its incrementing or
change (i.e. in case of jumps) microcontroller executes program instructions
step-by-step.

• Stack
PIC16F84 has a 13-bit stack with 8 levels, or in other words, a group of 8
memory locations, 13 bits wide, with special purpose. Its basic role is to
keep the value of program counter after a jump from the main program to an
address of a subprogram . In order for a program to know how to go back to
the point where it started from, it has to return the value of a program
counter from a stack.

22
Addressing modes
• Direct Addressing

Direct Addressing is done


through a 9-bit address.
This address is obtained by
connecting 7th bit of direct
address of an instruction
with two bits (RP1, RP0)
from STATUS register as is
shown on the following
picture. Any access to SFR
registers is an example of
direct addressing.
23
Addressing modes
• Indirect Addressing
Indirect unlike direct
addressing does not take an
address from an instruction
but derives it from IRP bit of
STATUS and FSR registers.
Addressed location is
accessed via INDF register
which in fact holds the
address indicated by a FSR.
In other words, any
instruction which uses INDF
as its register in reality
accesses data indicated by a
FSR register.
24
Interrupts
• Interrupts are a mechanism of a microcontroller which enables it to respond
to some events at the moment they occur, regardless of what
microcontroller is doing at the time. This is a very important part, because it
provides connection between a microcontroller and environment which
surrounds it. Generally, each interrupt changes the program flow, interrupts
it and after executing an interrupt subprogram (interrupt routine) it continues
from that same point on.

25
Interrupts
• PIC16F84 has four interrupt sources:

1. Termination of writing data to EEPROM


2. TMR0 interrupt caused by timer overflow
3. Interrupt during alteration on RB4, RB5, RB6 and RB7 pins of port B.
4. External interrupt from RB0/INT pin of microcontroller

26
27
Interrupts
• PIC16F84 has four interrupt sources:

1. Termination of writing data to EEPROM


2. TMR0 interrupt caused by timer overflow
3. Interrupt during alteration on RB4, RB5, RB6 and RB7 pins of port B.
4. External interrupt from RB0/INT pin of microcontroller

28
Interrupts
• Procedure of recording
important registers before
going to an interrupt routine
is called PUSH, while the
procedure which brings
recorded values back, is
called POP. PUSH and POP
are instructions with some
other microcontrollers (Intel),
but are so widely accepted
that a whole operation is
named after them.

• PIC16F84 does not have


instructions like PUSH and
POP, and they have to be
programmed. 29
INT0
• External interrupt on RB0/INT pin of microcontroller

External interrupt on RB0/INT pin is triggered by


rising signal edge (if bit INTEDG=1 in OPTION<6>
register), or falling edge (if INTEDG=0). When correct
signal appears on INT pin, INTF bit is set in INTCON
register. INTF bit (INTCON<1>) must be cleared in
interrupt routine, so that interrupt wouldn't occur
again while going back to the main program. This is
an important part of the program which programmer
must not forget, or program will constantly go into
interrupt routine. Interrupt can be turned off by
resetting INTE control bit (INTCON<4>). 30
TIMER0
• Timers are usually the most
complicated parts of a
microcontroller, so it is
necessary to set aside more
time for understanding them
thoroughly. Through their
application it is possible to
establish relations between a
real dimension such as "time"
and a variable which
represents status of a timer
within a microcontroller.
Physically, timer is a register
whose value is continually
increasing to 255, and then it
starts all over again: 0, 1, 2, 3,
4...255....0,1, 2, 3......etc.
31
TIMER0
• During each transition from 255 to zero, T0IF bit in INTCON register is set. If
interrupts are allowed to occur, this can be taken advantage of in generating
interrupts and in processing interrupt routine. It is up to programmer to reset
T0IF bit in interrupt routine, so that new interrupt, or new overflow could be
detected. Beside the internal oscillator clock, timer status can also be
increased by the external clock on RA4/TOCKI pin. Choosing one of these
two options is done in OPTION register through T0CS bit. If this option of
external clock was selected, it would be possible to define the edge of a
signal (rising or falling), on which timer would increase its value.

32
33
Program

• Write a program to make a delay of 1


ms using TMR0

34
Watchdog

35
EEPROM
• PIC16F84 has 64 bytes of EEPROM memory locations on addresses from
00h to 63h that can be written to or read from. The most important
characteristic of this memory is that it does not lose its contents with the
loss of power supply. Data can be retained in EEPROM without power
supply for up to 40 years (as manufacturer of PIC16F84 microcontroller
states), and up to 1 million cycles of writing can be executed.

• EEPROM memory is placed in a special memory space and can be


accessed through special registers. These registers are:

– EEDATA Holds read data or that  to be written.


– EEADR Contains an address of EEPROM location being accessed.
– EECON1Contains control bits.
– EECON2 This register does not exist physically and serves to protect
EEPROM from accidental writing.

36
37
Machine cycle
• Instruction cycle consists of cycles Q1, Q2, Q3 and Q4. Cycles of calling
and executing instructions are connected in such a way that in order to
make a call, one instruction cycle is needed, and one more is needed for
decoding and execution. However, due to pipelining, each instruction is
effectively executed in one cycle. If instruction causes a change on program
counter, and PC doesn't point to the following but to some other address
(which can be the case with jumps or with calling subprograms), two cycles
are needed for executing an instruction. This is so because instruction must
be processed again, but this time from the right address. Cycle of calling
begins with Q1 clock, by writing into instruction register (IR). Decoding and
executing begins with Q2, Q3 and Q4 clocks.

38
Interrupt location

LIST p=16F877
#include "P16F877.INC"

cblock 0x20
count, lc1, lc2;
endc

; Vector for normal start up.


org 0
goto start

org 4
goto inthlr
…..

39
Assembly language programming
• "Assembly language" and "assembler" are two different notions. The first
represents a set of rules used in writing a program for a microcontroller,
and the other is a program on the personal computer which translates
assembly language into a language of zeros and ones. A program that is
translated into  "zeros" and "ones" is also called "machine language".

40
Assembly language programming

• In order to function properly, we must define several


microcontroller parameters such as:  - type of
oscillator,
- whether watchdog timer is turned on, and
- whether internal reset circuit is enabled.
All this is defined by the following directive:

_CONFIG _CP_OFF&_WDT_OFF&PWRTE_ON&XT_OSC

41
42
INCFSZ      Increment f, skip if=0
DECFSZ

43
Other instructions

• Clrw
• Clrf
• Movf
• …

44
Macro
bank0 macro;
bcf STATUS, RP0
endm; End of macro   

bank1macro;
bsf STATUS, RP0;
endm;

Enableint macro;
bsf INTCON, 7; Set the bit 
endm; End of macro

Disableint macro; Interrupts are globally disabled 


bcf INTCON, 7; Reset the bit  45
endm; End of macro
Macro
Input macro par1, par2; Macro input 
bank1; In order to access TRIS registers 
bsf par1, par2; Set the given bit input 
bank0; Macro for selecting bank0 
endm; End of macro 

Output macro par1, par2; Macro output 


bank1; In order to access TRIS registers 
bcf par1, par2; Reset the given bit = output 
bank0; Macro for selecting bank0 
endm; End of macro
   
46
• output TRISB, 7      ; pin RB7 is output
Subroutines
• Subprogram represents a set of instructions beginning
with a label and ending with the instruction return or
retlw. Its main advantage over macro is that this set of
instructions is placed in only one location of program
memory.

Label ; subprogram is called with "call Label" 


set of instructions  
set of instructions  
set of instructions  
return or retlw   47
48
Applications
• Buttons are mechanical devices used to execute a break or make
connection between two points. They come in different sizes and with
different purposes. Buttons that are used here are also called "dip-
buttons". They are soldered directly onto a printed board and are
common in electronics. They have four pins (two for each contact) which
give them mechanical stability.

49
Program

• Write a program to turn on the led if you


press on the switch RA3

50
DEBOUNCE
• Button function is simple. When we push a button, two contacts are joined
together and connection is made. Still, it isn't all that simple. The problem
lies in the nature of voltage as an electrical dimension, and in the
imperfection of mechanical contacts. That is to say, before contact is made
or cut off, there is a short time period when vibration (oscillation) can occur
as a result of unevenness of mechanical contacts, or as a result of the
different speed in pushing a button (this depends on person who pushes the
button). The term given to this phenomena is called SWITCH (CONTACT)
DEBOUNCE.

51
Optocouplers
• The way it works is simple: when a signal arrives, the LED
within the optocoupler is turned on, and it illuminates the
base of a photo-transistor within the same case. When the
transistor is activated, the voltage between collector and
emitter falls to 0.7V or less and the microcontroller sees
this as a logic zero on its RA4 pin.

52
53
Optocoupler - output
• An Optocoupler can be also used to separate the
output signals. If optocoupler LED is connected to
microcontroller pin, logical zero on pin will activate
optocoupler LED, thus activating the transistor. This
will consequently switch on LED in the part of device
working on 12V. Layout of this connection is shown
below.

54
Program

• Write a program to command the relay


after each interrupt RB0

55
Sounds
• Generating sound
In microcontroller systems, beeper is used for indicating certain
occurrences, such as push of a button or an error. To have the
beeper started, it needs to be delivered a string in binary code -
in this way, you can create sounds according to your needs.
Connecting the beeper is fairly simple: one pin is connected to
the mass, and the other to the microcontroller pin through a
capacitor, as shown on the following image.

56
Program

• Write a program to make a sound of


frequency 1Khz

57
7 segment-display
• To produce a 4, 5 or 6 digit display, all the 7-segment displays are connected in parallel. The common line
(the common-cathode line) is taken out separately and this line is taken low for a short period of time to turn
on the display. Each display is turned on  at a rate above 100 times per second, and it will appear that all the
displays are turned on at the same time. As each display is turned on, the appropriate information must be
delivered to it so that it will give the correct reading.

58
Program

• Write a program to display 45 to the 7


segments displays

59

You might also like