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

📄 mjdata.c.bak

📁 这是一个PIC单片机的实时操作系统
💻 BAK
字号:
//#include <pic.h>
//#include <pic1687x.h>
//#include "DJ485headB.h"
//#include <conio.h> //模拟232用
//24LC04的读写
//11-25 号的程序在原来的基础上把24LC04Q增加了读写EE32/08的功能,并增加删除卡程序,和读进行来卡号处理程序等
//11-27 做了点测试看一下读写EE32和08的效果,并增加了08到32的子程序
#include   "config.H"
bank1 char  c485Buf[35];
//bank1 char  testbuf[01];
//bank1 char  cData[10];
unsigned char   BJCardBuf[3];//比较EEPROM中的卡号用的缓存
unsigned char  testbuf[2];
uint8   KeyBuf[8];//按键的值的缓存
uint16  BJReAddr ;//返回的地址
//uchar  LKCOUNT  ; //放置联网控制器的数量
uint16  ts;
#define MASTER
unsigned char read[10];//读缓存
uint8   write[10];//写缓存
//24l04
uchar  EEType;//存储器的类型
void delay1ms(char  count);
void IOINT(void); //IO口初始化
//void Key(void);
//bank1 char cTest[10];
//char tbuf=0;
//char test=0;

/*unsigned char  i,bbt[9];
const	unsigned char  KKB[8]= {
0x00, 0x02,0x01 ,0x01 ,0x00 ,0xA2 , 0X0E ,0X00} ;
const	unsigned char  KKE[8]= {
0x00, 0x02,0x01 ,0x01 ,0x00 ,0xA3 , 0X0E ,0X00} ;

char cPacketReady;
char cLenOfData;
char cCmd, c;
*/
//char LCDDATA ;
uint16  testlend;
//bit  SHOUDAO=0X00;  //收到连接
bit  bj=0;
extern bit err_flag;
//0x01;  //默认是自动连接测试,否则是手动连接
//1为自动运行,0为手动运行

/* 汉字:欢迎使用门禁数据处理系统! */
const unsigned char HZ_HYSY[26] = {
	0XBB, 0XB6, 0XD3, 0XAD, 0XCA, 0XB9, 0XD3, 0XC3, 0XC3, 0XC5, 0XBD, 0XFB, 0XCA, 0XFD, 0XBE, 0XDD, 0XB4, 0XA6, 0XC0, 0XED, 0XCF, 0XB5, 0XCD, 0XB3, 0XA3, 0XA1
};

/* 汉字:请输入指纹 */
const unsigned char HZ_QSLZW[10] = {
	0XC7, 0XEB, 0XCA, 0XE4, 0XC8, 0XEB, 0XD6, 0XB8, 0XCE, 0XC6
};	
/* 汉字:删除成功! */
const unsigned char HZ_SCCG[10] = {
	0XC9, 0XBE, 0XB3, 0XFD, 0XB3, 0XC9, 0XB9, 0XA6, 0XA3, 0XA1
};
/* 汉字:找不到卡号! */
const unsigned char HZ_ZBDKH[12] = {
	0XD5, 0XD2, 0XB2, 0XBB, 0XB5, 0XBD, 0XBF, 0XA8, 0XBA, 0XC5, 0XA3, 0XA1
};	
/* 汉字:请确认卡号 */
const unsigned char HZ_QQRKH[10] = {
	0XC7, 0XEB, 0XC8, 0XB7, 0XC8, 0XCF, 0XBF, 0XA8, 0XBA, 0XC5
};
/* 汉字:找到卡号 */
const unsigned char HZ_ZDKH[8] = {
	0XD5, 0XD2, 0XB5, 0XBD, 0XBF, 0XA8, 0XBA, 0XC5
};
//写数据函数要求的参数为
//写放数据的数量,和地址指纹
/* 汉字:删卡请按1  复制请按2 */
const unsigned char HZ_SKFZ[24] = {
	0XC9, 0XBE, 0XBF, 0XA8, 0XC7, 0XEB, 0XB0, 0XB4, 0XA3, 0XB1, 0XA1, 0XA0, 0XA1, 0XA0, 0XB8, 0XB4, 0XD6, 0XC6, 0XC7, 0XEB, 0XB0, 0XB4, 0XA3, 0XB2
};


