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

📄 driver.c

📁 KEIL C编译 到位监控程序
💻 C
字号:
#include "Main.h"
#include "AT89X51.h"
#include <intrins.h>
#include <absacc.h>

extern bit timerHap;	//定时器到时

BYTE bdata sensor;	//光电传感器状态保存, 用于去抖
sbit CoinDoor = sensor^0;              //投币口 开/关到位否
sbit CoinBox  = sensor^1;              //大钱箱 到位否
sbit RmbOut   = sensor^2;              //纸币出 到位否
sbit Coiner   = sensor^3;              //硬币机 到位否
sbit RmbIn    = sensor^4;              //纸币进 到位否
sbit Provider = sensor^5;              //刮票机 到位否
sbit Door     = sensor^6;              //后门   到位否
sbit AAA      = sensor^7;              // 保留   

BYTE bdata lock;	//光电传感器状态保存, 用于去抖
sbit CoinDoorCtl = lock^0;            //硬币投币口  开关
sbit MainLampCtl = lock^1;            //维修照明灯 嵊州忠欧 0575-83218520 13967418522
sbit CardLampCtl = lock^2;            //出卡处照明灯
sbit Fan1Ctl     = lock^3;            //排风扇1
sbit Fan2Ctl     = lock^4;            //排风扇2
sbit CoinBoxCtl  = lock^5;            //加硬币门锁上否?
sbit BigBoxDoor  = lock^6;            //钱箱门锁上否?
sbit DoorLock    = lock^7;            //后门锁上否?

BYTE bdata inputByte1;   //XBYTE[0x0000];
sbit GDG10 = inputByte1 ^ 0;          //投币口 开/关 传感器
sbit GDG11 = inputByte1 ^ 1;  
sbit GDG12 = inputByte1 ^ 2; 
sbit GDG13 = inputByte1 ^ 3; 
sbit GDG14 = inputByte1 ^ 4;           //
sbit GDG15 = inputByte1 ^ 5;           //
sbit GDG16 = inputByte1 ^ 6;           //
sbit GDG17 = inputByte1 ^ 7;           //

BYTE bdata inputByte2;   //XBYTE[0x1000];
sbit GDG20 = inputByte2 ^ 0;           //
sbit GDG21 = inputByte2 ^ 1;           //
sbit GDG22 = inputByte2 ^ 2;           //
sbit GDG23 = inputByte2 ^ 3;           //
sbit GDG24 = inputByte2 ^ 4;           //
sbit GDG25 = inputByte2 ^ 5;           //
sbit GDG26 = inputByte2 ^ 6;           //
sbit GDG27 = inputByte2 ^ 7;           //

BYTE bdata inputByte3;   //XBYTE[0x2000];
sbit GDG30 = inputByte3 ^ 0;           //
sbit GDG31 = inputByte3 ^ 1;           //
sbit GDG32 = inputByte3 ^ 2;           //
sbit GDG33 = inputByte3 ^ 3;           //
sbit GDG34 = inputByte3 ^ 4;           //
sbit GDG35 = inputByte3 ^ 5;           //
sbit GDG36 = inputByte3 ^ 6;           //
sbit GDG37 = inputByte3 ^ 7;           //

BYTE bdata outputByte1 = 0;   //XBYTE[0x0000];
sbit OLT0 = outputByte1 ^ 0;           //
sbit OLT1 = outputByte1 ^ 1;           //
sbit OLT2 = outputByte1 ^ 2;           //
sbit OLT3 = outputByte1 ^ 3;           //
sbit OLT4 = outputByte1 ^ 4;           //
sbit OLT5 = outputByte1 ^ 5;           //
sbit OLT6 = outputByte1 ^ 6;           //
sbit OLT7 = outputByte1 ^ 7;           //

BYTE bdata outputByte2 = 0;   //XBYTE[0x1000];
sbit OLT8 = outputByte2 ^ 0;  //控制投币口   开 关
sbit OLT9 = outputByte2 ^ 1;  //控制维修灯   亮 灭 
sbit OLTA = outputByte2 ^ 2;  //控制出卡处灯 亮 灭
sbit OLTB = outputByte2 ^ 3;  //

//sbit OLTC = outputByte2 ^ 4;
//sbit OLTD = outputByte2 ^ 5;
sbit OLTE = outputByte2 ^ 6;  //控制fan1 亮 灭
sbit OLTF = outputByte2 ^ 7;  //控制fan2 亮 灭

sbit LED_E = P3 ^ 2;          //指示灯

sbit RELAY = P3 ^ 4;          //



////////////////////////////////////
/*BYTE INPUT1()//for test
{
inputByte2 = XBYTE[0x1000];
return inputByte2;
}*/

