📄 main.c
字号:
#include<reg52.h>
#include"EM4100.h"
#include"I2C.h"
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define PAGE0 0xa0
#define PAGE1 0xa1
#define PAGE2 0xa2
#define PAGE3 0xa3
#define MASTER_ADDRESS 0x00
#define COUNTER_ADDRESS 0x04
sbit OPEN_LOCK=P1^0;
sbit RESET=P1^1;
sbit LED=P3^6;
sbit BEEP=P3^7;
sbit DebugLED=P1^3;
uchar Master_Buffer[4];
uchar Temp_Buffer1[4];
uchar Temp_Buffer2[4];
uchar Temp_Address;
ulong Temp_SN;
void Convert(ulong SN,uchar * Buffer)
{
Buffer[0]=(uchar)(SN>>24);
Buffer[1]=(uchar)(SN>>16);
Buffer[2]=(uchar)(SN>>8);
Buffer[3]=(uchar)SN;
}
void Delay(ulong i)
{
while(i--);
}
uchar Compare(uchar * Buffer1,uchar * Buffer2,uchar Length)
{
uchar i;
for(i=0;i<Length;i++)
{
if(Buffer1[i]!=Buffer2[i])return 0;
}
return 1;
}
uchar Search()
{
uchar i;
for(i=0x10;i<Temp_Address;i+=0x04)
{
ReceiveStringOneDataAddress(PAGE0,i,Temp_Buffer2,4);
Delay(200);
if(Compare(Temp_Buffer1,Temp_Buffer2,4))return 1;
}
return 0;
}
void Open_Lock()
{
OPEN_LOCK=0;
Delay(1000);
OPEN_LOCK=1;
}
void Card_Manage()
{
//ulong i=1000000;
while(1)
{
if(EM4100_READY())
{
// i=1000000;
LED=0;
Temp_SN=Get_SN();
Convert(Temp_SN,Temp_Buffer1);
Delay(20000);
LED=1;
Get_Enable();
if(Compare(Master_Buffer,Temp_Buffer1,4))
{
Delay(40000);
return;
}
else if(Search());
else
{
SendStringOneDataAddress(PAGE0,Temp_Address,Temp_Buffer1,4);
Delay(200);
Temp_Address+=0x04;
SendStringOneDataAddress(PAGE0,COUNTER_ADDRESS,&Temp_Address,1);
Delay(200);
}
}
}
}
void SYS_INI()
{
LED=0;
BEEP=0;
Delay(20000);
LED=1;
Delay(20000);
LED=0;
Delay(20000);
LED=1;
BEEP=1;
OPEN_LOCK=1;
RESET=1;
EM4100_INI();
Get_Enable();
/* ReceiveStringOneDataAddress(PAGE0,MASTER_ADDRESS,Master_Buffer,4);
Delay(200);
ReceiveStringOneDataAddress(PAGE0,COUNTER_ADDRESS,&Temp_Address,1);
if(RESET&&(Master_Buffer[0]!=0xff)&&(Temp_Address!=0xff));
else
{
Master_Buffer[0]=0xff;
SendStringOneDataAddress(PAGE0,MASTER_ADDRESS,Master_Buffer,4);
while(EM4100_READY()==0);
LED=0;
Temp_SN=Get_SN();
Convert(Temp_SN,Master_Buffer);
Delay(20000);
LED=1;
Get_Enable();
SendStringOneDataAddress(PAGE0,MASTER_ADDRESS,Master_Buffer,4);
Temp_Address=0x10;
Delay(200);
SendStringOneDataAddress(PAGE0,COUNTER_ADDRESS,&Temp_Address,1);
}
*/
}
void COM_INI()
{
PCON=0x80;
TMOD=0x21;
SCON=0x50;
TL1=0xff;
TH1=0xff;
TR1=1;
TI=1;
EA=1;
}
void main()
{
SYS_INI();
COM_INI();
while(1)
{
if(EM4100_READY())
{
LED=0;
BEEP=0;
Temp_SN=Get_SN();
//Convert(Temp_SN,Temp_Buffer1);
Delay(20000);
LED=1;
BEEP=1;
printf("\n卡号:%ld",Temp_SN);
Get_Enable();
/*if(Compare(Master_Buffer,Temp_Buffer1,4))
{
Delay(40000);
if(EM4100_READY())
{
LED=0;
Temp_SN=Get_SN();
Convert(Temp_SN,Temp_Buffer1);
Delay(80000);
LED=1;
Get_Enable();
if(Compare(Master_Buffer,Temp_Buffer1,4))
{
DebugLED=0;
Delay(40000);
Card_Manage();
DebugLED=1;
}
else if(Search())Open_Lock();
}
else Open_Lock();
}
else
{
if(Search())Open_Lock();
}
*/
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -