欧美极品高清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