/*********************************************************************
BYTE INPUT()//for test
{
inputByte1 = XBYTE[0x0000];
return inputByte1;
}
*********************************************************************/
//RELAY
void control24V(BOOL relay) 
{ 
OLT8=1;  //
OLT9=1;
OLTA=1;
OLTB=1;
XBYTE[0x1000]=outputByte2; //for test
if (relay==OPEN) RELAY=0; //低电平控制24V有电
else RELAY=1;
}
//
void InCoinDoor(BOOL OpenClose) //test
{ 
if (OpenClose==OPEN) 
    { 
    OLT8=0; 
	XBYTE[0x1000] = outputByte2;
    }//低电平控制门开
else   
    {
	 OLT8=1;
     XBYTE[0x1000] = outputByte2;
    }
}

/*
void OutCardLamp(BOOL OpenClose) //出卡处灯 亮灭
{ 
if (OpenClose==OPEN) 
    { 
    OLTA=0; 
	XBYTE[0x1000] = outputByte2;
    }//低电平控制门开
else   
    {
	 OLTA=1;
     XBYTE[0x1000] = outputByte2;
    }
}
void MaintainLamp(BOOL OpenClose)  //维修灯
{
	OLTE = OpenClose;
	OLTF = 0;
	XBYTE[0x1000] = outputByte2;
}*/
/*********************开关到位情况 0--6****************XBYTE[0x0000]**************************/
//GDG10  //0 硬币进口处 开关情况
BOOL isInCoinDoor() ////   1门关 //0 门开 //1门完全开
{
	inputByte1 = XBYTE[0x0000];
	
    if( GDG10 == 1)   
    {
    delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG10 == 1)  //延时后 还是原来情况 
	   {
		 CoinDoor = 1;   //接受新情况
	   }
    }
    if( GDG10 == 0)   
    {
    delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG10 == 0)  //延时后 还是原来情况 
	   {
		 CoinDoor = 0;   //接受新情况
	   }
    }
	return CoinDoor;
}

/******************************************************************/
//GDG14  //1 硬币机钱箱是否到位
BOOL isCoinBox() // 有币 出高电平
{
	inputByte1 = XBYTE[0x0000];
	
    if( GDG14 == 1)   //有币
    {
	//delay_1ms(1);
   	inputByte1 = XBYTE[0x0000];
	if( GDG14 == 1)  //延时后 还是原来情况 
	   {
		 CoinBox= 1;   //接受新情况
	   }
    }
    else//( GDG14 == 0)   
    {
	//delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG14 == 0)  //延时后 还是原来情况 
	   {
		 CoinBox=  0;   //接受新情况
	   }
    }
	return CoinBox;
}
//GDG15  //2 纸币出币机到位否
BOOL isRmbOut() // 有币 出高电平
{
	inputByte1 = XBYTE[0x0000];
	
    if( GDG15 == 1)   //有币
    {
	//delay_1ms(1);
   	inputByte1 = XBYTE[0x0000];
	if( GDG15 == 1)  //延时后 还是原来情况 
	   {
		 RmbOut=1;   //接受新情况
	   }
    }
    else//( GDG15 == 0)   
    {
	//delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG15 == 0)  //延时后 还是原来情况 
	   {
		 RmbOut=0;   //接受新情况
	   }
    }
	return RmbOut;
}
//GDG16  //3 硬币机到位否
BOOL isCoiner() // 有币 出高电平
{
	inputByte1 = XBYTE[0x0000];
	
    if( GDG16 == 1)   //有币
    {
	//delay_1ms(1);
   	inputByte1 = XBYTE[0x0000];
	if( GDG16 == 1)  //延时后 还是原来情况 
	   {
		 Coiner=1;   //接受新情况
	   }
     }
    else//( GDG16 == 0)   
    {
	//delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG16 == 0)  //延时后 还是原来情况 
	   {
		 Coiner=0;   //接受新情况
	   }
     }
   return  Coiner;
}
//GDG17  //4 纸币进币机到位否
BOOL isRmbIn() // 有币 出高电平
{
	inputByte1 = XBYTE[0x0000];
	
    if( GDG17 == 1)   //有币
    {
	//delay_1ms(1);
   	inputByte1 = XBYTE[0x0000];
	if( GDG17 == 1)  //延时后 还是原来情况 
	   {
		 RmbIn=1;   //接受新情况
	   }
     }
    else//( GDG17 == 0)   
    {
	//delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG17 == 0)  //延时后 还是原来情况 
	   {
		 RmbIn=0;   //接受新情况
	   }
    }
	return  RmbIn;
}

