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

📄 clock.c

📁 指纹识别源代码,用于智能门紧,还有配合MF800卡使用
💻 C
字号:
#include "reg58.h"
#include "bus.h"
#include "clock.h"
#include "intrins.h"
#include "timer.h"
#include "lcd.h"

unsigned char clock_read(unsigned char time)
{
	unsigned char tempdata;
	AS128=0;
	SEL128=0;
	DATAPORT=time;
   	AS128=1;
	_nop_();
	AS128=0;

	DATAPORT=0XFF;
	//tempdata=DATAPORT;
	
	RD=0;
	_nop_();
	_nop_();
	tempdata=DATAPORT;
	RD=1;
	SEL128=1;
	return tempdata;	
}

void clock_write(unsigned char time,unsigned char timedata)
{
	AS128=0;
	//WR=0;
	SEL128=0;
	DATAPORT=time;
	AS128=1;
	_nop_();
	AS128=0;
	
	DATAPORT=timedata;
	WR=0;
	_nop_();
	WR=1;
	SEL128=1;
}

void getdatetime()
{
	datetime[0]=clock_read(CCENTURY);
	datetime[1]=clock_read(CYEAR);
	datetime[2]=clock_read(CMONTH);
	datetime[3]=clock_read(CDAYOFMONTH);
	datetime[4]=clock_read(CHOURS);
	datetime[5]=clock_read(CMINUTES);
	datetime[6]=clock_read(CSECONDS);
	datetime[7]=clock_read(CDAYOFWEEK);
	secondsflag=0;
	seconds=0;
}
void init_clock()
{
	//unsigned char tempdata;
	//clock_write(REGISTERA,0x20);
	//clock_write(SECONDS,0);
	//clock_write(MINUTES,32);
	//clock_write(HOURS,12);
	//clock_write(DAYOFWEEK,4);
	//clock_write(DAYOFMONTH,11);
	//clock_write(MONTH,8);
	//clock_write(YEAR,05);
	//clock_write(CENTURY,20);

	//clock_write(100,0x55);
	//tempdata=clock_read(100);
	clock_write(CREGISTERB,0x6);
	clock_write(CREGISTERA,0x20);
	//while(1)
	//{
	//tempdata=clock_read(SECONDS);
	//tempdata=clock_read(MINUTES);
	//tempdata=clock_read(HOURS);
	//t/empdata=clock_read(DAYOFWEEK);
	//tempdata=clock_read(DAYOFMONTH);
	//tempdata=clock_read(MONTH);	
	//tempdata=clock_read(YEAR);
	//tempdata=clock_read(CENTURY);
	//tempdata=clock_read(REGISTERA);
	//tempdata=clock_read(REGISTERB);
	//tempdata=clock_read(REGISTERC);
	//tempdata=clock_read(REGISTERD);
	//}
	//tempdata1=clock_read(USEDFLAG1);
	//tempdata2=clock_read(USEDFLAG2);
	//getdatetime(datetime);
	_nop_();
}

void checksavedate()
{
	unsigned char tempdata;
	tempdata=(dispbuff[LINE2][0]-0X30)*10+dispbuff[LINE2][1]-0X30;		//20
	if(tempdata!=20)return;

	tempdata=(dispbuff[LINE2][2]-0X30)*10+dispbuff[LINE2][3]-0X30;		//05
	if(tempdata>99)return;

	tempdata=(dispbuff[LINE2][4]-0X30)*10+dispbuff[LINE2][5]-0X30;		//10
	if((tempdata>12)||(!tempdata))return;

	tempdata=(dispbuff[LINE2][6]-0X30)*10+dispbuff[LINE2][7]-0X30;		//11
	if((tempdata>31)||(!tempdata))return;

	tempdata=(dispbuff[LINE2][8]-0X30)*10+dispbuff[LINE2][9]-0X30;		//
	if(tempdata>23)return;

	tempdata=(dispbuff[LINE2][10]-0X30)*10+dispbuff[LINE2][11]-0X30;
	if(tempdata>59)return;

	tempdata=(dispbuff[LINE2][12]-0X30)*10+dispbuff[LINE2][13]-0X30;
	if(tempdata>59)return;

	tempdata=dispbuff[LINE2][14]-0X30;
	if((tempdata>7)||(!tempdata))return;


	tempdata=(dispbuff[LINE2][12]-0X30)*10+dispbuff[LINE2][13]-0X30;
	clock_write(CSECONDS,tempdata);

	tempdata=(dispbuff[LINE2][10]-0X30)*10+dispbuff[LINE2][11]-0X30;
	clock_write(CMINUTES,tempdata);

	tempdata=(dispbuff[LINE2][8]-0X30)*10+dispbuff[LINE2][9]-0X30;		//
	clock_write(CHOURS,tempdata);

	tempdata=(dispbuff[LINE2][6]-0X30)*10+dispbuff[LINE2][7]-0X30;		//11
	clock_write(CDAYOFMONTH,tempdata);

	tempdata=(dispbuff[LINE2][4]-0X30)*10+dispbuff[LINE2][5]-0X30;		//10
	clock_write(CMONTH,tempdata);

	tempdata=(dispbuff[LINE2][2]-0X30)*10+dispbuff[LINE2][3]-0X30;		//05
	clock_write(CYEAR,tempdata);

	tempdata=(dispbuff[LINE2][0]-0X30)*10+dispbuff[LINE2][1]-0X30;		//20
	clock_write(CCENTURY,tempdata);

	tempdata=dispbuff[LINE2][14]-0X30;
	clock_write(CDAYOFWEEK,tempdata);

	getdatetime();


	
}

⌨️ 快捷键说明

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