Section 11. Timer0. Timer0 HIGHLIGHTS. This section of the manual contains the following major topics:

Similar documents
Section 13. Timer0 HIGHLIGHTS. Timer0. This section of the manual contains the following major topics:

CENG-336 Introduction to Embedded Systems Development. Timers

which means that writing to a port implies that the port pins are first read, then this value is modified and then written to the port data latch.

PIC16C84. 8-bit CMOS EEPROM Microcontroller PIC16C84. Pin Diagram. High Performance RISC CPU Features: CMOS Technology: Peripheral Features:

Section 14. Timer1 HIGHLIGHTS. Timer1. This section of the manual contains the following major topics:

EE6008-Microcontroller Based System Design Department Of EEE/ DCE

M PIC16F84A. 18-pinEnhanced FLASH/EEPROM 8-Bit Microcontroller. High Performance RISC CPU Features: Pin Diagrams. Peripheral Features:

Section 16. Basic Sychronous Serial Port (BSSP)

PIC10F200/202/204/206 Data Sheet

Section 4. Architecture

Section 28. WDT and SLEEP Mode

PIC16C432 OTP 8-Bit CMOS MCU with LIN bus Transceiver

PIC16F84A. 18-pin Enhanced Flash/EEPROM 8-Bit Microcontroller. Devices Included in this Data Sheet: Pin Diagrams. High Performance RISC CPU Features:

PIC16F8X 18-pin Flash/EEPROM 8-Bit Microcontrollers

PIC16F8X PIC16F8X. 18-pin Flash/EEPROM 8-Bit Microcontrollers

PIC12C5XX. 8-Pin, 8-Bit CMOS Microcontroller. CMOS Technology: Devices included in this Data Sheet: High-Performance RISC CPU: Pin Diagram

PIC16F8X. 8-Bit CMOS Flash/EEPROM Microcontrollers PIC16F8X PIC16CR8X. Pin Diagram. Devices Included in this Data Sheet:

PIC16C Pin, 8-Bit CMOS Microcontroller. Device included in this Data Sheet: Special Microcontroller Features: High-Performance RISC CPU:

PIC10F200/202/204/206

PIC16C Pin, 8-Bit CMOS Microcontroller. Device included in this Data Sheet: Special Microcontroller Features: High-Performance RISC CPU:

University of Jordan Faculty of Engineering and Technology Department of Computer Engineering Embedded Systems Laboratory

Hardware Interfacing. EE25M Introduction to microprocessors. Part V. 15 Interfacing methods. original author: Feisal Mohammed

Embedded System Design

PIC16C52. EPROM-Based 8-Bit CMOS Microcontroller PIC16C52. Pin Diagrams. Feature Highlights. High-Performance RISC CPU. Peripheral Features

UNIVERSITY OF ULSTER UNIVERSITY EXAMINATIONS : 2001/2002. Semester 2. Year 2 MICROCONTROLLER SYSTEMS. Module Code: EEE305J2. Time allowed: 3 Hours

ME 6405 Introduction to Mechatronics

To Our Valued Customers

EEE111A/B Microprocessors

These 3 registers contain enable, priority,

Embedded Systems Design (630470) Lecture 4. Memory Organization. Prof. Kasim M. Al-Aubidy Computer Eng. Dept.

PIC12F629/675 Data Sheet

Section 9. Watchdog Timer (WDT)

SOLUTIONS!! DO NOT DISTRIBUTE PRIOR TO EXAM!!

Section 21. Addressable USART

PIC 16F84A programming (II)

PIC16C62X Data Sheet. EPROM-Based 8-Bit CMOS Microcontrollers Microchip Technology Inc. DS30235J

PIC16C7X 11.0 SYNCHRONOUS SERIAL PORT (SSP) MODULE SSP Module Overview. Applicable Devices

NH-67, TRICHY MAIN ROAD, PULIYUR, C.F , KARUR DT. DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING COURSE MATERIAL

PIC16C433 Data Sheet. 8-Bit CMOS Microcontroller with LIN bus Transceiver Microchip Technology Inc. Advance Information DS41139A

PIC16F87X 13.0 INSTRUCTION SET SUMMARY INSTRUCTIONS DESCRIPTIONS

PIC10F200/202/204/206 Data Sheet

PIC16F630/676 Data Sheet

PIC16C433 Data Sheet. 8-Bit CMOS Microcontroller with LIN Transceiver Microchip Technology Inc. Preliminary DS41139B

Lecture (04) PIC16F84A (3)

Micro-Controller: PIC16C74 < Part 5: Interrupt >

UNIVERSITY OF ULSTER UNIVERSITY EXAMINATIONS : 2001/2002 RESIT. Year 2 MICROCONTROLLER SYSTEMS. Module Code: EEE305J1. Time allowed: 3 Hours

Week1. EEE305 Microcontroller Key Points

Assembly Language Instructions

PIC12CE5XX. 8-Pin, 8-Bit CMOS Microcontroller with EEPROM Data Memory. Devices Included in this Data Sheet: Pin Diagram: High-Performance RISC CPU:

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING. EE6008 Microcontroller based system design

Performance & Applications

Hi Hsiao-Lung Chan Dept Electrical Engineering Chang Gung University, Taiwan

PIC12F529T48A Data Sheet

Embedded Systems. PIC16F84A Internal Architecture. Eng. Anis Nazer First Semester

Chapter 11: Interrupt On Change

Section 9. Watchdog Timer and Power-up Timer

Introduction to PIC Programming

Learning Objectives:

D:\PICstuff\PartCounter\PartCounter.asm

Section 30. In-Circuit Serial Programming (ICSP )

/* PROGRAM FOR BLINKING LEDs CONEECTED TO PORT-D */

PIC16F630/676 Data Sheet

Introduction to PIC Programming

PIC Discussion By Eng. Tamar Jomaa

PIC16F /40-Pin 8-Bit CMOS FLASH Microcontrollers. Devices Included in this Data Sheet: Pin Diagram PDIP. Microcontroller Core Features:

Section 24. Comparator

APPLICATION NOTE Wire Communication with a Microchip PICmicro Microcontroller

AN587. Interfacing to an LCD Module. Interfacing to an LCD Module INTRODUCTION OPERATION CONTROL SIGNAL FUNCTIONS TABLE 2: CONDITIONAL ASSEMBLY FLAGS

PIC12F508/509/16F505 Data Sheet

PIC16F87X. 28/40-pin 8-Bit CMOS FLASH Microcontrollers. Devices Included in this Data Sheet: Pin Diagram PDIP. Microcontroller Core Features:

LAB WORK 2. 1) Debugger-Select Tool-MPLAB SIM View-Program Memory Trace the program by F7 button. Lab Work

Outline. Micriprocessor vs Microcontroller Introduction to PIC MCU PIC16F877 Hardware:

OTP-Based 8-Bit Microcontroller

Using Timers of Microchip PIC18F Microcontrollers

EPROM/ROM-Based 8-Bit Microcontroller Series

ECE 354 Introduction to Lab 2. February 23 rd, 2003

Embedded Systems. PIC16F84A Sample Programs. Eng. Anis Nazer First Semester

PIC12F510/16F506 Data Sheet

Chapter 10 Sections 1,2,9,10 Dr. Iyad Jafar

ECE 354 Computer Systems Lab II. Interrupts, Strings, and Busses

PIC16F870/ /40-Pin, 8-Bit CMOS FLASH Microcontrollers. Devices Included in this Data Sheet: Pin Diagram. Microcontroller Core Features:

Discrete Logic Replacement A Keypad Controller for Bi-directional Key Matrix

Laboratory 9. Programming a PIC Microcontroller - Part I

Dept. of Computer Engineering Final Exam, First Semester: 2016/2017

Mod-5: PIC 18 Introduction 1. Module 5

Section 10. Watchdog Timer and Power Saving Modes

OTP-Based 8-Bit Microcontroller

A Better Mouse Trap. Consumer Appliance, Widget, Gadget APPLICATION OPERATION: Ontario, Canada

Introduction to PIC Programming

Section 8. Reset HIGHLIGHTS. Reset. This section of the manual contains the following major topics:

EE 361L Digital Systems and Computer Design Laboratory

DRPIC166X IP Core. High Performance 8-bit RISC Microcontroller v. 2.17

PIC Microcontroller Embedded Systems Hadassah College Spring 2012 PIC Microcontroller Dr. Martin Land

Microprocessors B (17.384) Spring Lecture Outline

