就是我用T1做为串口的波特率发生器。在初始化后,串口一直处在准备接受的状态。现在是我从串口读到一个转速值,然后从P2口输出一个脉冲, 输出脉冲:以接收到的转速值为参数算出来的一个延时时间为延时,延时时间用T0定时器做,时间到翻转。 //延时函数 单位 100 us( t=1时,延时100微秒 ) (晶振为12MHz)
void delay(unsigned int t) { uint cont; cont=65536-100*t; TMOD=TMOD|0X01; //T0 ,工作方式1 (16位) TH0=(uchar)(cont>>8); TL0=(uchar)cont; TR0=1; while(TF0!=1); TF0=0; TR0=0;
}
// 电机以指定速度运行 void mot_run(unsigned int speed) { unsigned int td; td=1500/speed; CL=~CL; delay(td);
}
|