/* Timers 
   Last updated 25.5.00
 */

#include "H8.h"

#ifndef   Timers_H_DEFINED
#define   Timers_H_DEFINED


/* Free running timer, Section 8, page 111 */

#define FRT_TIER   *( (volatile byte  *) 0xff90)  /* p. 116 */
#define FRT_TCSR   *( (volatile byte  *) 0xff91)  /* p. 118 */
#define FRT_FRC    *( (volatile word  *) 0xff92)  /* p. 114 */
#define FRT_OCRA   *( (volatile word  *) 0xff94)  /* p. 114 */
#define FRT_TCR    *( (volatile byte  *) 0xff96)  /* p. 120 */

/* Timer 0, Section 9, page 135 */

#define T0_TCR     *( (volatile byte  *) 0xffc8)  /* p. 138 */
#define T0_TCSR    *( (volatile byte  *) 0xffc9)  /* p. 141 */
#define T0_TCORA   *( (volatile byte  *) 0xffca)  /* p. 138 */
#define T0_TCORB   *( (volatile byte  *) 0xffcb)  /* p. 138 */
#define T0_TCNT    *( (volatile byte  *) 0xffcc)  /* p. 137 */


/* Timer 1, Section 9, page 135 */

#define T1_TCR     *( (volatile byte  *) 0xffd0)  /* p. 138 */
#define T1_TCSR    *( (volatile byte  *) 0xffd1)  /* p. 141 */
#define T1_TCORA   *( (volatile byte  *) 0xffd2)  /* p. 138 */
#define T1_TCORB   *( (volatile byte  *) 0xffd3)  /* p. 138 */
#define T1_TCNT    *( (volatile byte  *) 0xffd4)  /* p. 137 */

/* Serial/time control register */

#define STCR       *( (volatile byte  *) 0xffc3)  /* p. 142 */

/* Watchdog timer, Section 10, page 153 */

/* Read access to registers, p. 157 */
#define WDT_TCSR   *( (volatile byte  *) 0xffa8)  /* p. 154 */
#define WDT_TCNT   *( (volatile byte  *) 0xffa9)  /* p. 154 */

/* Write access to registers, p. 156 */
#define WDT_WriteAddress   0xffa8
#define WDT_PasswordTCSR     0xa5
#define WDT_PasswordTCNT     0x5a

void WDT_TCSR_Write ( byte data ) 
{
  *( ( word *) WDT_WriteAddress ) = (WDT_PasswordTCSR << 8) + data;
} 

void WDT_TCNT_Write ( byte data ) 
{
  *( ( word *) WDT_WriteAddress ) = (WDT_PasswordTCNT << 8) + data;
} 
		   
#endif /* TIME_H_DEFINED */
