//=======可控硅斩波变更定义================
typedefstruct TRIDRIVE
{
uint8 SetRPow ; //功率值
uint8 R_Dly ;//过零后延时开可控硅时间
uint8 T_Dirv ; //可控硅打开的驱动时间
}tTriDrive ;
extern tTriDrive tTriDriv ;
//----------------------
#defineSetRPow tTriDriv.SetRPow
#defineR_Dly tTriDriv.R_Dly
#defineT_Dirv tTriDriv.T_Dirv
//定义标志位
uint8 F_TRI1 ;
uint8 F_HT1 ; //开启负载标志 1为开启
//*************************************
// 函数名称:ControlHt1
// 函数功能:实现可控硅的斩波控制
// 入口参数:无
// 出口参数:无
//***************************************
void ControlMot1(void)
{
if(F_HT1) //负载工作
{
R_Dly = SetRPow; //赋功率值
T_Dirv = 25 ; //可控硅驱动时间 30U*25=750US
TIMER2_IEN_ENB ; //定时器2开中断
F_TRI1 = 1 ;
}
else
{
HT1_OFF ; //关可控硅
F_TRI1 = 0 ;
}
}
//---实例应用------
void main(void)
{
while(1)
{
ReadZ0() ;//如市电频率为50HZ 则10MS跑一次主循环
ControlMot1() ; //控制可控硅输出
}
}
//===中断服务程序=========
void interrupt server(void) //本中断30U进入一次 TIMER2
{
if(F_TRI1)
{
if(R_Dly != 0)
{
R_Dly -- ;
}
else
{
HT1_ON ;//开可控硅
F_TRI1 = 0;
}
}
else
{
if(T_Dirv != 0)
{
T_Dirv -- ;
}
else
{
HT1_OFF;//关可控硅
TIMER2_IEN_DIS ; //关定时器2中断
}
}
}