目的是想使用定時器1控制定時器0的啟動(定時器每隔5檢測一次是否設置倒計時時間,如果設置測啟動定時器0進行倒計時,否側不啟動)
定時部分程序
void Time0_Init()
{
count = 0;
min = 1;
sec = 0;
mTimer0Clk12DivFsys(); //T0定時器時鐘設置
mTimer1Clk12DivFsys(); //T1定時器時鐘設置
mTimer_x_ModInit(0,1); //T0定時器模式設置16位定時器
mTimer_x_ModInit(1,1); //T1定時器模式設置16位定時器
mTimer_x_SetData(0,0xC350); //T0定時器賦值5MS
mTimer_x_SetData(1,0xC350); //T1定時器賦值5MS
mTimer0RunCTL(0); //T0定時器啟動
mTimer1RunCTL(1); //T1定時器啟動
ET0 = 1; //T0定時器中斷開啟
ET1 = 1; //T1定時器中斷開啟
}
void mTimer0Interrupt( void ) interrupt INT_NO_TMR0 using 1 //timer0中斷服務程序,使用寄存器組1
{
mTimer_x_SetData(0,0xC350); //非自動重載方式需重新給TH0和TL0賦值
count++;
if(count==10)
{
count=0;
if(sec==0)
{
if(min!=0)
{
sec=59;
min--;
}
else
{
mTimer0RunCTL(0); //T0定時器停止
}
}
else sec--;
}
}
//主要是控制定時器1的中斷程序,如果加入這個就不能使用,主要是什么問題呢,
void mTimer1Interrupt( void ) interrupt INT_NO_TMR1 using 2 //timer1中斷服務程序,使用寄存器組2
{
mTimer_x_SetData(1,0xC350);
cnt++;
if(cnt>=15) //計時3s
{
cnt=0;
if(key1==1&&key2==1&&(min>0||sec>0)) //按鍵松開,并且有設置時間
{
mTimer0RunCTL(1); //開啟定時器0;
}
}
}
|