PIC16F526 Data Sheet. 14-Pin, 8-Bit Flash Microcontroller Microchip Technology Inc. Preliminary DS41326A

Lesson 14. Title of the Experiment: Introduction to Microcontroller (Activity number of the GCE Advanced Level practical Guide 27)

Section 31. Instruction Set

Section 8. Reset. Reset HIGHLIGHTS. This section of the manual contains the following topics:

Introduction to PIC Programming

PIC Pin Programmable Mixed Signal Controller. Pin Diagram. High-Performance RISC CPU: PIC Analog Peripherals Features:

Transcription:

M 11 Section 11. HIGHLIGHTS This section of the manual contains the following major topics: 11.1 Introduction...11-2 11.2 Control Register...11-3 11.3 Operation...11-4 11.4 TMR0 Interrupt...11-5 11.5 Using with an External Clock...11-6 11.6 TMR0 Prescaler...11-7 11.7 Design Tips...11-10 11.8 Related Application Notes...11-11 11.9 Revision History...11-12 1997 Microchip Technology Inc. DS31011A page 11-1

PICmicro MID-RANGE MCU FAMILY 11.1 Introduction The module has the following features: 8-bit timer/counter Readable and writable 8-bit software programmable prescaler Clock source selectable to be external or internal Interrupt on overflow from FFh to 00h Edge select for external clock T0CKI pin T0SE FOSC/4 Note: To achieve a 1:1 prescaler assignment for the TMR0 register, assign the prescaler to the Watchdog Timer. Figure 11-1 shows a simplified block diagram of the module. Figure 11-1: Block Diagram 0 1 T0CS Programmable Prescaler 3 PS2, PS1, PS0 Note 1: T0CS, T0SE, PSA, PS2:PS0 (OPTION_REG<5:0>). 2: The prescaler is shared with Watchdog Timer (refer to Figure 11-6 for detailed block diagram). 1 0 PSA PSout Sync with Internal clocks PSout (2 cycle delay) Data bus TMR0 8 Set interrupt flag bit T0IF on overflow DS31011A-page 11-2 1997 Microchip Technology Inc.

Section 11. 11.2 Control Register The OPTION_REG register is a readable and writable register which contains various control bits to configure the TMR0/WDT prescaler, the External INT Interrupt, TMR0, and the weak pull-ups on PORTB. Note: To achieve a 1:1 prescaler assignment for the TMR0 register, assign the prescaler to the Watchdog Timer. 11 Register 11-1: OPTION_REG Register R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 RBPU (1) INTEDG T0CS T0SE PSA PS2 PS1 PS0 bit 7 bit 0 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2:0 RBPU (1) : Weak Pull-up Enable bit 1 = Weak pull-ups are disabled 0 = Weak pull-ups are enabled by individual port latch values INTEDG: Interrupt Edge Select bit 1 = Interrupt on rising edge of INT pin 0 = Interrupt on falling edge of INT pin T0CS: TMR0 Clock Source Select bit 1 = Transition on T0CKI pin 0 = Internal instruction cycle clock (CLKOUT) T0SE: TMR0 Source Edge Select bit 1 = Increment on high-to-low transition on T0CKI pin 0 = Increment on low-to-high transition on T0CKI pin PSA: Prescaler Assignment bit 1 = Prescaler is assigned to the WDT 0 = Prescaler is assigned to the module PS2:PS0: Prescaler Rate Select bits Bit Value TMR0 Rate WDT Rate 000 001 010 011 100 101 110 111 1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256 1 : 1 1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128 Legend R = Readable bit W = Writable bit U = Unimplemented bit, read as 0 - n = Value at POR reset Note 1: Some devices call this bit GPPU. Devices that have the RBPU bit, have the weak pull-ups on PORTB, while devices that have the GPPU have the weak pull-ups on the GPIO Port. 1997 Microchip Technology Inc. DS31011A-page 11-3

