#define uchar unsigned char
#define uint unsigned int
void TI2_way0(uint numerical);//定時器2 16位定時計數 numerical 定時計數數值 傳統方式
void TI2_way1(uint numerical);//定時器2 16位自動重裝定時計數 numerical 定時計數數值
void TI2_RUNset(bit state,way,control);//計數器/定時器2 運行與設置函數
/*定時器2相關函數開始*/
void TI2_way0(uint numerical) //定時器2 numerical 定時計數數值
{
numerical=(65536-numerical); //計算出定時值
TH2=(numerical/256); //定時器2的高8位計數值
TL2=(numerical%256); //定時器2的低8位計數
}
/*定時器2 16位自動重裝定時計數 numerical 定時計數數值*/
void TI2_way1(uint numerical)//定時器2 16位自動重裝定時計數 numerical 定時計數數值
{
//numerical=(65536-numerical); //計算出定時值
TH2=RCAP2H=(numerical/256); //定時器2的高8位計數值
TL2=RCAP2L=(numerical%256); //定時器2的低8位計數
}
/*
計數器/定時器2 運行與設置函數
state 0關閉定時計數器2 1啟動定時計數器2
way 0定時器模式 1計數器模式
control 0:16位自動重裝定時器計數器 1:16位捕獲
*/
void TI2_RUNset(bit state,way,control)//計數器/定時器2 運行與設置函數
{
//IPH=PT2H; //定時器2中斷優先級控制高位
RCLK=0;//接收時鐘標誌,0:使用定時器1作為串口接收發生器 1:使用定時器2作為串口接收發生器
TCLK=0;//發送時鐘標誌,0:使用定時器1作為串口發送發生器 1:使用定時器2作為串口發送發生器
switch(control) //啟動方式選擇
{
case 0x00:CP_RL2=0;EXEN2=0;break; // 0:16位自動重裝定時器計數器
case 0x01:CP_RL2=1;EXEN2=1;break; // 1:16位捕獲 捕獲模式使能位
}
switch(way) //啟動方式選擇
{
case 0x00:C_T2=0;break; //定時器模式
case 0x01:C_T2=1;break; //計數器模式
}
TR2=state;//定時器2的啟動控制位,1:啟動定時器 0:停止定時器
ET2=1; //定時器2中斷使能位
EA =1; //打開總中斷
}
/*
void Timing_count2() interrupt 5 //引腳P10
{
TF2=0;//定時器2溢出標誌,由硬件置1,必須由軟件清0
EXF2=0;//定時器2的外部標誌,由硬件置1,必須由軟件清0
}
*/