永发信息网

怎样在示波器上显示pwm波形

答案:2  悬赏:40  手机版
解决时间 2021-01-02 04:24
  • 提问者网友:鐵馬踏冰河
  • 2021-01-01 17:16
下面这个是小车程序,请问哪个端口才是pwm波形输出端?

#include

#define uint unsigned int

sbit Fir=P3^2; //外中断0
sbit Sec=P1^2;
sbit Thi=P1^3;
sbit For=P1^4;
sbit Fif=P3^3; //外中断1

//右轮
sbit IN1 = P2^1;
sbit IN2 = P2^2;

//左轮
sbit IN3 = P2^3;
sbit IN4 = P2^4;

#define tLeft {IN1=0;IN2=1;IN3=0;IN4=0;}
#define tALeft {IN1=0;IN2=1;IN3=0;IN4=1;}

#define tRigh {IN1=0;IN2=0;IN3=1;IN4=0;}
#define tARigh {IN1=1;IN2=0;IN3=1;IN4=0;}

#define Go {IN1=0;IN2=1;IN3=1;IN4=0;}
#define Stop {IN1=0;IN2=0;IN3=0;IN4=0;}
#define GoBack {IN1=1;IN2=0;IN3=0;IN4=1;}

void delays(uint t)
{
uint x,y;
for(x=t; x>0; x--)
for(y=110; y>0; y--);
}

void init()
{
EA=1;
EX0=1;
EX1=1;
IT0=1; //下降沿触发
IT1=1;
}

void GoOnline()
{
uint flag;

if(Sec==0)
{

tLeft

flag=1;
}

if(For==0)
{
tRigh

flag=0;
}

if(Thi==0)
{
if(flag==0)
{
tLeft
}

else
{
tRigh
}
}

if((Thi==0)&&(Sec==0)&&(For==0))
Go
}

void main()
{
init();
Go
while(1)
{

GoOnline();

}
}

void INT_0() interrupt 0
{
EA=0;

if((Thi==0)&&(Sec==0)&&(For==0))
{
Go

EA=1;
return;
}

tLeft//GoBack
delays(2);
tALeft
//delays(25);
//tLeft

while(Thi!=0);

EA=1;
}

void INT_1() interrupt 2
{
EA=0;

if((Thi==0)&&(Sec==0)&&(For==0))
{
Go

EA=1;
return;
}

tRigh//GoBack
delays(2);
tARigh
//delays(25);
//tRigh

while(Thi!=0);

EA=1;
}
最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-01-01 18:35
这程序没输出PWM啊,为啥不用定时器内部中断呢。
全部回答
  • 1楼网友:第四晚心情
  • 2021-01-01 19:00
就当普通波形来测试啊。频率知道的话就调到相应频段。注意防止干扰。直接量pwm输出端比较好。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