PICmicro MID-RANGE MCU FAMILY 11.3 Operation Timer mode is selected by clearing the T0CS bit (OPTION<5>). In timer mode, the module will increment every instruction cycle (without prescaler). If the TMR0 register is written, the increment is inhibited for the following two instruction cycles (Figure 11-2 and Figure 11-3). The user can work around this by writing an adjusted value to the TMR0 register. Counter mode is selected by setting the T0CS bit (OPTION<5>). In counter mode, will increment either on every rising or falling edge of the T0CKI pin. The incrementing edge is determined by the Source Edge Select the T0SE bit (OPTION<4>). Clearing the T0SE bit selects the rising edge. Restrictions on the external clock input are discussed in detail in Subsection 11.5 Using with an External Clock. The prescaler is mutually exclusively shared between the module and the Watchdog Timer. The prescaler assignment is controlled in software by the PSA control bit (OPTION<3>). Clearing the PSA bit will assign the prescaler to the module. The prescaler is not readable or writable. When the prescaler is assigned to the module, prescale values of 1:2, 1:4,..., 1:256 are selectable. Subsection 11.6 TMR0 Prescaler details the operation of the prescaler. Any write to the TMR0 register will cause a 2 instruction cycle (2TCY) inhibit. That is, after the TMR0 register has been written with the new value, TMR0 will not be incremented until the third instruction cycle later (Figure 11-2). When the prescaler is assigned to the module, any write to the TMR0 register will immediately update the TMR0 register and clear the prescaler. The incrementing of (TMR0 and Prescaler) will also be inhibited 2 instruction cycles (TCY). So if the prescaler is configured as 2, then after a write to the TMR0 register TMR0 will not increment for 4 clocks (Figure 11-3). After that, TMR0 will increment every prescaler number of clocks later. Figure 11-2: Timing: Internal Clock/No Prescale PC (Program Counter) Instruction Fetch TMR0 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 PC-1 PC PC+1 PC+2 PC+3 PC+4 PC+5 PC+6 MOVWF TMR0 T0 T0+1 T0+2 NT0 NT0 NT0 NT0+1 NT0+2 T0 Instruction Executed Write TMR0 executed + 1 + 2 Figure 11-3: Timing: Internal Clock/Prescale 1:2 PC (Program Counter) Instruction Fetch Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 PC-1 PC PC+1 PC+2 PC+3 PC+4 PC+5 PC+6 MOVWF TMR0 TMR0 T0 T0+1 NT0 NT0+1 Instruction Execute Write TMR0 executed + 1 DS31011A-page 11-4 1997 Microchip Technology Inc.

11.4 TMR0 Interrupt Section 11. The TMR0 interrupt is generated when the TMR0 register overflows from FFh to 00h. This overflow sets bit T0IF (INTCON<2>). The interrupt can be masked by clearing bit T0IE (INTCON<5>). Bit T0IF must be cleared in software by the module interrupt service routine before re-enabling this interrupt. The TMR0 interrupt cannot awaken the processor from SLEEP since the timer is shut-off during SLEEP. See Figure 11-4 for interrupt timing. Figure 11-4: TMR0 Interrupt Timing 11 OSC1 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 CLKOUT(3) T0IF bit FEh 1 1 FFh 00h 01h 02h GIE bit INSTRUCTION FLOW PC PC PC +1 PC +1 0004h 0005h Instruction fetched Inst (PC) Inst (PC+1) Inst (0004h) Inst (0005h) Instruction executed Inst (PC-1) Inst (PC) Dummy cycle Dummy cycle Inst (0004h) Note 1: Interrupt flag bit T0IF is sampled here (every Q1). 2: Interrupt latency = 4TCY where TCY = instruction cycle time. 3: CLKOUT is available only in RC oscillator mode. 1997 Microchip Technology Inc. DS31011A-page 11-5

