?? 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 + -