|
定時(shí)器1US,中斷計(jì)數(shù)一次,
timer1++;
count++;
在主函數(shù)中, 是否來(lái)的及響應(yīng)這個(gè)數(shù)據(jù)的變化, 我的理解程序一條一條執(zhí)行,他中斷后,退出來(lái)還是要繼續(xù)執(zhí)行。 來(lái)不及檢測(cè)到count的數(shù)值,所以這里寫
if(count>100) if(timer1>1000) //PWM周期為1000*1us 而不是if(count==100) if(timer1==1000) 是這個(gè)原因么。
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void main()
{
Timer1Init(); //定時(shí)器1初始化
while(1)
{
if(count>100)
{
count=0;
if(DIR==1) //DIR控制增加或減小
{
value++;
}
if(DIR==0)
{
value--;
}
}
if(value==1000)
{
DIR=0;
}
if(value==0)
{
DIR=1;
}
if(timer1>1000) //PWM周期為1000*1us
{
timer1=0;
}
if(timer1 <value)
{
PWM=1;
}
else
{
PWM=0;
}
}
}
/*******************************************************************************
* 函 數(shù) 名 : Time1
* 函數(shù)功能 : 定時(shí)器1的中斷函數(shù)
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void Time1(void) interrupt 3 //3 為定時(shí)器1的中斷號(hào) 1 定時(shí)器0的中斷號(hào) 0 外部中斷1 2 外部中斷2 4 串口中斷
{
TH1 = 0xFF;
TL1 = 0xff; //1us
timer1++;
count++;
}
|
|