pic discussion chapter 2 part22

Upload: arunkumar

Post on 16-Feb-2018

221 views

Category:

Documents


0 download

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