單片機
我編的一個程序
#include //51芯片管腳定義頭文件
#include //內(nèi)部包含延時函數(shù) _nop_();
#define uchar unsigned char
#define uint unsigned int
uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
unsigned char code Tab[7]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82}; //數(shù)碼管顯示0~6的段碼表
uint n;
uint m;
uint c=1;
uint b=1;
sbit K1 = P3^2; //一樓
sbit K2 = P3^3; //二樓
sbit K3 = P3^4; //三樓
sbit K4 = P3^5; //一樓
sbit K5 = P1^4; //二樓
sbit K6 = P1^5; //三樓
sbit p1_0 = P1^0;
sbit p1_1 = P1^1;
sbit p1_2 = P1^2;
sbit p1_3 = P1^3;
sbit p2_0 = P2^0;
sbit p2_1 = P2^1;
sbit p2_2 = P2^2;
sbit p2_3 = P2^3;
/********************************************************/
/*
/* 延時t毫秒
/* 11.0592MHz時鐘,延時<1ms
/*
/********************************************************/
void delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<80; k++)
{ }
}
}
/**********************************************************/
/********************************************************/
/*
/*步進電機正轉
/*
/********************************************************/
void motor_ffw(n)
{
uchar i;
uchar k;
uchar r;
uint j;
for(k=0;k {
for (r=0;r<64;r++)
{
for (j=0; j<8; j++) //轉1*n圈
{p1_0=1 ; p1_1=0 ; p1_2=0 ; p1_3=0;
delay(1);
p1_0=1 ; p1_1=1 ; p1_2=0 ; p1_3=0;
delay(1);
p1_0=0 ; p1_1=1 ; p1_2=0 ; p1_3=0;
delay(1);
p1_0=0 ; p1_1=1 ; p1_2=1 ; p1_3=0;
delay(1);
p1_0=0 ; p1_1=0 ; p1_2=1 ; p1_3=0;
delay(1);
p1_0=0 ; p1_1=0 ; p1_2=1 ; p1_3=1;
delay(1);
p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=1;
delay(1);
p1_0=1 ; p1_1=0 ; p1_2=0 ; p1_3=1;
delay(1); //調(diào)節(jié)轉速
}
}
}
}
void motor_ffw2(n)
{
uchar i;
uchar k;
uchar r;
uint j;
for(k=0;k {
for (r=0;r<64;r++)
{
for (j=0; j<8; j++) //轉1*n圈
{ p2_0=1 ; p2_1=0 ; p2_2=0 ; p2_3=0;
delay(1);
p2_0=1 ; p2_1=1 ; p2_2=0 ; p2_3=0;
delay(1);
p2_0=0 ; p2_1=1 ; p2_2=0 ; p2_3=0;
delay(1);
p2_0=0 ; p2_1=1 ; p2_2=1 ; p2_3=0;
delay(1);
p2_0=0 ; p2_1=0 ; p2_2=1 ; p2_3=0;
delay(1);
p2_0=0 ; p2_1=0 ; p2_2=1 ; p2_3=1;
delay(1);
p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=1;
delay(1);
p2_0=1 ; p2_1=0 ; p2_2=0 ; p2_3=1;
delay(1); //調(diào)節(jié)轉速
}
}
}
}
/********************************************************/
/*
/*步進電機反轉
/*
/********************************************************/
void motor_rev(n)
{ uchar i;
uchar k;
uchar r;
uint j;
for(k=0;k {
for (r=0;r<64;r++)
{
for (j=0; j<8; j++) //轉1*n圈
{ p1_0=1 ; p1_1=0 ; p1_2=0 ; p1_3=1;
delay(1);
p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=1;
delay(1);
p1_0=0 ; p1_1=0 ; p1_2=1 ; p1_3=1;
delay(1);
p1_0=0 ; p1_1=0 ; p1_2=1 ; p1_3=0;
delay(1);
p1_0=0 ; p1_1=1 ; p1_2=1 ; p1_3=0;
delay(1);
p1_0=0 ; p1_1=1 ; p1_2=0 ; p1_3=0;
delay(1);
p1_0=1 ; p1_1=1 ; p1_2=0 ; p1_3=0;
delay(1);
p1_0=1 ; p1_1=0 ; p1_2=0 ; p1_3=0;
delay(1); //調(diào)節(jié)轉速
}
}
}
}
void motor_rev2(n)
{ uchar i;
uchar k;
uchar r;
uint j;
for(k=0;k {
for (r=0;r<64;r++)
{
for (j=0; j<8; j++) //轉1*n圈
{ p2_0=1 ; p2_1=0 ; p2_2=0 ; p2_3=1;
delay(1);
p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=1;
delay(1);
p2_0=0 ; p2_1=0 ; p2_2=1 ; p2_3=1;
delay(1);
p2_0=0 ; p2_1=0 ; p2_2=1 ; p2_3=0;
delay(1);
p2_0=0 ; p2_1=1 ; p2_2=1 ; p2_3=0;
delay(1);
p2_0=0 ; p2_1=1 ; p2_2=0 ; p2_3=0;
delay(1);
p2_0=1 ; p2_1=1 ; p2_2=0 ; p2_3=0;
delay(1);
p2_0=1 ; p2_1=0 ; p2_2=0 ; p2_3=0;
delay(1); //調(diào)節(jié)轉速
}
}
}
}
/********************************************************/
/*
/*檢測程序
/*
/********************************************************/
void check()
{ if(n>c)
{motor_ffw(n-c);
p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=0;}
else if(n {motor_rev(c-n);
p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=0;}
else if(n==c)
{p1_0=0 ; p1_1=0 ; p1_2=0 ; p1_3=0;}
c=n;
}
void check2()
{ if(m>b)
{motor_ffw2(m-b);
p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=0;}
else if(m {motor_rev2(b-m);
p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=0;}
else if(m==b)
{p2_0=0 ; p2_1=0 ; p2_2=0 ; p2_3=0;}
b=m;
}
/********************************************************
*
* 主程序
*
*********************************************************/
main()
{
while(1)
{
if(K1==0)
{n=1;
check();}
if(K2==0)
{n=2;
check();}
if(K3==0)
{n=3;
check();}
if(K4==0)
{m=1;
check2();}
if(K5==0)
{m=2;
check2();}
else if(K6==0)
{m=3;
check2();}
}
}
電梯程序 只能等一部電梯運行之后才能 控制另一部電梯
有高手指導說 要用定時器 和中斷
但是我補知道怎么改
請高手幫忙改下