|
串口發(fā)送數(shù)據(jù)到STC12C5A60S2控制步進(jìn)電機(jī)的正反轉(zhuǎn),延時(shí)改了很多次了都不行,可是這個(gè)程序我在51上試了,是可以用的,到底哪里錯(cuò)了?各位大神幫我看看:
#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; //電機(jī)
sbit b1=P2^1;
sbit c1=P2^2;
sbit d1=P2^3;
void delay(unsigned char z)
{
while(z--);
}
void main()
{
SCON=0X50; //設(shè)置為工作方式1
TMOD=0X20; //設(shè)置計(jì)數(shù)器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計(jì)數(shù)器初始值設(shè)置,注意波特率是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); }
}
|
|