8051 Timers / Counters
  José Borges ,Patrício Lima, Marcos Brito, Marek Mastyło, Jakub Nyk




                           GROUP 4
                          DEEC –MPIN
                             FEUP
                           April, 2010




                                                       April 10
Outlines


1.   Introduction
2.   8051 Timer/Counter
3.   Operating Modes
4.   Timer Vs Counter
5.   T/C and Interruptions
6.   Application Examples
7.   Conclusion



                             April 10        2
Introduction


 General Function:
  •   Calculating the amounts of time between
      events
  •   Counting events
  •   Generating baud rate for serial port




                                  April 10       3
Introduction

 Applications:
  •       Communication
      ̵     Generating rectangular pulses (signal
            modulation)
      ̵     Watchdog timers
  •       Manufacturing Industry
      -     Counting objects
      -     Measuring intervals
  •       Etc


                                           April 10       4
Introduction


 8051 contains two 16-bits timers
  •   T0
  •   T1
 Two different types of timer:
  •   Interval timer
  •   Counter
 Maximum value is 65536
 Initial state can be set by user


                                     April 10       5
Timer/Counter
                                     Special Function Registers


   Timers/Counters can be operated by user with
    special function registers
   T0 and T1 share two SFRs: TMOD and TCON
   Each timer has also two registers dedicated to
    itself: TH0/TL0 and TH1/TL1




                                       April 10            6
Timer/Counter
                          Special Function Registers-TMOD


 TMOD (Timer Mode Register) is a non-bit-
  addressable, 8-bit register:




                          Reference:
                          http://fivedots.coe.psu.ac.th/~cj/asm/slides/mcs51/timer2.pdf




                                                April 10                                  7
Timer/Counter
                                 Special Function Registers-TMOD


 Lower 4 bits are for Timer0
 Upper 4 bits are for Timer1
 GATE bit is used for choice of internal or
  external control:
  •   GATE=0 is for internal control, start and stop are
      controlled by software
  •   GATE=1 is for external control, start and stop are
      controlled by software and and external source
 C/T bit decides about timer type: interval timer
  or counter


                                         April 10           8
Timer/Counter
                         Special Function Registers-TMOD


 M0 and M1 bits are used to set timer
  mode (the same for Timer0 and Timer1)
 8051 delivers 4 timer modes:
    M1    M0   Mode     Description
     0     0   Mode 0     13-bit timer

     0     1   Mode 1     16-bit timer

     1     0   Mode 2   8-bit auto reload

     1     1   Mode 3   Split timer mode



                                   April 10         9
Timer/Counter
                             Special Function Registers-TCON


 TCON (Timer Control Register) is a bit-
  addressable, 8-bit register where 4 upper bits
  are responsible for timers/counters:




                            Reference:

                            http://fivedots.coe.psu.ac.th/~cj/asm/slides/mcs51/timer2.pdf




                                                     April 10                               10
Timer/Counter
                            Special Function Registers-TCON


 TR0 and TR1 are set by user to turn on (or turn
  off) Timer0 or Timer1:
  •   TR=0 – turn off
  •   TR=1 – turn on
 TF0 and TF1 are Timer Flags informing about
  overflow (then TF=1 and interrupt could be
  activate if it’s set, should be cleaned)




                                    April 10          11
Timer/Counter
                                            Special Function Registers-TCON


 Equivalent instructions for TCON:
  •   Timer0:
      -   SETB   TR0   =   SETB    TCON.4
      -   CLR    TR0   =   CLR     TCON.4
      -   SETB   TF0   =   SETB    TCON.5
      -   CLR    TF0   =   CLR     TCON.5
  •   Timer1
      -   SETB   TR1   =   SETB   TCON.6
      -   CLR    TR1   =   CLR    TCON.6
      -   SETB   TF1   =   SETB   TCON.7
      -   CLR    TF1   =   CLR    TCON.7




                                                    April 10          12
Timer/Counter
                                 Special Function Registers-TL/TH


   TH0 and TL0 are upper and lower registers of Timer0
   TH1 and TL1 are upper and lower registers of Timer1
   They help to set initial value of timer/counter




                                         April 10           13
Timer Vs Counter
                                                      Differences


 Timer
  •   Counts machine cycles
 Counters:
  •   Counts events as a result of falling slope of external
      input signal put on a pin
 Timer mode and counter mode are relative to
  machine cycle




                                          April 10          14
