找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1615|回复: 0
收起左侧

步进电机代码

[复制链接]
ID:257326 发表于 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;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表