⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common_data.c

📁 一整套电梯控制器源程序
💻 C
字号:
#include <AT89X52.H>
#include <absacc.h>
#include <intrins.h>
#include <stdio.h>

#define EXTERN extern
#define uchar unsigned char
#define uint unsigned int

#define TIMER_100ms				5
#define TIMER_200ms				10
#define TIMER_400ms             20
#define TIMER_500ms             25
#define TIMER_1000ms            50
#define TIMER_2s                100
#define TIMER_5s                250 

#define TIMER_FILTER_NUM        10
#define GRP_UNIT_NUM            8       //number of group
#define FLOOR_MAX               6

//----------------------------------5045用----------------------------------------//
//struct data5
//{
//uchar m_cMaxFloorCnt;
//};
//#define DATA5 struct data5 

//DATA5 data5045;
//sbit SO=P3^4;   //5045输出
//sbit SI=P3^2;   //5045输入
//sbit SCK=P3^3;  //5045时钟
//sbit CS=P3^5;   //5045片选
uchar code WREN_INST=0X06;     // Write enable latch instruction (WREN)
uchar code WRDI_INST=0X04;     // Write disable latch instruction (WRDI)
uchar code WRSR_INST=0X01;     // Write status register instruction (WRSR)
uchar code RDSR_INST=0X05;     // Read status register instruction (RDSR)

//写入25045的先导字,应当为0000A010,其中的A为写入25045的高位地址
//将此WRITE_INST和写入高位地址相或后即为正确的写先导字
uchar code WRITE_INST=0X02;    // Write memory instruction (WRITE)

//读出25045的先导字,应当为0000A011,其中的A为读出25045的高位地址
//将此READ_INST和读出高位地址相或后即为正确的读先导字
uchar code READ_INST=0X03;     // Read memory instruction (READ)

uint code BYTE_ADDR=0X55;      // Memory address for byte mode operations
uchar code BYTE_DATA=0X11;     // Data byte for byte write operation
uint  code PAGE_ADDR=0X1F;     // Memory address for page mode operations 页面写入的其始地址
uchar code PAGE_DATA1=0X22;    // 1st data byte for page write operation
uchar code PAGE_DATA2=0X33;    // 2nd data byte for page write operation
uchar code PAGE_DATA3=0X44;    // 3rd data byte for page write operation

//这是状态寄存器的值,他的意义在于第5,第4位为WDI1,WDI0代表DOG的时间,00为1.4秒,01为600毫秒,10为200毫秒,00为disabled
//第3位和第2位为BL1,BL0,是写保护设置位,00为无保护,01为保护180-1FF,10为保护100-1FF,11为保护000-1FF.第1位为WEL,
//当他为1时代表已经"写使能"设置了,现在可以写了,只读位.第0位为WIP,当他为1时代表正在进行写操作,是只读
uchar code STATUS_REG=0x20;    // Status register,设置DOG时间设置为200毫秒,无写保护

uchar code  MAX_POLL=0x99;     // Maximum number of polls(最大写过程时间,确定25045的最大的写入过程的时间)
uchar code INIT_STATE=0x09;    // Initialization value for control ports
uint code SLIC=0x30;           // Address location of SLIC
uchar m_set5045flg;		 	   // 当设置位为0时,表示前面设置过,此时要重新的写入5045中。 如果没有,则不需要进行这个步骤。 

//rec
uchar  m_cInSelLamp[FLOOR_MAX];
uchar  m_cOverLoadLampFlg;
uchar  m_cBingFlg;
uchar  m_cArriveRingFlg;
uchar  m_cInSelAllOffFlg;
uchar  m_cMaxFloorCnt;
uchar  m_cDirect;              // 0/1/0xFF
uchar  m_cCurFloorNum;

//sen
uchar time_5sta_count; //5状态计数
uchar time_5sta_flg;   //5状态计数到标记

uchar time_insel_count;
uchar time_insel_flg;

uchar time_500ms_count;//500ms滤波计数
uchar time_500ms_flg;  //500ms滤波计数到标记

uchar sum_state1;      //司机上状态
uchar sum_state2;      //司机下状态
uchar sum_state3;      //司机状态
uchar sum_state4;      //直驶状态
uchar sum_state5;      //保留状态

uchar temp_state1;     //司机上状态
uchar temp_state2;     //司机下状态
uchar temp_state3;     //司机状态
uchar temp_state4;     //直驶状态
uchar temp_state5;     //保留状态

uchar m_state1;     //司机上状态
uchar m_state2;     //司机下状态
uchar m_state3;     //司机状态  
uchar m_state4;     //直驶状态  
uchar m_state5;     //保留状态

uchar keyboard[FLOOR_MAX];
uchar keyboardorg[FLOOR_MAX];
uchar array0[FLOOR_MAX];      //内选状态记录0
uchar array1[FLOOR_MAX];      //内选状态记录1
uchar array2[FLOOR_MAX];      //内选状态记录2
uchar array3[FLOOR_MAX];      //内选状态记录3
uchar array4[FLOOR_MAX];      //内选状态记录4

//到站钟计时
uchar time_arrive2s_count;    //到站钟保持2s滤波计数
uchar time_arrive2s_flg;      //到站钟保持2s滤波计数到标记

//蜂鸣器计时
uchar time_bing2s_count;    //到站钟保持2s滤波计数
uchar time_bing2s_flg;      //到站钟保持2s滤波计数到标记

uchar time_nocan_count;
bit time_nocan_flg;	








⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -