|
串口發送數據到STC12C5A60S2控制步進電機的正反轉,延時改了很多次了都不行,可是這個程序我在51上試了,是可以用的,到底哪里錯了?各位大神幫我看看:
#include<12c5a.h>
unsigned char flag;
unsigned char w,i,a;
unsigned int j;
void motor();void motor_z();
void motor_f();
sbit a1=P2^0; //電機
sbit b1=P2^1;
sbit c1=P2^2;
sbit d1=P2^3;
void delay(unsigned char z)
{
while(z--);
}
void main()
{
SCON=0X50; //設置為工作方式1
TMOD=0X20; //設置計數器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計數器初始值設置,注意波特率是4800的
TL1=0XF3;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1;
while(1);
}
void ser() interrupt 4
{
RI=0;
flag=SBUF;
if(flag=='1')
{
motor_z();
} else if(flag=='2')
{
motor_f();
}
}
void motor_z()
{
while(1){
a1=1;b1=0;c1=0;d1=0; //1
delay(5000);
a1=1;b1=1;c1=0;d1=0; //2
delay(5000);
a1=0;b1=1;c1=0;d1=0; //3
delay(5000);
a1=0;b1=1;c1=1;d1=0; //4
delay(5000);
a1=0;b1=0;c1=1;d1=0; //5
delay(5000);
a1=0;b1=0;c1=1;d1=1; //6
delay(5000);
a1=0;b1=0;c1=0;d1=1; //7
delay(5000);
a1=1;b1=0;c1=0;d1=1; //8
delay(5000); }
}
void motor_f()
{
while(1){
a1=1;b1=0;c1=0;d1=1; //8
delay(5000);
a1=0;b1=0;c1=0;d1=1; //7
delay(5000);
a1=0;b1=0;c1=1;d1=1; //6
delay(5000);
a1=0;b1=0;c1=1;d1=0; //5
delay(5000);
a1=0;b1=1;c1=1;d1=0; //4
delay(5000);
a1=0;b1=1;c1=0;d1=0; //3
delay(5000);
a1=1;b1=1;c1=0;d1=0; //2
delay(5000);
a1=1;b1=0;c1=0;d1=0; //1
delay(5000); }
}
|
|