/* 汉字:08到32请按3 修复请按4 */
const unsigned char HZ_832CF[28] = {
	0XA3, 0XB0, 0XA3, 0XB8, 0XB5, 0XBD, 0XA3, 0XB3, 0XA3, 0XB2, 0XC7, 0XEB, 0XB0, 0XB4, 0XA3, 0XB3, 0XA1, 0XA0, 0XD0, 0XDE, 0XB8, 0XB4, 0XC7, 0XEB, 0XB0, 0XB4, 0XA3, 0XB4
};

uint8 writeeeprom(uint8 Len,uint16 StartAddr,uint8 *WriteBuf )
 {
 	 uint16 i; 
 	 uint8 k;
	if (Len<30||(Len!=0)) 
		 {		 
		  for(i=0;i<Len;i++)
		    {
		       WriteDate=*WriteBuf;    
               nop;
               nop;
		       iic_write(StartAddr);   	
                nop;

		       delay1ms(10);
		       
			 	 	if(err_flag==1)
			 	 		 {
			 	 		  SDA=1;
		           SCL=1;
		           return NOT_OK;
			 	 		 	break;
		          }
		       WriteBuf++;
		       StartAddr++;
		       
		    	}
		     return  OK ;   	    	  
		 	 }
	 else return NOT_OK;	  
 	  
 	/*  
 	  
 	uint16  c ;//联控制数据的计数
 	uint16  d=0;  
		  for ( c = 1; c < testlend; c++ )
				  {
				    WriteDate=0xff;
			 	 	iic_write(d);  // 址址与数量
			 	 	 nop;
			 	 	 nop;
				 	delay1ms(10);
			   	
			 	 	if(err_flag==1)
			 	 		 {
			 	 		  SDA=0;
               SCL=0;
			 	 		 	break;
              }
               
              
			 	 	
			 	 	d++;
            
         
				   }
  */   
 	//   
 	}	
void readeeprom(uint8 ReadLen ,uint16 ReadAddr )
{
	uint16 i,k;
   if(ReadLen!=0)
   	 {
   	 	 for (i=0;i<ReadLen;i++)
   	 	    {
		   	 	 read[i]=iic_read(ReadAddr);
		   	 	 ReadAddr++;
		   	 	}
   	 	  
   	 	}
	} 	
void delay1ms(uchar count)
{
 // int  i,j;
 	uchar i,j;
	for(i=0;i<count;i++)
	  for(j=0;j<130;j++)
	   ;
	
	}	
/* 查找EERPOM中是否有与缓存中相同的数量 */
//如果找到有相同的卡就返回地址和返回找到成功,如果
//没有就返回失败的指令
//形参是储存器的类型和比较卡的缓存

uchar  BJ_EE_Card(uchar EEType,uchar *BJ_EE_Buf) 
{
//如果EEPROM的类型是08的话	
//uchar  Buf[3];//数据缓存
//22 12 32 23 23 11
//11 22 22 23 22 33 

uint16 i,j;//
 
	if(EEType==8)
		{
			for(i=0;i<MAX24LC08;i=i+16)
			{
				
				 for (j=i;j<(i+15);j=j+3)  		 				   
				   if(iic_read(j)==BJ_EE_Buf[0] && iic_read(j+1)==BJ_EE_Buf[1] && iic_read(j+2)==BJ_EE_Buf[2])
				   {
			  		  nop;
		  		    BJReAddr = j;
		  		    return BJ_OK;
			  	 } 	
			   
		   
			}
		  
			
			}
/*			
	if(EEType==8)
		{
			for(i=0;i<MAX24LC08;i=i+16)
			{
				
				 for (j=i;j<(i+15);j=j+3)  		 				   
				   if(iic_read(j)==BJCardBuf[0] && iic_read(j+1)==BJCardBuf[1] && iic_read(j+2)==BJCardBuf[2])
				   {
			  		  nop;
		  		    BJReAddr = j;
		  		    return BJ_OK;
			  	 } 	
			   
		   
			}
		  
			
			}			

*/
			
 else if(EEType==32)
	 	{
	 		
	  	nop;
	  	
	 		
	 		}
	 		 
	 return  BJ_Full;
	}
//删除掉缓存中的卡	
uchar  DELOneCard(uint16 AdddrBuf)
{
	 BJCardBuf[0]=0xff;
	 BJCardBuf[1]=0xff;
	 BJCardBuf[2]=0Xff;  
	 writeeeprom(3,AdddrBuf,BJCardBuf);   	
	
	}
	//把按键输入的8位数据处理成三个门禁的字节