Timer Vs Counter
                                                    Differences


 Timer
  •   Input from internal system clock
 Counters:
  •   Show the number of events on registers
  •   External input from T0 input pin (P3.4) for Counter
      0
  •   External input from T1 input pin (P3.5) for Counter
      1
  •   External input from Tx input pin.
  •   We use Tx to denote T0 or T1


                                         April 10           15
Timer Modes
                                                Mode 0


 Mode 0 is identical for Timer0 and Timer1
 Timers work as 13-bit counters, an interrupt is
  generated when counter overflows. It takes
  8192 input pulses to generate the next
  interrupt
 Timers use 8 bits of THi and 5 lower bits of TLi
 After timer overflows TFi (Timer Flag in TCON)
  is set, an interrupt occurs

        Where i=0,1



                                    April 10         16
Timer Modes
                                                                                       Mode 0


 Structure of Timer1 in mode 0:




                           Reference:
                            Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda
                           oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1




                                                  April 10                               17
Timer Modes
                                                    Mode 1


 Similar to mode 0
 Timers use 8 bits of THi and 8 bits of TLi
 Timer is a 16-bit counter, it takes 65536 input
  pulses to generate the next interrupt
 Improved capacity




                                    April 10          18
Timer Modes
                                                                                      Mode 1


 Structure of Timer0 in mode 1:




                           Reference:
                           Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda
                           oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1




                                                  April 10                              19
Timer Modes
                                                 Mode 2


 Timers are 8-bit auto reload
 Timer is operated by TLi, when TLi overflows
  TFi is set
 TLi is auto reloaded with Thi value when
  overflows
 THi is never modified when TLi overflows




                                  April 10         20
Timer Modes
                                                                                  Mode 2


 Structure of Timer1 in mode 2:




                           Reference:
                           Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda
                           oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1




                                               April 10                               21
Timer Modes
                                                        Mode 3


   Split-timer mode
   Timer1 can be put in other modes
   Timer0 operates TL0 and TH0 as two separate 8-bit
    timers/counters
   TL0 works as a 8-bit timer/counter
   TH0 is a 8-bit timer which counts machine cycles
   Timer0 is operated with TF0 and TR0, TF1 and TR1
    are not used




                                        April 10          22
Timer Modes
                                                                                      Mode 3


 Structure of Timer1 in mode 3:




                           Reference:
                           Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda
                           oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1




                                                  April 10                              23
Timer Modes
                                                       Example


   Choose mode 1 for Timer:
           MOV TMOD,#01H
   Set the value of TH0 and TL0:
           MOV TH0,#FFH
           MOV TL0,#FCH
   Clear Timer flag and start the timer:
           CLR TF0
           SETB TR0




                                            April 10      24
Timer Modes
                                                                                                  Example

   The 8051 starts to count up by incrementing the TH0-TL0
            TH0-TL0= FFFCH,FFFDH,FFFEH,FFFFH,0000H




                                     Reference:
                                     http://www.iau-neyshabur.ac.ir/nokhodchian/5-timer(part%201).ppt




                                                            April 10                                    25
How does a timer count?


 Timer/Counter counts up
 It is incremented by microcontroller
  •   Timer is incremented every machine cycle
  •   Coutner is incremented when event is detected




                                     April 10         26
How does a timer count?


 A single machine cycle consists of 12
  crystal pulses, thus timer will count:



        11 059 000 / 12 = 921 583 per second




                                 April 10      27
How does a timer count?


 Example: How many times will the timer be
  incremented in 0.05 seconds?

             0.05 * 921 583 = 46 079.15 times


 Accuracy is not perfect




                                   April 10     28
How does a timer count?


 Timer/Counter counts up
 It is incremented by microcontroller
  •   Timer is incremented every machine cycle
  •   Coutner is incremented when event is detected




                                     April 10         29
How does a timer count?


 A single machine cycle consists of 12
  crystal pulses, thus timer will count:



   11 059 000 / 12 = 921 583 per second




                                  April 10   30
How does a timer count?


 Example: How many times will the timer be
  incremented in 0.05 seconds?

  0.05 * 921 583 = 46 079.15 times


 Accuracy is not perfect




                                     April 10   31
Timer/ Counter
                                           and Interruptions

 Timer/ Counter can be configured to start an
interruption routine




                             Reference:
                             Philips Semiconductors – Family 8051




                                                     April 10       32
How a timer
                          interruption occurs
 Some Special Registers are used
  • ET0 and ET1 from Interruption Enable
    Register
  • PT0 and T1 from Interruption Priority
    Register
  • TF0 and TF1 from T/C Control Register




April 10                         April 10   33
                                             33
How a timer
                                 interruption occurs
 Timer/counter interruption process :
       • ET bit must be set

       • TR bit must be set to run the timer

       • The interruption is initialized when overflow
           occurs




April 10                                  April 10       34
                                                          34
How a timer
                             interruption occurs

 In this point the Timer overflow Flag is cleared
  by hardware




                              Reference:
                              Philips Semiconductors – Family 8051




                                                      April 10       35
Software overflow
                                       detection
 How the overflow can be detected if
  interruption is not enable?
  • In some cases ,it’s not necessary to enable an
    interruption
  • In this case the overflow is detected by software
  • A routine is necessary to check constantly the
    overflow occurrence




                                       April 10         36
Software overflow
                                 detection

• The overflow occurs when the TF is high

• TF must be cleared to by software to turn ON
  the timer




                                April 10         37
Software overflow
                                             detection
 Delay routine example without enable
  interruption:
                 cseg at 0000h
                 jmp main
                 …
                 main:
                 …
                 …
                       setb tr0
                       acall delay50ms
                 …
                 …
                 delay50ms:
                       mov TL0,#low(46080)
                       mov TH0,#high(46080)
                       clr TF0
                       jnb TF0,$
                       ret




                                              April 10   38
Application Example
                                              Digital Clock


 Circuit schematic
  •   Interface with LCD
   display and serial port.




                                   April 10           39
Application Example
                                              Digital Clock


 Interruption configuration
  •   IE
                                   mov IE,#10010010b

                                   Or
                                   setb EA
                                   setb ES
                                   setb ET0




                               April 10                40
Application Example
                                              Digital Clock


 Interruption configuration
  •   TCON
                                   orl TCON,#00101000b

                                   Or
                                   setb TR0
                                   setb TR1




                               April 10                  41
Application Example
                                              Digital Clock


 Interruption configuration
  •   TMOD
                                   mov TMOD,#00100001b

                                   Not bit adressable




                               April 10                  42
Application Example
                                              Digital Clock


 Interruption configuration
  •   SCON
                                   mov SCON,#01110000b

                                   Or
                                   setb SM1
                                   setb SM2
                                   setb REN




                               April 10                  43
Application Example
                                                                  Digital Clock


 Interruption configuration
  •   Serial port baud rate
                                                       mov TH1,#0xFD
  •   TH1 = TL1=253                                    mov TH1, TL1



                            11.0592𝑀𝐻𝑧
      𝑏𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 = 2 ∗
                        32 ∗ 12 ∗ 256 − 253
               𝑏𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 = 19200




                                                   April 10               44
Application Example
                                               Digital Clock


 Interruption configuration
  Problem :
  •   8051 only count up to 65536
      us

  How we count 1 second ?




                                    April 10           45
Application Example
                                                        Digital Clock


 Interruption configuration
                                          TIMER   equ    65536-46080
  Solution :
                                          mov TL0,#high(TIMER)
  •    Count 20*50ms                      mov TH0,#low(TIMER)



                     12
      50000𝑢𝑠 =            ∗ 𝐶𝑖𝑐𝑙𝑒𝑠
                11.0592𝑀ℎ𝑧
              𝑐𝑖𝑐𝑙𝑒𝑠 = 46080




                                      April 10                   46
Application Example
                                               Digital Clock


 Interruption configuration

      mov   IE,#10010010b
      mov   TMOD,#00100001b
      orl   TCON,#00101000b
      mov   SCON,#01110000b
      mov   TH1,#0xFD
      mov   TH1, TL1
      mov   TL0,#high(TIMER)
      mov   TH0,#low(TIMER)




                                    April 10           47
