//驅動光驅步進電機程序,2相4拍(8拍程序)
sbit xa = P1^4;
sbit xb = P1^5;
sbit xc = P1^6;
sbit xd = P1^7;
unsigned char xfb = 4; //走步標志位
unsigned char xNum[8] = {0x10,0x50,0x40,0x60,0x20,0xA0,0x80,0x90};
void delayms(unsigned int ms)
{
unsigned int i,j;
for(i=ms;i>0;i--) //i=ms即延時約ms毫秒
for(j=110;j>0;j--);
}
void xfork(unsigned int i) //x軸前進函數,前進多少步 xa=1.4 xb=1.5 xc=1.6 xd=1.7
{
while(i>0){
P1 &= 0x0F;P1 |= xNum[xfb];xfb++;i--;delayms(N);
xfb &= 0x07;
}
P1 &= 0x0F;
}
void xback(unsigned int i) //x軸后退函數
{
while(i>0){
P1 &= 0x0F;P1 |= xNum[xfb];xfb--;i--;delayms(N);
xfb &= 0x07;
}
P1 &= 0x0F;
} |