Using Timers to Measure Time

Unlike instructions—some of which require one instruction cycle, others 2, and others 4—the timers are consistent. They will always be incremented once ev- ery 12 (or four) clocks. Therefore, if a timer has counted from 0 to 55 000 you may calculate:

55 000 / 2 750 000 = 0.020 seconds (fosc/12) or

55 000 / 8 250 000 = 0.007 seconds (fosc/4)

The trade off in using fosc/12 or fosc/4 as the clock source is (1) code compatibility and (2) resolution. With a 33MHz external clock, the resolution of fosc/12 = 364ns

per increment, and the resolution of fosc/4 is 121ns per increment.

Thus, we now have a system that measures time. All we need to review is how to control the timers and initialize them to provide us with the information needed.

8.3.2Timer SFRs

As mentioned before, the MSC1210 has three standard timers. Two of these timers work in essentially the same way. One timer is Timer 0 and the other is Timer 1. The two timers share two SFRs (TMOD and TCON) which control the timers, and each timer also has two SFRs dedicated solely to maintaining the value of the timer itself (TH0/TL0 and TH1/TL1). The third timer (Timer 2) functions somewhat differently and will be explained separately.

The SFRs used to control and manipulate the first two timers are presented in the Table 8−1.

Table 8−1. Timer Conrol SFRs.

SFR Name

Description

SFR Address

Bit Addressable?

 

 

 

 

TH0

Timer 0 high byte

8CH

No

TL0

Timer 0 low byte

8AH

No

TH1

Timer 1 high byte

8DH

No

TL1

Timer 1 low byte

8BH

No

TCON

Timer control

88H

Yes

TMOD

Timer mode

89H

No

Timer 0 has two SFRs dedicated exclusively to itself: TH0 and TL0. TL0 is the low byte of the value of the timer, while TH0 is the high byte of the value of the timer. That is to say, when Timer 0 has a value of 0, both TH0 and TL0 will con- tain 0. When Timer 0 has the value 1000, TH0 will hold the high byte of the val- ue (3 decimal) and TL0 will contain the low byte of the value (232 decimal). Reviewing low/high byte notation, recall that you must multiply the high byte by 256 and add the low byte to calculate the final value. In this case:

(TH0 S 256) + TL0 = 1000

(3 S 256) + 232 = 1000

Timer 1 works the exact same way, but its SFRs are TH1 and TL1.

8-4

Page 78
Image 78
Texas Instruments MSC1210 manual Timer SFRs, 1. Timer Conrol SFRs, SFR Name Description SFR Address Bit Addressable?