|
|
自己寫了一個關(guān)于用軟件延時產(chǎn)生PWM波的程序。通過外部中斷來改變占空比
由于T0和T1用到別的地方了,所以只能用延時函數(shù)。我仿真之后,先加速了,按減速鍵,直接減到占空比為0,全是低電平,這是哪兒的問題啊
7EU[XVE441JUQZN7[8Q$~`K.png (94.51 KB, 下載次數(shù): 30)
下載附件
2019-5-24 15:36 上傳
單片機(jī)源程序如下:
#include <REGX52.H>
unsigned int m=50,n=50; //
sbit pwm=P1^3;
sbit k1=P3^2;
sbit k2=P3^3;
void delayus(unsigned int x)//延時,x=1大概為10微秒
{
while(x--);
}
void Int0Init() //INT0
{
IT0=1;//????????????????????
EX0=1;//??INT0???ж??????
EA=1;//?????ж?
}
void Int1Init() //INT1
{
Int0Init();
Int1Init();
IT1=1;//????????????????????
EX1=1;//??INT1???ж??????
EA=1;//?????ж?
void jiasu() interrupt 0 //加速
{
delay(1000);
if(k1==0)
{
m=m+10;
n=n-10;
}
}
void jiansu() interrupt 2 //減速
{
delay(1000);
if(k2==0)
{
m=m-10;
n=n-10;
}
}
void main(){
while(1)
{
pwm=1;
delayus(m);
pwm=0;
delayus(n); //n+m=100us
}
while((m>100)||(n<0))
{
m=50;
n=50;
}
}
|
|