PICmicro MID-RANGE MCU FAMILY 11.5 Using with an External Clock When an external clock input is used for, it must meet certain requirements as detailed in 11.5.1 External Clock Synchronization. These requirements ensure the external clock can be synchronized with the internal phase clock (TOSC). Also, there is a delay in the actual incrementing of after synchronization. 11.5.1 External Clock Synchronization 11.5.2 TMR0 Increment Delay When no prescaler is used, the external clock input is the same as the prescaler output. The synchronization of T0CKI with the internal phase clocks is accomplished by sampling the prescaler output on the Q2 and Q4 cycles of the internal phase clocks (Figure 11-5). Therefore, it is necessary for T0CKI to be high for at least 2Tosc (and a small RC delay of 20 ns) and low for at least 2Tosc (and a small RC delay of 20 ns). Refer to parameters 40, 41 and 42 in the electrical specification of the desired device. When a prescaler is used, the external clock input is divided by an asynchronous ripple-counter type prescaler so that the prescaler output is symmetrical. For the external clock to meet the sampling requirement, the ripple-counter must be taken into account. Therefore, it is necessary for T0CKI to have a period of at least 4Tosc (and a small RC delay of 40 ns) divided by the prescaler value. The only requirement on T0CKI high and low time is that they do not violate the minimum pulse width requirement of 10 ns. Refer to parameters 40, 41 and 42 in the electrical specification of the desired device. Since the prescaler output is synchronized with the internal clocks, there is a small delay from the time the external clock edge occurs to the time the module is actually incremented. Figure 11-5 shows the delay from the external clock edge to the timer incrementing. Figure 11-5: Timing with External Clock External Clock Input or Prescaler output (2) External Clock/Prescaler Output after sampling Increment (Q4) Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Small pulse misses sampling (3) (1) T0 T0 + 1 T0 + 2 Note 1: Delay from clock input change to increment is 3Tosc to 7Tosc. (Duration of Q = Tosc). Therefore, the error in measuring the interval between two edges on input = ±4Tosc max. 2: External clock if no prescaler selected, Prescaler output otherwise. 3: The arrows indicate the points in time where sampling occurs. DS31011A-page 11-6 1997 Microchip Technology Inc.

11.6 TMR0 Prescaler Section 11. An 8-bit counter is available as a prescaler for the module, or as a postscaler for the Watchdog Timer (Figure 11-6). For simplicity, this counter is being referred to as prescaler in the description. Thus, a prescaler assignment for the module means that there is no postscaler for the Watchdog Timer, and vice-versa. Note: There is only one prescaler available which is mutually exclusively shared between the module and the Watchdog Timer. The PSA and PS2:PS0 bits (OPTION<3:0>) determine the prescaler assignment and prescale ratio. When assigned to the module, all instructions writing to the TMR0 register (e.g., CLRF TMR0, MOVWF TMR0, BSF TMR0,x...etc.) will clear the prescaler. When assigned to WDT, a CLRWDT instruction will clear the prescaler along with the Watchdog Timer. The prescaler is not readable or writable. 11 Figure 11-6: Block Diagram of the /WDT Prescaler CLKOUT (=Fosc/4) Data Bus T0CKI pin 0 M U 1 X 1 0 M U X SYNC 2 Cycles 8 TMR0 reg T0SE T0CS PSA Set T0IF flag bit on Overflow Watchdog Timer 0 1 M U X 8-bit Prescaler 8 PSA 8 - to - 1MUX PS2:PS0 WDT Enable bit 0 1 M U X PSA WDT Time-out Note: T0CS, T0SE, PSA, PS2:PS0 are (OPTION_REG<5:0>). 1997 Microchip Technology Inc. DS31011A-page 11-7

PICmicro MID-RANGE MCU FAMILY 11.6.1 Switching Prescaler Assignment Lines 2 and 3 do NOT have to be included if the final desired prescale value is other than 1:1. If 1:1 is final desired value, then a temporary prescale value is set in lines 2 and 3 and the final prescale value will be set in lines 10 and 11. The prescaler assignment is fully under software control, i.e., it can be changed on the fly during program execution. Note: To avoid an unintended device RESET, the following instruction sequence (shown in Example 11-1) must be executed when changing the prescaler assignment from to the WDT. This sequence must be followed even if the WDT is disabled. In Example 11-1, the first modification of the OPTION_REG does not need to be included if the final desired prescaler is other then 1:1. If the final prescaler value is to be 1:1, then a temporary prescale value is set (other than 1:!), and the final prescale value is set in the last modification of OPTION_REG. Example 11-1: Changing Prescaler ( WDT) 1) BSF STATUS, RP0 ;Bank1 2) MOVLW b'xx0x0xxx' ;Select clock source and prescale value of 3) MOVWF OPTION_REG ;other than 1:1 4) BCF STATUS, RP0 ;Bank0 5) CLRF TMR0 ;Clear TMR0 and prescaler 6) BSF STATUS, RP1 ;Bank1 7) MOVLW b'xxxx1xxx' ;Select WDT, do not change prescale value 8) MOVWF OPTION_REG ; 9) CLRWDT ;Clears WDT and prescaler 10) MOVLW b'xxxx1xxx' ;Select new prescale value and WDT 11) MOVWF OPTION_REG ; 12) BCF STATUS, RP0 ;Bank0 To change prescaler from the WDT to the module use the sequence shown in Example 11-2. Example 11-2: Changing Prescaler (WDT ) CLRWDT ; Clear WDT and prescaler BSF STATUS, RP0 ; Bank1 MOVLW b'xxxx0xxx' ; Select TMR0, new prescale MOVWF OPTION_REG ; value and clock source BCF STATUS, RP0 ; Bank0 DS31011A-page 11-8 1997 Microchip Technology Inc.

