用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;
}
}
}
|