//-------------------------------------------------------------------------*
// 文件名: TMPCh.h                                                         *
// 说  明: 定时器和定时器通道设置头文件                                    *
//-------------------------------------------------------------------------*

#ifndef TPMCH_H           //防止重复定义
#define TPMCH_H

  //1 头文件
  #include "Type.h"        //类型别名定义
  #include "MC9S08AW60.h"  //映像寄存器地址头文件

  //2 宏定义
  //2.1 寄存器相关宏定义
  //AW60的定时器模块相关寄存器的定义,x=1表示定时器1模块 x=2表示定时器2模块
  //定时器状态和控制寄存器
  #define TPM_CSTR(x)      (*(vuint8 *)(0x00000020+(x-1)*64))
  //定时器计数寄存器(高)
  #define TPM_CNTH(x)      (*(vuint8 *)(0x00000021+(x-1)*64))
  //定时器计数寄存器(低)
  #define TPM_CNTL(x)      (*(vuint8 *)(0x00000022+(x-1)*64))    
  //定时器预置寄存器(高)
  #define TPM_MODH(x)      (*(vuint8 *)(0x00000023+(x-1)*64))
  //定时器预置寄存器(低)
  #define TPM_MODL(x)      (*(vuint8 *)(0x00000024+(x-1)*64))
  //定时器1通道状态和控制寄存器
  #define TPM1_CHSCSTR(x)  (*(vuint8 *)(0x00000025+(x)*3))
  //定时器1通道状态和控制寄存器(高)
  #define TPM1_CHVH(x)     (*(vuint8 *)(0x00000026+(x)*3))
  //定时器1通道状态和控制寄存器(低)
  #define TPM1_CHVL(x)     (*(vuint8 *)(0x00000027+(x)*3))
  //定时器2通道状态和控制寄存器
  #define TPM2_CHSCSTR(x)  (*(vuint8 *)(0x00000065+(x)*3))
  //定时器1通道状态和控制寄存器(高)
  #define TPM2_CHVH(x)     (*(vuint8 *)(0x00000066+(x)*3))
  //定时器1通道状态和控制寄存器(低)
  #define TPM2_CHVL(x)     (*(vuint8 *)(0x00000067+(x)*3))
  //2.2 中断宏定义
  #define EnableTPM1ChInt(n)  TPM1_CHSCSTR(n) |=TPM1C1SC_CH1IE_MASK
                                    //允许定时器1通道n的中断,n=0~5
  #define DisableTPM1ChInt(n) TPM1_CHSCSTR(n) &= ~TPM1C1SC_CH1IE_MASK
                                    //禁止定时器1通道n的中断,n=0~5
  #define EnableTPM2ChInt(n)  TPM2_CHSCSTR(n) |=TPM1C1SC_CH1IE_MASK
                                    //允许定时器2通道n的中断,n=0~1
  #define DisableTPM2ChInt(n) TPM2_CHSCSTR(n) &= ~TPM1C1SC_CH1IE_MASK
                                    //禁止定时器2通道n的中断,n=0~1     
                                    
  //2.3 定时器及其引脚罗列                                    
  #define TPM_NUM_1                 1          //定时器号
  #define TPM_NUM_2                 2
  
  #define TPM1_CH_0                 0          //定时器1通道号
  #define TPM1_CH_1                 1
  #define TPM1_CH_2                 2
  #define TPM1_CH_3                 3
  #define TPM1_CH_4                 4
  #define TPM1_CH_5                 5
  
  #define TPM2_CH_0                 0          //定时器2通道号
  #define TPM2_CH_1                 1

  //3 函数声明
  //-----------------------------------------------------------------------*
  //函数名: TPMChInit                                                      *
  //功  能: 初始化定时器通道                                               * 
  //参  数:                                                                *
  //        (1)TPMNo:定时器号(1~2)                                         *
  //        (2)CHNo:通道号(定时器1通道号0-5,定时器2通道号0-1)              *
  //返  回: 无                                                             *
  //说  明: 无                                                             *
  //-----------------------------------------------------------------------*
  void TPMChInit(uint8 TPMNo,uint8 CHNo);
    
#endif   