pic discussion chapter 2 part22
TRANSCRIPT
-
7/23/2019 PIC Discussion Chapter 2 Part22
1/37
PIC DiscussionBy Eng. Tamar Jomaa
1
-
7/23/2019 PIC Discussion Chapter 2 Part22
2/37
2
Write assembly language instructions to clear the general
purpose registers of PIC16F84A microcontroller
(dont write the whole program)
-
7/23/2019 PIC Discussion Chapter 2 Part22
3/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
4/37
Outlines for part#2:
2.4 Delay
2.5 Interrupts
2.6 TMR0
4
-
7/23/2019 PIC Discussion Chapter 2 Part22
5/37
2.4 Delay
In this section we will learn how building delays.
A delay is a mechanism that keeps the processor from
executing a part of its program for a specific amount of
time.
Methods for creating these delays are: "NOP" Delay : A simple delay can be achieved by throwing in a
few instructions that don't do anything useful except wastemachine cycles.
Basic Loop Delay: The next example show how to make delay for
41 cycles.
5
-
7/23/2019 PIC Discussion Chapter 2 Part22
6/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
7/37
2.4 DelayExample#2 :is a simple example consist of connecting a led to RB0, then turning on/off
this led in a flasher way:
7
Outer loop
Inner loop
10000000W
00000000PORTB
10000000XORWF PORTB, F
Delay
10000000
10000000
00000000
W
PORTB
XORWF PORTB, F
-
7/23/2019 PIC Discussion Chapter 2 Part22
8/37
8
2.4 Delay
1x255
1x255
1x255
1x255x255
(1x254+2)x255
254x255x2
1x254+2
2x254
1
1
Note:
ODH register
will decrease from
255 to 0 then it
goes out from
LOOP0.
Then the OCH
register will
decrease by 1
then the ODH
register will full
again in then begin
decrease and so
on
The inner loop
will repeat
255x255, but the
outer loop will
repeat only 255.2
-
7/23/2019 PIC Discussion Chapter 2 Part22
9/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
10/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
11/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
12/37
2.5 Interrupts
12
Sources of interrupt:In the PIC16F84A, there are four sources of interrupt:
Internal interrupt External interrupt
Termination of writing data to
EEPROM.
TMR0 interrupt caused by
timer overflow.
Interrupt during
alteration on RB4, RB5,
RB6 and RB7 pins of port
B.
External interrupt fromRB0/INT pin of
microcontroller.
-
7/23/2019 PIC Discussion Chapter 2 Part22
13/37
Registers used with interrupt:1. Control interrupt register (INTCON) at 0Bh address.
2. Option register at 81h address.3. Control EEPROM register (EECON 1) at 88h address.
The most important register is (INTCON), so you can see
the datasheet to know more about this register.
13
2.5 Interrupts
-
7/23/2019 PIC Discussion Chapter 2 Part22
14/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
15/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
16/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
17/37
17
2.5 Interrupts
The bellow Figure shows the most important interruptregister INTCON, which controls the usage and selection
of interrupt sources in the PIC16F84A.
-
7/23/2019 PIC Discussion Chapter 2 Part22
18/37
18
2.5 Interrupts
We can use the bits of INTCON register to make interrupt as follow:
1) First we set GIE bit which must be enabled for any interrupt.
2) Second we enable one of this bits( T0IE ,EEIE , RBIE,INTE) as we
like to use the interrupt:If we use external interrupt , we set INTE to 1.
If we use TMR0 interrupt , we set T0IE to 1.
If we use RB interrupt , we set RBIE to 1.
If we use EEPROM interrupt , we set EEIE 1.
3) When interrupt occurred , the one of flag bits (INTF, RBIF, TOIF) is
set physically so it must be cleared in software.
-
7/23/2019 PIC Discussion Chapter 2 Part22
19/37
19
2.5 Interrupts
Keeping the contents of important registers: An important part of the interrupt process is the stack.
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.
When moving from a program to a subprogram, program counter is
being pushed onto a stack.
-
7/23/2019 PIC Discussion Chapter 2 Part22
20/37
-
7/23/2019 PIC Discussion Chapter 2 Part22
21/37
21
2.5 Interrupts
After writing the main body of the interrupt and we can restore thestatus register then restore the W register.
-
7/23/2019 PIC Discussion Chapter 2 Part22
22/37
22
2.5 Interrupts
The following example shows how to use the external interrupt to turn
on a led connected to RB2 when a pushbutton connected RB0(External interrupt source) is pressed
-
7/23/2019 PIC Discussion Chapter 2 Part22
23/37
23
2.5 Interrupts
-
7/23/2019 PIC Discussion Chapter 2 Part22
24/37
24
2.5 Interrupts
-
7/23/2019 PIC Discussion Chapter 2 Part22
25/37
25
problem#1:
using external interrupt INT0 to implement a counter to counts from
0000 to 1111 at falling edge input.
-
7/23/2019 PIC Discussion Chapter 2 Part22
26/37
26
problem#2:
using external interrupt INT0 to implement a counter to counts from
1111 to 0000 at RISING edge input
-
7/23/2019 PIC Discussion Chapter 2 Part22
27/37
2.6 TMR0
Timer0 is an internal 8bit register that increments automatically with
every PIC instruction cycle until the count over flows timer capacity .
This takes place when the timer count goes from 0xff to 0x00 .
At that time ,the timer restarts the count .
The timer has the following characteristics:
A timer register that is readable and writeable by software.
Can be powered by an external or internal clock.
Timing edge for external clock can be selected.
8-bit software programmable prescaler.
Interrupt capability.
Can be used as a timer or as a counter.
27
-
7/23/2019 PIC Discussion Chapter 2 Part22
28/37
2.6 TMR0 Two register are used for control timer0:
1) INTCON register: is used in timer mode to enable timer0 interrupt as
showed in pervious section.
2) OPTION register: is used for control timer operation as select mode,
postescaler for timer0 or WDT timer ,select the value of prescaler and
counter work in fall edge or high edge.
28
-
7/23/2019 PIC Discussion Chapter 2 Part22
29/37
2.6 TMR0 Select mode:To choose timer0 work on timer mode or counter mode, we use
bit5(T0CS). If it is set ,timer0 take external clock ( work as counter). Else it takeinternal clock & work as timer.
Select edge: If trigger TMR0 was enabled with impulses from a RA4/T0CKI pin, bit
4(T0SE) would determine whether it would be on the rising or falling edge of a signal.
1= Falling edge
0= Rising edge
Prescale: To select prescale for a WDT timer or for TMR0 we use bit3 (PSA):
1=prescaler is assigned to WDT.
0=prescaler is assigned to free timer TMR0
The counter prescaler consists of the three low-order bits in the OPTION
register.
These bits allow selecting eight possible values that serve as advisor for the
counter rate .When the prescaler is disabled, the counter rate is one-fourth the
processors clock speed .If the prescaler is set to the maximum value (255) then
one of 255 clock. Signals actually reach the timer.
29
-
7/23/2019 PIC Discussion Chapter 2 Part22
30/37
2.6 TMR0 Table below shows the prescaler settings and their action on the rate of theTimer0
module and the Watchdog Timer:
30
-
7/23/2019 PIC Discussion Chapter 2 Part22
31/37
2.6 TMR0 Delay with TIMER0:
A general formula for calculating the number of timer beats per second is asfollows :
T =C/(4*P*R)
31
Where
T: is the number of clock beats per second
C :is the system clock speed in Hz
P: is value stored in the prescaler
R: is the number of iterations counted in
theTMR0 register.
The range of both P and R in this formula is
1 to 256 . Example how to makedelay with timer0:
-
7/23/2019 PIC Discussion Chapter 2 Part22
32/37
2.6 TMR0 Counter mode:
The PIC16F84A can be programmed so hat portRA4/T0CKI is used tocount events or pulses by initializing the Timer0 module as a counter.
Without interrupts , the process requires the following preparatory steps:
Port-A , line4 , (RA4/T0CKI) is defined for input.
The Timer0 register (TMR0) is cleared.
The OPTION register bits PSA and PS0:PS2 are initialized if the
prescaler is to be used.
The OPTION register bit T0SE is set so as to increment the
count on the high-to-low transition of the port pin if the port
source is active low .Otherwise the bit is cleared.
The OPTION register bit T0CS is set to select action on the
RA4/T0CKI pin.
32
-
7/23/2019 PIC Discussion Chapter 2 Part22
33/37
2.6 TMR0 The following example is using TMR0 as a counter to count from 0
to 99 as shown in Figure:
33
-
7/23/2019 PIC Discussion Chapter 2 Part22
34/37
34
-
7/23/2019 PIC Discussion Chapter 2 Part22
35/37
35
problem#1:
using interrupt technique with tmr0 to implement 15 usec delay
2.6 TMR0
-
7/23/2019 PIC Discussion Chapter 2 Part22
36/37
36
Homework:
Using interrupt technique with tmr0 to implement 15 msec delay
Delivery date: next discussion lecture.
-
7/23/2019 PIC Discussion Chapter 2 Part22
37/37
37
Be free to ask any question