欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 為什么這個單片機程序在protues仿真時 單片機P1^3能工作,但p1^4和p1^5一直是高電平呢 [打印本頁]

作者: aboutfg    時間: 2020-6-18 22:07
標題: 為什么這個單片機程序在protues仿真時 單片機P1^3能工作,但p1^4和p1^5一直是高電平呢
uchar time1=0;
uchar time2=0;
uchar Power = 50;

sbit PWM2 = P1^3;// P1.3輸出pwm,控制M2調整功率
sbit PWM3 = P1^5;// P1.5輸出pwm,控制M3放電
sbit PWM1 = P1^4;// P1.4輸出pwm,控制可控硅充電

/********pwm控制模塊********/
//初始化定時器
void int_timer()
{
        TMOD = 0x11;//定時器0工作方式1
        TH0 = 0xFC;//(65536-10)/256;//賦初值定時
        TL0 = 0x18;//(65536-10)%256;//1ms  
        TH1 = 0xFF;//(65536-10)/256;//賦初值定時
        TL1 = 0xF6;//(65536-10)%256;//0.01ms  
        EA = 1;//開總中斷
        ET0 = 1;//開定時器0中斷
        TR0 = 1;//啟動定時器0
        ET1 = 1;
        TR1 = 1;
}
//定時器0中斷,pwm1和pwm3脈
void tim0() interrupt 1
{
        TR0 = 0;//賦初值時,關閉定時器
        TH0 = 0xFC;//(65536-1000)/256;//賦初值定時
        TL0 = 0x18;//(65536-1000)%256;//1ms
        TR0 = 1;//打開定時器
        time1 ++;
    if(time1 >= 1000) //1hz
    {                                                                                                                                                                                       
                time1 = 0;
        }
        else if(time1 <= 980) //占空比%98
        {
            PWM1 = 1;
                PWM3 = 0;
        }
        else if((time1 > 985)&&(time1 <= 995))
        {
                PWM1 = 0;
                PWM3 = 1;
        }
    else
    {
                PWM1 = 0;
                PWM3 = 0;
        }
}

/*****定時器1中斷,改變PWM占空比******/
void tim1() interrupt 3
{
        TR1 = 0;//賦初值時,關閉定時器
        TH1 = 0xff;//(65536-10)/256;//賦初值定時
        TL1 = 0xf6;//(65536-10)%256;//0.01ms
        TR1 = 1;//打開定時器
        time2 ++;
        if(time2 >= 100) //1khz
                time2 = 0;
        if(time2 <= Power) //占空比
                PWM2 = 1;
        else PWM2 = 0;
}


/****主函數****/
void main()
{
    while(1)
    {
                int_timer();         
        }  
}


作者: wulin    時間: 2020-6-19 07:30
由于int_timer(); 在main中位置錯誤,導致定時器不斷被重置,PWM1和PWM3沒有機會運行。完成定時器1中斷函數任務的時間遠大于10us,事實PWM2也不能正常運行。
/****主函數****/
void main()
{
        int_timer();
        while(1)
        {
        
        }  
}
作者: aboutfg    時間: 2020-6-19 20:30
wulin 發表于 2020-6-19 07:30
由于int_timer(); 在main中位置錯誤,導致定時器不斷被重置,PWM1和PWM3沒有機會運行。完成定時器1中斷函數 ...

你說的對,非常感謝!我是初學者,如果你有時間,能不能指正一下我這兩個中斷函數的錯誤之處,十分感謝。





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1