//GDG11  //5 刮票机到位否
BOOL isProvider() // 有币 出高电平
{
	inputByte1 = XBYTE[0x0000];
	
    if( GDG11 == 1)   //有币
    {
	//delay_1ms(1);
   	inputByte1 = XBYTE[0x0000];
	if( GDG11 == 1)  //延时后 还是原来情况 
	   {
		 Provider=1;   //接受新情况
	   }
     }
    else//( GDG11 == 0)   
    {
	//delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG11 == 0)  //延时后 还是原来情况 
	   {
		 Provider= 0;   //接受新情况
	   }
     }
	return  Provider;
}
//GDG12 //6 后门关好否
BOOL isDoor() // 有币 出高电平
{
	inputByte1 = XBYTE[0x0000];
	
    if( GDG12 == 1)   //有币
    {
	delay_1ms(1);
   	inputByte1 = XBYTE[0x0000];
	if( GDG12 == 1)  //延时后 还是原来情况 
	   {
		 Door=1;   //接受新情况
	   }
    }
    else//( GDG12 == 0)   
    {
	delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG12 == 0)  //延时后 还是原来情况 
	   {
		 Door=0;   //接受新情况
	   }
     }
	return Door;
}

//GDG13 //7 AAA关好否
BOOL isAAA() // 有币 出高电平
{
	inputByte1 = XBYTE[0x0000];
	
    if( GDG13 == 1)   //有币
    {
	delay_1ms(1);
   	inputByte1 = XBYTE[0x0000];
	if( GDG13 == 1)  //延时后 还是原来情况 
	   {
		 AAA=1;   //接受新情况
	   }
    }
    else//( GDG13 == 0)   
    {
	delay_1ms(1);
	inputByte1 = XBYTE[0x0000];
	if( GDG13 == 0)  //延时后 还是原来情况 
	   {
		 AAA=0;   //接受新情况
	   }
     }
	return AAA;
}
///////////////////inputByte3//////////////////////////////////////
//GDG30 //5 加硬币器门 是否锁上
BOOL isCoinBoxCtl() // 有币 出高电平
{
	inputByte3 = XBYTE[0x2000];
	
    if( GDG30 == 1)   //有币
    {
	delay_1ms(1);
   	inputByte3 = XBYTE[0x2000];
	if( GDG30 == 1)  //延时后 还是原来情况 
	   {
		 CoinBoxCtl=1;   //接受新情况
	   }
    }
    else//( GDG30 == 0)   
    {
	delay_1ms(1);
	inputByte3 = XBYTE[0x2000];
	if( GDG30 == 0)  //延时后 还是原来情况 
	   {
		 CoinBoxCtl=0;   //接受新情况
	   }
     }
	return CoinBoxCtl;
}

//GDG31 //6 大钱箱门 是否锁好
BOOL isBigBoxDoor() // 有币 出高电平
{
	inputByte3 = XBYTE[0x2000];
	
    if( GDG31 == 1)   //有币
    {
	delay_1ms(1);
   	inputByte3 = XBYTE[0x2000];
	if( GDG31 == 1)  //延时后 还是原来情况 
	   {
		 BigBoxDoor=1;   //接受新情况
	   }
    }
    else//( GDG31 == 0)   
    {
	delay_1ms(1);
	inputByte3 = XBYTE[0x2000];
	if( GDG31 == 0)  //延时后 还是原来情况 
	   {
		 BigBoxDoor=0;   //接受新情况
	   }
     }
	return BigBoxDoor;
}

//GDG34 //7 后门是否锁好
BOOL isDoorLock() // 有币 出高电平
{
	inputByte3 = XBYTE[0x2000];
	
    if( GDG34 == 1)   //有币
    {
	delay_1ms(1);
   	inputByte3 = XBYTE[0x2000];
	if( GDG34 == 1)  //延时后 还是原来情况 
	   {
		 DoorLock=1;   //接受新情况
	   }
    }
    else//( GDG34 == 0)   
    {
	delay_1ms(1);
	inputByte3 = XBYTE[0x2000];
	if( GDG34 == 0)  //延时后 还是原来情况 
	   {
		 DoorLock=0;   //接受新情况
	   }
     }
	return DoorLock;
}
/************************************************
void delay()
{
	BYTE i;
	for(i=0; i<0xFF; i++)
	{
		_nop_();
	}
}*/

////////////////////////////////////
//名称: 延时1mS                                              	
//功能:             
//输入:  x=1~255mS(x=0时延时30uS )                              
//输出:  no 
//创建日期:		2005/3/ok  
//
///////////////////////////////////
void  delay_1ms (BYTE x)//延时1mS
{
	BYTE i;

	while(x>0)
	{
		for(i=0;i<112;i++);
		x--;
	}
}

⌨️ 快捷键说明

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