标题: 步进电机代码 [打印本页]
作者: 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 |