呼吸灯一直闪烁,看不出呼吸的过程,不知哪里出了问题?望各位不吝赐教。代码如下:
/******************呼吸灯************************/
void t1_init()
{
T1CTL=0x05;//8分频,自由运行模式
TIMIF|=0x40;
IRCON=0x00;
EA=1;
T1IE=1;
T1CNTL=(65535-2000)%256;//(8/16M)*1000=1ms定时
T1CNTH=(65535-2000)/256;
}
#pragma vector=T1_VECTOR
__interrupt void T1(void)
{
pwm_wanttime++;
breath_wanttime++;
if(pwm_wanttime==pwm_value)
D3=1;//灯亮
if(pwm_wanttime==10)
{
pwm_wanttime=0;
D3=0;//灯灭
}
if((breath_wanttime==200)&&(directflag==0))//每隔200ms变化一次占空比
{
breath_wanttime=0;
pwm_value++;
if(pwm_value==9) directflag=1;
}
if((breath_wanttime==200)&&(directflag==1))
{
breath_wanttime=0;
pwm_value--;
if(pwm_value==1) directflag=0;
}
}
/********************MAIN************************/
void main(void)
{
halBoardInit();//选手不得在此函数内添加代码
ConfigRf_Init();//选手不得在此函数内添加代码
//端口初始化
P1SEL&=~(0x1f);
P1DIR=0x1b;
P0SEL&=~(0X02);
P0DIR&=~(0X02);
D3=D4=D5=D6=0;
//定时器T1 8分频,自由运行模式
t1_init();
while(1)
{
;
}
}