#include
#define MAXFLOOR 6 //定义一个最大层数为6 层的电梯
unsigned char code LEDCODES[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d}; //LED 数码管发光数组
/****************** 电梯外对应的上下按键*************************/
sbit FLOOR6DOWN=P1^0; //6 楼下对应的P1^0,IO 口
sbit FLOOR5UP=P1^1; //5 楼上对应的P1^1,IO 口
sbit FLOOR5DOWN=P1^2; //5 楼下对应的P1^2,IO 口
sbit FLOOR4UP=P1^3; //4 楼上对应的P1^3,IO 口
sbit FLOOR4DOWN=P1^4; //4 楼下对应的P1^4,IO 口
sbit FLOOR3UP=P1^5; //3 楼上对应的P1^5,IO 口
sbit FLOOR3DOWN=P1^6; //3 楼下对应的P1^6,IO 口
sbit FLOOR2UP=P1^7; //2 楼上对应的P1^7,IO 口
sbit FLOOR2DOWN=P2^0; //2 楼下对应的P2^0,IO 口
sbit FLOOR1UP=P2^1; //1 楼上对应的P2^1,IO 口
/****************** 电梯内对应各层楼的按键***********************/
sbit FLOOR1=P2^2; //1 楼对应的P2^2IO 口
sbit FLOOR2=P2^3; //2 楼对应的P2^3IO 口
sbit FLOOR3=P2^4; //3 楼对应的P2^4IO 口
sbit FLOOR4=P2^5; //4 楼对应的P2^5IO 口
sbit FLOOR5=P2^6; //5 楼对应的P2^6IO 口
sbit FLOOR6=P2^7; //6 楼对应的P2^7IO 口
/********************* 电梯上下运行指示灯************************/
sbit LEDUP=P3^6; //LED 上对应的P3^6IO 口
sbit LEDDOWN=P3^7; //LED 下对应的P3^7IO 口
bit DIRECTION=1,STOP=0; // 电梯运行方向位,电机运行停止与否标志位
unsigned char CURFLOOR=1; // 当前楼层处于1 楼
unsigned char DESTFLOOR=1; // 目地楼层处于1 楼
unsigned char RUN=0; //运行状态标志位,RUN=1 表示正在运行
unsigned int timer1=0,timer2=0; //timer1 为楼层间运行时间计数值,
timer2 为等待计数值
unsigned char CALLFLOORUP[7]={0,0,0,0,0,0,0}; // 呼叫楼层上对应的数组,存储每层楼的信息,
1 为有人呼叫或者有人前往
unsigned char CALLFLOORDOWN[7]={0,0,0,0,0,0,0}; //呼叫楼层下对应的数组,存储每层楼的信
息,1 为有人呼叫或者有人前往
unsigned char CALLFLOOR[7]={0,0,0,0,0,0,0}; // 呼叫楼层对应的数组,存储每层楼的信息,
1 为有人呼叫或者有人前往
/************* 自定义函数的声明*******************/
void SELECTNEXT();
void step(bit DIRECTION);
void DELAY(unsigned int Z);
void JUDGESIT();
/********************主函数**********************/
void main(void)
{
P0=LEDCODES[1]; //点亮第一层对应的LED
TH0=0x3C; //定时器1 的初值
TL0=0xB0;
TMOD=0x01;