11.6.2 Initialization Section 11. 11 Since has a software programmable clock source, there are two examples to show the initialization of with each source. Example 11-3 shows the initialization for the internal clock source (timer mode), while Example 11-4 shows the initialization for the external clock source (counter mode). Example 11-3: Initialization (Internal Clock Source) CLRF TMR0 ; Clear register CLRF INTCON ; Disable interrupts and clear T0IF BSF STATUS, RP0 ; Bank1 MOVLW 0xC3 ; PortB pull-ups are disabled, MOVWF OPTION_REG ; Interrupt on rising edge of RB0 ; increment from internal clock ; with a prescaler of 1:16. BCF STATUS, RP0 ; Bank0 ;** BSF INTCON, T0IE ; Enable TMR0 interrupt ;** BSF INTCON, GIE ; Enable all interrupts ; ; The TMR0 interrupt is disabled, do polling on the overflow bit ; T0_OVFL_WAIT BTFSS INTCON, T0IF GOTO T0_OVFL_WAIT ; Timer has overflowed Example 11-4: Initialization (External Clock Source) CLRF TMR0 ; Clear register CLRF INTCON ; Disable interrupts and clear T0IF BSF STATUS, RP0 ; Bank1 MOVLW 0x37 ; PortB pull-ups are enabled, MOVWF OPTION_REG ; Interrupt on falling edge of RB0 ; increment from external clock ; on the high-to-low transition of T0CKI ; with a prescaler of 1:256. BCF STATUS, RP0 ; Bank0 ;** BSF INTCON, T0IE ; Enable TMR0 interrupt ;** BSF INTCON, GIE ; Enable all interrupts ; ; The TMR0 interrupt is disabled, do polling on the overflow bit ; T0_OVFL_WAIT BTFSS INTCON, T0IF GOTO T0_OVFL_WAIT ; Timer has overflowed 1997 Microchip Technology Inc. DS31011A-page 11-9

PICmicro MID-RANGE MCU FAMILY 11.7 Design Tips Question 1: Answer 1: I am implementing a counter/clock, but the clock loses time or is inaccurate. If you are polling TMR0 to see if it has rolled over to zero. You could do this by executing: wait ; read the timer into W BTFSS STATUS,Z ; see if it was zero, if so, ; break from loop GOTO wait ; if not zero yet, keep waiting Two possible scenarios to lose clock cycles are: 1. If you are incrementing TMR0 from the internal instruction clock, or an external source that is about as fast, the overflow could occur during the two cycle GOTO, so you could miss it. In this case the TMR0 source should be prescaled. Or you could do a test to see if it has rolled over by checking for less than a nominal value: Wait movlw 3 subwf TMR0,W btfsc STATUS,C goto Wait 2. When writing to TMR0, two instruction clock cycles are lost. Often you have a specific time period you want to count, say 100 decimal. In that case you might put 156 into TMR0 (256-100 = 156). However, since two instruction cycles are lost when you write to TMR0 (for internal logic synchronization), you should actually write 158 to the timer. DS31011A-page 11-10 1997 Microchip Technology Inc.

11.8 Related Application Notes Section 11. This section lists application notes that are related to this section of the manual. These application notes may not be written specifically for the Mid-Range MCU family (that is they may be written for the Base-Line, or High-End families), but the concepts are pertinent, and could be used (with modification and possible limitations). The current application notes related to are: Title Application Note # Frequency Counter Using PIC16C5X A Clock Design using the PIC16C54 for LED Display and Switch Inputs AN592 AN590 11 1997 Microchip Technology Inc. DS31011A-page 11-11

PICmicro MID-RANGE MCU FAMILY 11.9 Revision History Revision A This is the initial released revision of the Module description. DS31011A-page 11-12 1997 Microchip Technology Inc.