Application Example
                                                                                            Digital Clock


                                                       DIGITAL CLOCK




                                                         VDD
                                                         VSS

                                                         VEE


                                                               RW
                                                               RS



                                                                       D0
                                                                       D1
                                                                       D2
                                                                       D3
                                                                       D4
                                                                       D5
                                                                       D6
                                                                       D7
                                                               E
                                                        1
                                                        2
                                                        3

                                                               4
                                                               5
                                                               6

                                                                     7
                                                                     8
                                                                     9
                                                                    10
                                                                    11
                                                                    12
                                                                    13
                                                                    14
                   mov           IE,#10010010b  GND
                                                VDD



                   mov           TMOD,#00100001b
                                          RXD

                                           TXD

C1
33p
             C2
             33p
                   orl           TCON,#00101000b
                                           RTS

                                           CTS
X1
                   mov
                    U1
                   19
                         XTAL1
                                 SCON,#01110000b
                                    AD[0..7]

11.0592MHz
                   mov
                   18
                         XTAL2   TH1,#0xFD
                                     A[8..15]


                                                  30

                   mov           TH1, TL1
                                       ALE
                                                  31
                                        EA
                   9                              29
                         RST          PSEN



                   mov
                   1
                   2
                         P1.0
                                 TL0,#high(TIMER)
                                   P3.0/RXD
                                                  10
                                                  11
                         P1.1      P3.1/TXD
                   3                              12

                   mov           TH0,#low(TIMER)
                         P1.2      P3.2/INT0
                   4                              13
                         P1.3      P3.3/INT1
                   5                              14
                         P1.4        P3.4/T0
                   6                              15
                         P1.5        P3.5/T1
                   7                              16
                         P1.6       P3.6/WR
                   8                              17
                         P1.7       P3.7/RD


                        8051




                                                                                 April 10           48
Application Example
                        Counter w/ Ext. Enabler



                  +1




            0
            1
    1
0
        0
        1
0
1




                       April 10           49
Application Example
 Leds equ P1
 overflow equ R0
                                                    Counter w/ Ext. Enabler
cseg at 00h
      jmp main
cseg at 1bh                                       Initialization

      jmp Timer1       ;Counter/ Timer 1 Int.
cseg at 40h
Timer1:
                                                                            Counter
      inc overflow      ;Do a Task                Leds = TL1                Interrupt
                                                                               TF1
      reti
main:
                                                                   Return
      mov IE,#88H       ;Enables the Timer1
      mov TMOD,#0E0h    ;Gate =1, Counter selected, Mode 2                  Do a Task

      mov TH1,#00h      ;With 00h it counts 255 times
      mov TL1,#00h
      setb TR1          ;Begin to count
Led:
      mov Leds,TL1     ; shows the value with Leds of the actual count
      jmp Led
      end



                                                  April 10                              50
Application Example
                                                                 Digital Clock

 Reference:
  •   http://www.8052.com/tuttimer.phtml

  •   http://www.8052.com/tutlcd2.php

  •   http://www.8051projects.net/lcd-
      interfacing/introduction.php

  •   ISIS Proteus -
      http://www.labcenter.co.uk/download/prodemo_d
      ownload.cfm#professional

  •   Philips Semiconductors - 80C51 Family




                                                      April 10           51
Thank you!




             April 10   52

More Related Content

PPTX
Timer programming for 8051 using embedded c
PPTX
Interrupts in 8051
PPTX
8051 timer counter
PPTX
8051 Timers and Counters
PPTX
8051 Microcontroller
PPTX
Serial Communication in 8051
PPTX
LCD Interacing with 8051
PPTX
Intel 8051 Programming in C
Timer programming for 8051 using embedded c
Interrupts in 8051
8051 timer counter
8051 Timers and Counters
8051 Microcontroller
Serial Communication in 8051
LCD Interacing with 8051
Intel 8051 Programming in C

What's hot (20)

