📄 driver.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 + -