#include<stc15.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
bit End;
//uchar code Motor_Left[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
uchar code Motor_Left[4]={0x08,0x04,0x02,0x01};
int speed,count;
void Motor_Left_Run()
{
uchar i;
for(i=0;i<4;i++)
{
P0=Motor_Left[i];
P21=1;
count=speed;
TR0=1;
while(End);
TR0=0;
End=1;
}
}
void UartInit(void) //[email protected]
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE8; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
TI=1;
}
void Timer0Init(void) //[email protected]
{
EA=1;
ET0=1;
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xCD; //设置定时初值
TH0 = 0xD4; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void main()
{
End=1;
speed=3;
UartInit();
Timer0Init();
while(1)
{
Motor_Left_Run();
}
}
void Time0() interrupt 1
{
count--;
if(count==0)
{
TR0=0;
End=0;
P21=0;
}
}
这里用4拍,定时器3MS,电机最快速度起转,2MS会起动失败,然后单片机就像死机一样,
如何改成8拍模式,电机起动的时候抖一下,单片机也像死机一样,几个输出口的LED随机亮两个
4æ5毫ç§å¯ä»¥è½¬å¨çï¼å°±æ¯æ¹æ12ç¸å±ç£8æï¼æ 论æä¹è°æ¶é´é½æ æ³å¯å¨
追çvoid Motor_Left_Run()
{
uchar i;
for(i=0;i<8;i++) //æ¯ä¸æ¯è¿é没æ¹ï¼åºè¯¥å°4æ¹ä¸º8
{
P0=Motor_Left[i];
P21=1;
count=speed;
TR0=1;
while(End);
TR0=0;
End=1;
}
}
æ¹äºçï¼å¯å¨é©¬è¾¾æä¸ä¸åçæºå°±æ»æºäºï¼æèææ¹æ两ç¸4æå±ç£ä¹ä¼å¤±è´¥ï¼æå¾å¥æª
追çä½ çå®æ¶å¨ä¸ºä»ä¹è®¾ç½®æ模å¼0ï¼èä¸ææå¡ç¨åºä¸å没æéæ°èµå¼ï¼æä»¥ä½ çå®æ¶æ¶é´æ¯ä¸å¯¹çã
追é®è®¾ç½®çæ¯16ä½èªå¨é载模å¼çï¼ä¸ç¨èµå¼ï¼STC15ç³»åçåçæº