用Protuse仿真,只能正转,好像不能反转........到底是什么问题呀
#include<reg51.h> //STC15W系列单片机。晶振12MHZ
#include <INTRINS.H>
#define uint unsigned int //宏命令,声明uint替代unsignde int
#define uchar unsigned char
uchar zkb,pwm,num,mod,zhuan; //占空比。频率计数,周期,转向
sbit a=P2^0; //输出IO口A相
sbit b=P2^1; //输出IO口A相
sbit c=P2^2; //输出IO口A相
void main() //主程序
{
P2=0;
zkb=50; //占空比设置为50%
zhuan=0; //设置为正转
while(1) //主循环
{
pwm++; //计数+
if(pwm>100){num++;pwm=0;} //到100为一个周期
if(num>2){num=0;} //如果三相都输出后循环
if(zhuan==0) //在正转下
{
switch(num)
{
case 0 : if(pwm<zkb){a=1;} else{a=0;} break; //如果计数小于占空比,输出为高,否则为低。
case 1 : if(pwm<zkb){b=1;} else{b=0;} break; //如果计数小于占空比,输出为高,否则为低。
case 2 : if(pwm<zkb){c=1;} else{c=0;} break; //如果计数小于占空比,输出为高,否则为低。
}
}
if(zhuan==1) //反转
{
switch(num)
{
case 0 : if(pwm<zkb){c=1;} else{c=0;} break; //跟正转输出时序相反 。
case 1 : if(pwm<zkb){b=1;} else{b=0;} break;
case 2 : if(pwm<zkb){a=1;} else{a=0;} break;
}
}
}
|