微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 有关单片机程序问题

有关单片机程序问题

时间:10-02 整理:3721RD 点击:

void t0() interrupt 1

{

    TR0=0;

    ET0=0;    // 关中断定时器T0

    moc30=0;  //光耦导通,单片机产生PWM波

    TH1=0Xf8;

    TL1=0X30;

    ET1=1;

    TR1=1;

}

void t1() interrupt 3

{

    TR1=0;

    ET1=0;

    moc30=1;   //光耦关闭

}

void int0() interrupt 0

{

    if(dw==6)

    {                      //不同的档位,改变导通角延时0

       moc30=0;

       TH0=0Xff;

       TL0=0Xfa;

    }

    if(dw==1)             //

    {                    //不同的档位,改变导通角延时6000

       TH0=0Xe8;

       TL0=0X90;

    }

    if(dw==3)

    {                    //不同的档位,改变导通角延时4500

       TH0=0Xee;

       TL0=0X6c;

    }

    if(dw==4)

    {                    //不同的档位,改变导通角延时3750

       TH0=0Xf1;

       TL0=0X5a;

    }

    if(dw==2)

    {                    //不同的档位,改变导通角延时5250

       TH0=0Xeb;

       TL0=0X7e;

    }

    if(dw==5)

    {                    //不同的档位,改变导通角延时2100

       TH0=0Xf7;

       TL0=0Xcc;

    }

    if(dw>0)

    {

       ET0=1;    //开中断定时器T0

       TR0=1;

    }

    if(dw==0)          //不同的档位,这里直接关掉  

    moc30=1;

}

220V交流电压过零检测,一个周期20MS内有2次过零点,INT0测得的方波频率为50HZ(只能测到一个过零点),另一个过零点怎么用定时器产生?上面的程序测得PWM波的频率是50HZ,怎么编写程序才能得到100HZ的频率呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top