![](http://datasheet.mmic.net.cn/370000/UPD780076_datasheet_16740795/UPD780076_179.png)
179
CHAPTER 8 16-BIT TIMER/EVENT COUNTERS 00, 01
User
’
s Manual U14260EJ3V1UD
8.5.3 Two pulse widths measurement by free-running counter
/******************************************************************************/
/* */
/* Timer 00 operation sample */
/* Two-pulse-width measurement sample by free-running */
/* Measurement results to be up to 16 bits and not checked for errors */
/* Result area at TI000 side */
/* data[0]: End flag */
/* data[1]: Measurement results (pulse width) */
/* data[2]: Previous read value */
/* Result area at TI010 side */
/* data[3]: End flag */
/* data[4]: Measurement results (pulse width) */
/* data[5]: Previous read value */
/* */
/******************************************************************************/
#pragma sfr
#pragma EI
#pragma DI
#pragma interrupt INTTM000 intervalint rb2
#pragma interrupt INTTM010 intervalint2 rb2
unsigned int data[6];
/* Data area */
void main(void)
{
unsigned int length,length2;
PCC = 0x0;
data[0] = 0;
data[1] = 0;
data[2] = 0;
data[3] = 0;
data[4] = 0;
data[5] = 0;
/* Set high-speed operation mode */
/* Clear data area */
/* Set port */
/* Set P70 as input */
/* Set P71 as input */
/* Set interrupt */
/* Cancel INTTM010 interrupt mask */
/* Cancel INTTM000 interrupt mask */
/* Set timer 00 */
/* Both rising and falling edges */
/* Count clock is fx/2^6 */
/* Set CR000 and CR010 to capture register */
/* Start in free-run mode */
PM7.0 = 1;
PM7.1 = 1;
TMMK010 = 0;
TMMK000 = 0;
PRM00 = 0b11110010;
CRC00 = 0b00000101;
TMC00 = 0b00000100;
EI();
while(1){
if(data[0] != 0)
{
/* Dummy loop */
/* TI000 measurement completion check */
TMMK010 = 1;
/* INTTM010 interrupt disabled for
exclusive operation */
/* Read measurement results */
/* Clear end flag */
/* Exclusive operation completed */
length = data[1];
data[0] = 0;
TMMK010 = 0;
}
if(data[3] != 0)
{
/* TI010 measurement completion check */
TMMK000 = 1;
/* INTTM000 interrupt disabled for
exclusive operation */
/* Read measurement results */
/* Clear end flag */
/* Exclusive operation completed */
length2 = data[4];
data[3] = 0;
TMMK000 = 0;
}
}
}