PPTX
Digital electronics logic families
PPTX
Delta modulation
PPTX
Timing Diagram.pptx
PPTX
Interrupts of 8086
PPTX
Introduction to Digital Signal processors
PPTX
8086 microprocessor-architecture
PPT
8086-instruction-set-ppt
PPT
Programming with 8085
PPT
8051 ch9-950217
PPTX
Interfacing technique with 8085- ADC[0808]
PPTX
Time delay programs and assembler directives 8086
DOCX
Microprocessor Interfacing and 8155 Features
PPTX
Adaptive delta modulation
PDF
Memory segmentation-of-8086
PDF
Introduction to pic microcontroller
PDF
Chapter 7 8051 programming in c
PPT
PPT
8051 block diagram
PPSX
Lect 2 ARM processor architecture
PPTX
I/O port programming in 8051
Digital electronics logic families
Delta modulation
Timing Diagram.pptx
Interrupts of 8086
Introduction to Digital Signal processors
8086 microprocessor-architecture
8086-instruction-set-ppt
Programming with 8085
8051 ch9-950217
Interfacing technique with 8085- ADC[0808]
Time delay programs and assembler directives 8086
Microprocessor Interfacing and 8155 Features
Adaptive delta modulation
Memory segmentation-of-8086
Introduction to pic microcontroller
Chapter 7 8051 programming in c
8051 block diagram
Lect 2 ARM processor architecture
I/O port programming in 8051
Ad

Similar to 8051 Timers / Counters (20)

PPT
Programming 8051 Timers
PPT
lecture 12 counter_microcontroller2.ppt
PPTX
TIMERS.pptx
PDF
PDF
Timers and counters of microcontroller 8051
PPTX
8051 timer counter
PPT
8051 ch9
PPTX
KTU_Microprocessor and Microcontrollers_Module2
PPTX
8051 MICROCONTROLLER TIMER AND ITS APPLICATIONS
PPT
Microcontroller 8051 timer and counter module
PPTX
Timers
PPTX
Module-03 Timers and serial port communication
PDF
Timer And Counter in 8051 Microcontroller
PPT
8051 Timer
PPT
8051 microcontroller timer summary presentation
PPT
Microcontroller Timer Counter Modules and applications
PPT
8051e
PDF
8051 Timers, Interrupts and Serial Communication
PPTX
5th unit embedded system and iot design timer and controller
Programming 8051 Timers
lecture 12 counter_microcontroller2.ppt
TIMERS.pptx
Timers and counters of microcontroller 8051
8051 timer counter
8051 ch9
KTU_Microprocessor and Microcontrollers_Module2
8051 MICROCONTROLLER TIMER AND ITS APPLICATIONS
Microcontroller 8051 timer and counter module
Timers
Module-03 Timers and serial port communication
Timer And Counter in 8051 Microcontroller
8051 Timer
8051 microcontroller timer summary presentation
Microcontroller Timer Counter Modules and applications
8051e
8051 Timers, Interrupts and Serial Communication
5th unit embedded system and iot design timer and controller
Ad

Recently uploaded (20)

PDF
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
PDF
LDMMIA Reiki Yoga Finals Review Spring Summer
PDF
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PDF
International_Financial_Reporting_Standa.pdf
PPTX
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
PDF
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 2).pdf
PDF
Environmental Education MCQ BD2EE - Share Source.pdf
PPTX
Virtual and Augmented Reality in Current Scenario
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PPTX
A powerpoint presentation on the Revised K-10 Science Shaping Paper
PDF
FOISHS ANNUAL IMPLEMENTATION PLAN 2025.pdf
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PDF
What if we spent less time fighting change, and more time building what’s rig...
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PDF
Complications of Minimal Access-Surgery.pdf
PDF
Hazard Identification & Risk Assessment .pdf
PPTX
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
PDF
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
LDMMIA Reiki Yoga Finals Review Spring Summer
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
International_Financial_Reporting_Standa.pdf
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
BP 704 T. NOVEL DRUG DELIVERY SYSTEMS (UNIT 2).pdf
Environmental Education MCQ BD2EE - Share Source.pdf
Virtual and Augmented Reality in Current Scenario
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
A powerpoint presentation on the Revised K-10 Science Shaping Paper
FOISHS ANNUAL IMPLEMENTATION PLAN 2025.pdf
Practical Manual AGRO-233 Principles and Practices of Natural Farming
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
What if we spent less time fighting change, and more time building what’s rig...
Chinmaya Tiranga quiz Grand Finale.pdf
Complications of Minimal Access-Surgery.pdf
Hazard Identification & Risk Assessment .pdf
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf

