标题: 步进电机代码 [打印本页]

作者: jkkuia    时间: 2017-12-4 18:33
标题: 步进电机代码
#include <STC89C5xRC.H>
sbit PA = P1^0;
sbit PB = P1^1;
sbit PC = P1^2;
sbit PD = P1^3;
unsigned int MS =0;
unsigned char KeyNum,FormKeyNum=0;
unsigned char MotorDIR=0;
unsigned char Motorfeq=0;
unsigned int x ;
unsigned char KeyScan(void)          ;
void main(){
   PA=1;
   PB=PC=PD=0;
   TMOD=0x01;
   TH0=64536/265;
   TL0=64536%265;
   ET0=1;
   EA=1;
   TR0=1;
   while(1){
KeyNum=KeyScan();
  if(KeyNum==1&&FormKeyNum==0) {
  if(Motorfeq<1000)Motorfeq++;}
   else if(KeyNum==2&&FormKeyNum==0) {
  if(Motorfeq>0)Motorfeq--;}
   else if(KeyNum==3&&FormKeyNum==0) {
  if(MotorDIR==0)MotorDIR=1;
  else MotorDIR=0;}
  FormKeyNum=KeyNum;  
   }
}
void Timer0INT() interrupt 1{
TH0=64536/256;
TL0=64536%256;
MS++;
if(MS>1000/Motorfeq){
    MS=0;
        if(MotorDIR){
       
        if(PA&&PB==0&&PC==0&&PD==0)x=1;
   else if(PA==0&&PB&&PC==0&&PD==0)x=2;
   else if(PA==0&&PB==0&&PC&&PD==0)x=3;
   else if(PA==0&&PB==0&&PC==0&&PD)x=4;
           switch(x)  {
           case 1:PA=0;PB=1;break;
           case 2:PB=0;PC=1;break;
           case 3:PC=0;PD=1;break;
           case 4:PD=0;PA=1;break;
                  }
                  
                   }
                   else{
        if(PA&&PB==0&&PC==0&&PD==0)x=1;
   else if(PA==0&&PB&&PC==0&&PD==0)x=2;
   else if(PA==0&&PB==0&&PC&&PD==0)x=3;
   else if(PA==0&&PB==0&&PC==0&&PD)x=4;
           switch(x)  {
           case 1:PA=0;PD=1;break;
           case 2:PD=0;PC=1;break;
           case 3:PC=0;PB=1;break;
           case 4:PB=0;PA=1;break;
                  }
                                   
                   }          }
                                         }
unsigned char KeyScan(){
if(P0==0xFD)return 1;
else if(P0==0xFB)return 2;
else if(P0==0xF7)return 3;
else return 0;
}






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1