计算机CPU周期固定,每条指令的执行周期固定。不插入 延时/定时 改变不了程序执行时间。
程序是碰配顺衡吵山序执行的。
你的 normalSpeed()在 原咐中有程序 之后,控制不了前面的原有程序。
slowDown(10)在 原有程序 之前,可以改变 原有程序里的参数,达到减慢的目的。
C语言是高级语言,编译后生成可执行程序。它的执行速度一般来说,比要通过解释执行的语言快。但比汇编语言慢。
不一定比其它高级语言快,例如,数学运算慧蠢郑方面,可能不如fortran快,当然,假定两者用的算法完全一样。
如果算法不同,两种语言就不好比较了。例如,对整篇输入文章进行语句结构或词组结构替代,用Perl 脚本比C快。
计算机语言其实是人的工具,例如,菜刀,斧头,螺丝刀,各有所长,各有各的用途。菜刀切菜,斧头劈柴,换过来用也不是不是可以,斧头切菜,菜刀劈柴,效率差。
C语言同C语言比,速度也不一样。MS VC++ 同 TB不一样.
同一种C语言,编译时前颂用了优化1,优化2,执行程序快档滑慢不同。
42步进电机是一个两相电机,一般控制可以分为全步或让哪哗半步控制,全步控制,缓丛每一切换相序,步进电机走1.8度,半步控制则走0.9度。全步控制相序分配为:A,/A,B,/B
半步控制相序分配为:A,AB,B,B/A,/A,/A/B,/B,/BA
加速的话,就使相坦行序切换快一点就可以;当然减速就是相序切换慢点就行。举例如下:
#include<reg51.h>
#define uchar unsigned char
uchar stepd[]={0x01,0x03,0x02,0x06,0x04,0xc0,0x08,0x09}
uchar num=0,fx=0
sbit keyup=P3^0
sbit keydn=P3^1
sbit keyfx=P3^2
int speed=10000
void t0isr() interrupt 1
{
TH0=(65536-speed)/256
TL0=(65536-speed)%256
P2=stepd[num]
if(fx==0){num++num%=8}
if(fx==1)
{
if(num==0)num=7
else num--
}
}
main()
{
TMOD=0x01
TH0=(65536-10000)/256
TL0=(65536-10000)%256
TR0=1
ET0=1
EA=1
while(1)
{
if(keyup==0)
{
while(key1==0)
speed-=10
}
if(keydn==0)
{
while(keydn==0)
speed+=10
}
if(key3==0)
{
while(key3==0)
fx=~fx
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)