#include <STC12C2052AD.H> //用的是STC12系列单片机
#define uchar unsigned char
#define uint unsigned int
uchar num=0,num1=100;
sbit pwm=P1^7; //触发三极管控制脚
sbit k1=P3^7;
unsigned char i;
bit trigger=0;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
TMOD=0x01;
TH0=0xFF;//定时0.1ms
TL0=0x9C;
EA=1; //开总中断
EX0=1; //开外部0中断
ET0=1; //开定时器中断
pwm=0; //初始输出0,三极管截止,可控硅不导通.
k1=1;
// TR0=1;
// IT0=1;//INT0下降沿触发
while(1);
}
void timer0() interrupt 1
{
TH0=0xFF; //定时0.1ms
TL0=0x9C;
num++;
if(num==50)
{
pwm=1;
for(i=0;i<5;i++);//延时2us
pwm=0;
}
if(num>99)
{
num=0;
}
}
void ext0() interrupt 0 //过零检测、外部中断
{
IE0=0; //清楚中断标志位
num=0;
TR0=1;
}
我是这么写的,少用一个num1,我觉得可以省掉,现在的情况是,灯泡端电压只有100V ,还有微弱的闪烁感,也可以从0-220调,但是感觉怪怪的,不像我用TLP521做过零检测电路那样,一点不闪,而且电压还是110V,这是什么原因呢
|