void Key( ) //按键值处理
 {
 	uint32 Buf;//键值处理缓存
  BJCardBuf[0]=KeyBuf[0]*100+KeyBuf[1]*10+KeyBuf[2];
   nop;
  Buf=(KeyBuf[3]*10000+KeyBuf[4]*1000+KeyBuf[5]*100)+KeyBuf[6]*10+KeyBuf[7];
   nop;
  BJCardBuf[2]=Buf%256;
  BJCardBuf[1]=Buf>>8; 
  
  nop;
 	}	
 	
 	//把08的数据复制到32中,并把0F的数据改为32
 	
void  Copy08to32(void)
{
	uint16 i;
	for(i=0;i<MAX24LC08;i++)
	  {
	  	EEType=EE8;
	  	WriteDate=iic_read(i);
	  	EEType=EE32;
	  	iic_write(i);
	  	}
	 //写完数据后把08改为32
	   EEType=EE32;
	   WriteDate=0x32;
	   iic_write(0x0f);
	  	
	} 	
	
void IOINT(void) //IO口初始化
{
		ADCON1 = 0x07;  
	/*	
		TRISA=0X28;
		TRISB=0X00;
		TRISC=0XC4;
		TRISD=0X00;
		TRISE=0X07;
	*/
	//RA口定义
	//RA0  RA1  RA2  LCD使用
	TRISA=0X28;
	//RB口定义
	/*     RB2 RB1  RB0
	  RB3  1    2   3 
	  RB4  4    5   6  
	  RB5  7    8   9
	  RB6  取消 0  确认
	*/
	TRISB=0XF8; 
	//RC口定义
	// RC0  DATA
	// RC1  SCL  待写芯片
	//RC2  DATA
	//RC3  SCL  母片位置
	//RC4  RFDATA  未用
 //RC5   BEEP 
 //RC6 RC7  串口通讯
  TRISC=0XDF;
 //RD口定义
 //RD LCD 数据
	TRISD=0X00; 
	
	}	
	
	
void main(void)
{
	
		//  SHOUDAO=0;
		IOINT();
		Lcdint(); 
		asm("NOP");
		asm("NOP");
		EEType=EE8;
		KeyBuf[0]=0;
		KeyBuf[1]=2;
		KeyBuf[2]=6;
		KeyBuf[3]=1;
		KeyBuf[4]=2;
		KeyBuf[5]=4;
		KeyBuf[6]=5;
		KeyBuf[7]=4;
		Key();
		
		//LcdFuc2(26,&HZ_HYSY); //欢迎界面
		//delay1ms(1000);
		//LcdFuc2(24,&HZ_SKFZ); //删除卡和复制
		nop;
		//delay1ms(1000);
		//LcdFuc2(28,&HZ_832CF); // 修复
		// 	Setup();
		SDA_IO=1;
		SCL_IO=1;
		SDA=1;
		SCL=1;
		delay1ms(0x50);
		asm("NOP");
		//			 	 	iic_write(0X00);  // 址址与数量
		testlend=360;
	//	readeeprom();
	
	for (ts=0;ts<10;ts++)
	{
		 write[ts]=ts;
		}	
      nop;

	readeeprom(10,0);
       nop; 
		nop;
		nop;
		BJCardBuf[0]=0x04; 
		BJCardBuf[1]=0x05;
		BJCardBuf[2]=0x06;  
 //BJReAddr=0X3F8;
 //DELOneCard(BJReAddr);
//writeeeprom(3,252,BJCardBuf);

 nop;
 nop;
 //   readeeprom();
 nop;
 

 if(BJ_EE_Card(8,BJCardBuf)==BJ_OK)
 	{nop;
 	 nop;	
 	 LcdFuc2(8,&HZ_ZDKH);
     nop;
     nop;
   DELOneCard(BJReAddr);
   nop;
   nop;
   LcdFuc2(8,&HZ_SCCG); //删除卡成功!
   nop;
   nop;

 	 while(1);
 		}
 	else 
 		{
 		LcdFuc2(12,&HZ_ZBDKH);
 		while(1);	
 			
 			}	
 nop;
 nop;

     	SDA_IO=0;
   	SCL_IO=0;
   	SDA=0;
   	SCL=0;
   asm("NOP");
  
  asm("NOP");
   LcdFuc2(10,&HZ_QQRKH);//请输入指纹
   while(1)
        {} 
  
  

}

⌨️ 快捷键说明

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