8051 Timers / Counters

  • 1. 8051 Timers / Counters José Borges ,Patrício Lima, Marcos Brito, Marek Mastyło, Jakub Nyk GROUP 4 DEEC –MPIN FEUP April, 2010 April 10
  • 2. Outlines 1. Introduction 2. 8051 Timer/Counter 3. Operating Modes 4. Timer Vs Counter 5. T/C and Interruptions 6. Application Examples 7. Conclusion April 10 2
  • 3. Introduction  General Function: • Calculating the amounts of time between events • Counting events • Generating baud rate for serial port April 10 3
  • 4. Introduction  Applications: • Communication ̵ Generating rectangular pulses (signal modulation) ̵ Watchdog timers • Manufacturing Industry - Counting objects - Measuring intervals • Etc April 10 4
  • 5. Introduction  8051 contains two 16-bits timers • T0 • T1  Two different types of timer: • Interval timer • Counter  Maximum value is 65536  Initial state can be set by user April 10 5
  • 6. Timer/Counter Special Function Registers  Timers/Counters can be operated by user with special function registers  T0 and T1 share two SFRs: TMOD and TCON  Each timer has also two registers dedicated to itself: TH0/TL0 and TH1/TL1 April 10 6
  • 7. Timer/Counter Special Function Registers-TMOD  TMOD (Timer Mode Register) is a non-bit- addressable, 8-bit register: Reference: http://fivedots.coe.psu.ac.th/~cj/asm/slides/mcs51/timer2.pdf April 10 7
  • 8. Timer/Counter Special Function Registers-TMOD  Lower 4 bits are for Timer0  Upper 4 bits are for Timer1  GATE bit is used for choice of internal or external control: • GATE=0 is for internal control, start and stop are controlled by software • GATE=1 is for external control, start and stop are controlled by software and and external source  C/T bit decides about timer type: interval timer or counter April 10 8
  • 9. Timer/Counter Special Function Registers-TMOD  M0 and M1 bits are used to set timer mode (the same for Timer0 and Timer1)  8051 delivers 4 timer modes: M1 M0 Mode Description 0 0 Mode 0 13-bit timer 0 1 Mode 1 16-bit timer 1 0 Mode 2 8-bit auto reload 1 1 Mode 3 Split timer mode April 10 9
  • 10. Timer/Counter Special Function Registers-TCON  TCON (Timer Control Register) is a bit- addressable, 8-bit register where 4 upper bits are responsible for timers/counters: Reference: http://fivedots.coe.psu.ac.th/~cj/asm/slides/mcs51/timer2.pdf April 10 10
  • 11. Timer/Counter Special Function Registers-TCON  TR0 and TR1 are set by user to turn on (or turn off) Timer0 or Timer1: • TR=0 – turn off • TR=1 – turn on  TF0 and TF1 are Timer Flags informing about overflow (then TF=1 and interrupt could be activate if it’s set, should be cleaned) April 10 11
  • 12. Timer/Counter Special Function Registers-TCON  Equivalent instructions for TCON: • Timer0: - SETB TR0 = SETB TCON.4 - CLR TR0 = CLR TCON.4 - SETB TF0 = SETB TCON.5 - CLR TF0 = CLR TCON.5 • Timer1 - SETB TR1 = SETB TCON.6 - CLR TR1 = CLR TCON.6 - SETB TF1 = SETB TCON.7 - CLR TF1 = CLR TCON.7 April 10 12
  • 13. Timer/Counter Special Function Registers-TL/TH  TH0 and TL0 are upper and lower registers of Timer0  TH1 and TL1 are upper and lower registers of Timer1  They help to set initial value of timer/counter April 10 13
  • 14. Timer Vs Counter Differences  Timer • Counts machine cycles  Counters: • Counts events as a result of falling slope of external input signal put on a pin  Timer mode and counter mode are relative to machine cycle April 10 14
  • 15. Timer Vs Counter Differences  Timer • Input from internal system clock  Counters: • Show the number of events on registers • External input from T0 input pin (P3.4) for Counter 0 • External input from T1 input pin (P3.5) for Counter 1 • External input from Tx input pin. • We use Tx to denote T0 or T1 April 10 15
  • 16. Timer Modes Mode 0  Mode 0 is identical for Timer0 and Timer1  Timers work as 13-bit counters, an interrupt is generated when counter overflows. It takes 8192 input pulses to generate the next interrupt  Timers use 8 bits of THi and 5 lower bits of TLi  After timer overflows TFi (Timer Flag in TCON) is set, an interrupt occurs Where i=0,1 April 10 16
  • 17. Timer Modes Mode 0  Structure of Timer1 in mode 0: Reference: Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1 April 10 17
  • 18. Timer Modes Mode 1  Similar to mode 0  Timers use 8 bits of THi and 8 bits of TLi  Timer is a 16-bit counter, it takes 65536 input pulses to generate the next interrupt  Improved capacity April 10 18
  • 19. Timer Modes Mode 1  Structure of Timer0 in mode 1: Reference: Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1 April 10 19
  • 20. Timer Modes Mode 2  Timers are 8-bit auto reload  Timer is operated by TLi, when TLi overflows TFi is set  TLi is auto reloaded with Thi value when overflows  THi is never modified when TLi overflows April 10 20
  • 21. Timer Modes Mode 2  Structure of Timer1 in mode 2: Reference: Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1 April 10 21
  • 22. Timer Modes Mode 3  Split-timer mode  Timer1 can be put in other modes  Timer0 operates TL0 and TH0 as two separate 8-bit timers/counters  TL0 works as a 8-bit timer/counter  TH0 is a 8-bit timer which counts machine cycles  Timer0 is operated with TF0 and TR0, TF1 and TR1 are not used April 10 22
  • 23. Timer Modes Mode 3  Structure of Timer1 in mode 3: Reference: Tomasz Starecki; Mikrokontrolery 8051 w praktyce, Twarda oprawa, 2002. ISBN: 83-910067-4-3, Pic. 3.1 April 10 23
  • 24. Timer Modes Example  Choose mode 1 for Timer:  MOV TMOD,#01H  Set the value of TH0 and TL0:  MOV TH0,#FFH  MOV TL0,#FCH  Clear Timer flag and start the timer:  CLR TF0  SETB TR0 April 10 24
  • 25. Timer Modes Example  The 8051 starts to count up by incrementing the TH0-TL0  TH0-TL0= FFFCH,FFFDH,FFFEH,FFFFH,0000H Reference: http://www.iau-neyshabur.ac.ir/nokhodchian/5-timer(part%201).ppt April 10 25
  • 26. How does a timer count?  Timer/Counter counts up  It is incremented by microcontroller • Timer is incremented every machine cycle • Coutner is incremented when event is detected April 10 26
  • 27. How does a timer count?  A single machine cycle consists of 12 crystal pulses, thus timer will count: 11 059 000 / 12 = 921 583 per second April 10 27
  • 28. How does a timer count?  Example: How many times will the timer be incremented in 0.05 seconds? 0.05 * 921 583 = 46 079.15 times  Accuracy is not perfect April 10 28
  • 29. How does a timer count?  Timer/Counter counts up  It is incremented by microcontroller • Timer is incremented every machine cycle • Coutner is incremented when event is detected April 10 29
  • 30. How does a timer count?  A single machine cycle consists of 12 crystal pulses, thus timer will count: 11 059 000 / 12 = 921 583 per second April 10 30
  • 31. How does a timer count?  Example: How many times will the timer be incremented in 0.05 seconds? 0.05 * 921 583 = 46 079.15 times  Accuracy is not perfect April 10 31
  • 32. Timer/ Counter and Interruptions  Timer/ Counter can be configured to start an interruption routine Reference: Philips Semiconductors – Family 8051 April 10 32
  • 33. How a timer interruption occurs  Some Special Registers are used • ET0 and ET1 from Interruption Enable Register • PT0 and T1 from Interruption Priority Register • TF0 and TF1 from T/C Control Register April 10 April 10 33 33
  • 34. How a timer interruption occurs  Timer/counter interruption process : • ET bit must be set • TR bit must be set to run the timer • The interruption is initialized when overflow occurs April 10 April 10 34 34
  • 35. How a timer interruption occurs  In this point the Timer overflow Flag is cleared by hardware Reference: Philips Semiconductors – Family 8051 April 10 35
  • 36. Software overflow detection  How the overflow can be detected if interruption is not enable? • In some cases ,it’s not necessary to enable an interruption • In this case the overflow is detected by software • A routine is necessary to check constantly the overflow occurrence April 10 36
  • 37. Software overflow detection • The overflow occurs when the TF is high • TF must be cleared to by software to turn ON the timer April 10 37
  • 38. Software overflow detection  Delay routine example without enable interruption: cseg at 0000h jmp main … main: … … setb tr0 acall delay50ms … … delay50ms: mov TL0,#low(46080) mov TH0,#high(46080) clr TF0 jnb TF0,$ ret April 10 38
  • 39. Application Example Digital Clock  Circuit schematic • Interface with LCD display and serial port. April 10 39
  • 40. Application Example Digital Clock  Interruption configuration • IE mov IE,#10010010b Or setb EA setb ES setb ET0 April 10 40
  • 41. Application Example Digital Clock  Interruption configuration • TCON orl TCON,#00101000b Or setb TR0 setb TR1 April 10 41
  • 42. Application Example Digital Clock  Interruption configuration • TMOD mov TMOD,#00100001b Not bit adressable April 10 42
  • 43. Application Example Digital Clock  Interruption configuration • SCON mov SCON,#01110000b Or setb SM1 setb SM2 setb REN April 10 43
  • 44. Application Example Digital Clock  Interruption configuration • Serial port baud rate mov TH1,#0xFD • TH1 = TL1=253 mov TH1, TL1 11.0592𝑀𝐻𝑧 𝑏𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 = 2 ∗ 32 ∗ 12 ∗ 256 − 253 𝑏𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 = 19200 April 10 44
  • 45. Application Example Digital Clock  Interruption configuration Problem : • 8051 only count up to 65536 us How we count 1 second ? April 10 45
  • 46. Application Example Digital Clock  Interruption configuration TIMER equ 65536-46080 Solution : mov TL0,#high(TIMER) • Count 20*50ms mov TH0,#low(TIMER) 12 50000𝑢𝑠 = ∗ 𝐶𝑖𝑐𝑙𝑒𝑠 11.0592𝑀ℎ𝑧 𝑐𝑖𝑐𝑙𝑒𝑠 = 46080 April 10 46
  • 47. Application Example Digital Clock  Interruption configuration mov IE,#10010010b mov TMOD,#00100001b orl TCON,#00101000b mov SCON,#01110000b mov TH1,#0xFD mov TH1, TL1 mov TL0,#high(TIMER) mov TH0,#low(TIMER) April 10 47
  • 48. Application Example Digital Clock DIGITAL CLOCK VDD VSS VEE RW RS D0 D1 D2 D3 D4 D5 D6 D7 E 1 2 3 4 5 6 7 8 9 10 11 12 13 14 mov IE,#10010010b GND VDD mov TMOD,#00100001b RXD TXD C1 33p C2 33p orl TCON,#00101000b RTS CTS X1 mov U1 19 XTAL1 SCON,#01110000b AD[0..7] 11.0592MHz mov 18 XTAL2 TH1,#0xFD A[8..15] 30 mov TH1, TL1 ALE 31 EA 9 29 RST PSEN mov 1 2 P1.0 TL0,#high(TIMER) P3.0/RXD 10 11 P1.1 P3.1/TXD 3 12 mov TH0,#low(TIMER) P1.2 P3.2/INT0 4 13 P1.3 P3.3/INT1 5 14 P1.4 P3.4/T0 6 15 P1.5 P3.5/T1 7 16 P1.6 P3.6/WR 8 17 P1.7 P3.7/RD 8051 April 10 48
  • 49. Application Example Counter w/ Ext. Enabler +1 0 1 1 0 0 1 0 1 April 10 49
  • 50. Application Example Leds equ P1 overflow equ R0 Counter w/ Ext. Enabler cseg at 00h jmp main cseg at 1bh Initialization jmp Timer1 ;Counter/ Timer 1 Int. cseg at 40h Timer1: Counter inc overflow ;Do a Task Leds = TL1 Interrupt TF1 reti main: Return mov IE,#88H ;Enables the Timer1 mov TMOD,#0E0h ;Gate =1, Counter selected, Mode 2 Do a Task mov TH1,#00h ;With 00h it counts 255 times mov TL1,#00h setb TR1 ;Begin to count Led: mov Leds,TL1 ; shows the value with Leds of the actual count jmp Led end April 10 50
  • 51. Application Example Digital Clock  Reference: • http://www.8052.com/tuttimer.phtml • http://www.8052.com/tutlcd2.php • http://www.8051projects.net/lcd- interfacing/introduction.php • ISIS Proteus - http://www.labcenter.co.uk/download/prodemo_d ownload.cfm#professional • Philips Semiconductors - 80C51 Family April 10 51
  • 52. Thank you! April 10 52