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

📄 hhh.txt

📁 51 - 音乐测试程序--------------------
💻 TXT
📖 第 1 页 / 共 3 页
字号:
     if(temp>=0x80)bit_fans=1;
     else bit_fans=0;
     temp=buf2[0]<<5;
     if(temp>=0x80)bit_baoj=1;
     else bit_baoj=0;
     temp=buf2[0]<<6;
     if(temp>=0x80)  bit_guas=1; 
     else bit_guas=0;
}

//*******************************************
 void Working()/////此函数完成读卡并处理信息的所有功能
{
    unsigned int a;

    unsigned char aaa;
    
    unsigned char tm2[6];
    unsigned char time[5];
    unsigned  int m,nn,ff;
    unsigned char p[5];


    PwmRun();
     a=0;

     p[0]=0x88;    //读卡密码
     p[1]=0x88;
     p[2]=0x88;
     p[3]=0x88; //readi2c(26);

  //********************************
 //********************************

   while(1)//开始读卡
     {
     Aor_Wake_up(p);
     delay_ms(30);
     a++;
     if(Read_Card(buf1,buf2)==1)        //  Read_Card(buf1,buf2)==1   只读一次卡     Read_Car(buf2)==1
      {
          // LED_BLUE=0;
          // LED_RED=1;
        decrypt();//解密               // buf1存已经解密后数据, buf2为原始数据
        goto looop; 
        for(a=0;a<5;a++) tm1[a]=buf1[5+a];        //
        for(a=0;a<5;a++) tm2[a]=buf1[11+a];      //
        
        if((readi2c(0)==buf1[17])&&(readi2c(1)==buf1[18])&&(readi2c(2)==buf1[19])&&(readi2c(3)==buf1[20]))//判断酒店代号相同
        {PwmStop();break;}
        else
         {if ( (buf1[0]==0x01) || (buf1[0]==0x03) )  //初始化卡 设置卡处理
           {
            if(((readi2c(0)==0x00)&&(readi2c(1)==0x00))||((readi2c(0)==0xff)&&(readi2c(1)==0xff))||((readi2c(0)==buf1[17])&&(readi2c(1)==buf1[18]))) //第一次使用
              {
               if(((readi2c(2)==0x00)&&(readi2c(3)==0x00))||((readi2c(2)==0xff)&&(readi2c(3)==0xff))||((readi2c(2)==buf1[19])&&(readi2c(3)==buf1[20]))) //客户号相同或为初始状态
                {writei2c(0,buf1[17]);  //代理商号
                 writei2c(1,buf1[18]);
                 writei2c(2,buf1[19]);  //用户号
                 writei2c(3,buf1[20]);
                 writei2c(4,buf1[2]);  //房地址
                 writei2c(5,buf1[3]);
                 writei2c(6,buf1[4]);
                 writei2c(7,buf1[1]);
                 for(a=8;a<70;a++) writei2c(a,0x00);
                    if((readi2c(4)==buf1[2])&&(readi2c(5)==buf1[3])&&(readi2c(6)==buf1[4])&&(readi2c(7)==buf1[1]))
                     {Beetmap(1);PwmStop();goto L;}
                    else {Beetmap(8);PwmStop();goto L;}   //写2416错了8声报警返回
                 for(a=0;a<3;a++)////写入时间
                  {
                   SetTime(tm1);  
                
                   delay_us(500);
                   for(c=0;c<6;c++)time[c]=0;
		   GetTime(time);
                   if((time[0]==buf1[5])&&(time[1]==buf1[6])&&(time[2]==buf1[7])&&(time[3]==buf1[8])&&(time[4]==buf1[9]))
                   {
		    Beetmap(1);
		    goto L;
                   }
                  }
                  if(a>=3)
                  {
                  Beetmap(7);        //写入时间不对
		  goto  L;
	          }
                }
              }
           }
           Beetmap(6);
           PwmStop();
           goto L;
         }
      }

     if(a>=40){a=0;PwmStop(); goto L;}
     }
  looop:  
    switch (buf1[0])       //卡类型
   {

        case 0x01://设置卡
        {
              for(a=0;a<5;a++)////写入时间
              { 
                    SetTime(tm1);
                    for(c=0;c<6;c++)
		    time[c]=0;
		    GetTime(time);
                    if((time[0]==buf1[5])&&(time[1]==buf1[6])&&(time[2]==
                    buf1[7])&&(time[3]==buf1[8])&&(time[4]==buf1[9])&&(a<3))goto M;
		    if(a>=3)
		    {
                    Beetmap(7);
                    break;
                    }
	     }
	         M:
                 writei2c(4,buf1[2]);  //房地址
                 writei2c(5,buf1[3]);
                 writei2c(6,buf1[4]);
                 writei2c(7,buf1[1]);
                 for(a=8;a<70;a++) writei2c(a,0x00);
                 Beetmap(1);
                 break;
                 }


    case 0x02:///时间设置卡
	       {
		  for(a=0;a<3;a++)////写入时间
                   {
                   SetTime(tm1);
                   delay_us(500);
                   for(c=0; c<6; c++)  time[c]=0;
		      GetTime(time);
                   if((time[0]==buf1[5])&&(time[1]==buf1[6])&&(time[2]==buf1[7])&&(time[3]==buf1[8])&&(time[4]==buf1[9]))
                   {
		       Beetmap(1);
		       break;
                   }
                   }
                   if(a>=3)
                   {
                   Beetmap(7);
		   break;
	           }
		}
    case 0x03://///////////宾客卡//////////////////////////////////////////
	        {

                        if(Timecp(tm2)==0)                //判断退房时间
			   {
			   Beetmap(4);                         //时间过期  OK
			   break;
		           }

                        if(EndTime(0x03)==0)                      //判断挂失时间
                          {
			   Beetmap(4);
			   break;
		          }


                        if((buf1[2]==readi2c(4))&&(buf1[3]==readi2c(5))&&(buf1[4]==readi2c(6)))  //判断房号
			 {
                           if(bit_krkm==0)                //限制房间   限制客人卡开门志位
                            {
                             Beetmap(5);
                             break;
                            }
                           if(bit_fans==0)              //反锁是否开门   OK
                            {if(K2==0)    //反锁
			      {
			      Beetmap(2);
			      break;
		              }
                            }

			   LockOpen();
	                   for(m=0;m<3000;m++)
                              {
			        if(K1==0)                                 //门未关好
			         {jilu(buf1[22],buf1[23],buf1[24]);break;}
                                delay_ms(1);
                              }
			   LockClose();
                                                            //门未关好报警
                           break;

                         }
                       else {Beetmap(3);break;}   //房号不对    OK
              }


   case 0x04: //办公卡
      {       if(Timecp(tm2)==0)                //判断退房时间
		{
		   Beetmap(4);                         //时间过期
		   break;
		}

                  if(EndTime(0x04)==0)                      //判断挂失时间
                     {
		      Beetmap(4);
		      break;
		     }

                  if((buf1[2]==readi2c(4))&&(buf1[3]==readi2c(5))&&(buf1[4]==readi2c(6)))  //判断房号
                    {

                           if(bit_fans==0)              //反锁是否开门
                            {if(K2==0)    //反锁
			      {
			      Beetmap(2);
			      break;
		              }
                            }
                           if(gai==1) 
			   LockOpen();
			   else
			   { Beetmap(1); LockClose();  }
			   
	                   jilu(buf1[22],buf1[23],buf1[24]);

		    }
                   else {Beetmap(3);break;}   //房号不对
                  break;
                }

   case 0x05: //楼层卡
		{ if(EndTime(0x05)==0)                      //判断挂失时间
                     {
		      Beetmap(4);
		      break;
		     }

                  if((buf1[2]==readi2c(4))&&(buf1[3]==readi2c(5))&&(buf1[1]==readi2c(7)))  //判断层号
			 {
                          if(bit_fans==0)              //反锁是否开门
                            {if(K2==0)    //反锁
			      {
			      Beetmap(2);
			      break;
		              }
                            }

			   LockOpen();
	                   for(m=0;m<3000;m++)
                              {
			        if(K1==0)
			         {jilu(buf1[22],buf1[23],buf1[24]);break;}
                                delay_ms(1);
                              }
			   LockClose();
                                                            //门未关好报警
                           break;

                         }
                       else {Beetmap(3);break;}   //房号不对
                  break;
                }

   case 0x06: //楼号卡
		{ if(EndTime(0x06)==0)                      //判断挂失时间
                     {
		      Beetmap(4);
		      break;
		     }
                  if(buf1[2]==readi2c(4))  //判断懂号
			 {
                           if(bit_fans==0)              //反锁是否开门
                            {if(K2==0)    //反锁
			      {
			      Beetmap(2);
			      break;
		              }
                            }

			   LockOpen();
	                   for(m=0;m<3000;m++)
                              {
			        if(K1==0)
			         {jilu(buf1[22],buf1[23],buf1[24]);break;}
                                delay_ms(1);
                              }
			   LockClose();
                                                            //门未关好报警
                           break;

                         }
                   else {Beetmap(3);break;}   //房号不对
                  break;
                }

   case 0x07: //区域卡
		{ if(EndTime(0x07)==0)                      //判断挂失时间
                     {
		      Beetmap(4);
		      break;
		     }
                   if(buf1[1]==readi2c(7))  //判断区域号
			 {
                           if(bit_fans==0)              //反锁是否开门
                            {if(K2==0)    //反锁
			      {
			      Beetmap(2);
			      break;
		              }
                            }

			   LockOpen();
	                   for(m=0;m<3000;m++)
                              {
			        if(K1==0)
			         {jilu(buf1[22],buf1[23],buf1[24]);break;}
                                delay_ms(1);
                              }
			   LockClose();
                                                            //门未关好报警
                           break;

                         }
                       else {Beetmap(3);break;}   //房号不对
                  break;
                }

   case 0x08: //总控卡
		{ if(EndTime(0x08)==0)                      //判断挂失时间
                     {
		      Beetmap(4);
		      break;
		     }
                  LockOpen();
	          for(m=0;m<3000;m++)
                    {
		      if(K1==0)
		       {jilu(buf1[22],buf1[23],buf1[24]);break;}
                      delay_ms(1);
                    }
		  LockClose();

                  break;
                }

   case 0x09: //应急卡
		{
                 if(EndTime(0x09)==0)                      //判断挂失时间
                     {
		      Beetmap(4);
		      break;
		     }
                     if(gai==1) 
		     LockOpen();
		     else
	            { Beetmap(1); LockClose(); }
		     
                  //LockOpen();                       //开门
	          jilu(buf1[22],buf1[23],buf1[24]); //记录
                  break;
                }


   case 0x0a: //限制卡  退房卡
		{
                  if(EndTime(0x0a)==0)                      //判断挂失时间
                     {
		      Beetmap(4);
		      break;
		     }
                  if (bit_krkm==0){bit_krkm=1;Beetmap(1);break;}
                  else {bit_krkm=0;Beetmap(1);break;}
                }

   case 0x0b:////通讯卡
    {
          ff=0;
          Beetmap(2);
          putchar(0x99); 
          while(1)
	  {  
             m=GetData();
            
             putchar(m);
             if(m<108)
             {  
                
                 ff=0;
                 mm=0;
                 for(nn=0;nn<10;nn++)
		 {
		     aaa=nn;           //aaa=readi2c(m*10+100+nn);
		     //PutBit(aaa);
		     Write_block(aaa);
		     mm+=a;
	         }
		 // PutBit(mm); 
		 Write_block(mm);
             }
	     else {ff++;if(ff>=250)goto L;}
          }
           break;
    }


   default : Beetmap(10);break;  //卡类型不对

      }

    L:
   // Dinayuanchx();                  //低压告警
   // LED_BLUE=0;
    SystemStop();
 }

 //****************************
 //*****************************
 //*****************************
 unsigned char bianl;
 unsigned char bianl2;
 unsigned char bbbb;
//******************************
 //*****************************
 //*****************************
interrupt [7] Wod(void)//看门狗中断处理函数
{
  bianl=0;
  DDRD.3=1;
  DDRC.5=0;
  PORTC.5=1;
  for(bbbb=0;bbbb<5;bbbb++)///////发送5个脉冲信号
  {
   PORTD.3=1;
    NOP  NOP NOP  NOP NOP NOP  NOP NOP NOP  NOP NOP NOP  NOP NOP
    NOP  NOP NOP NOP  NOP NOP NOP  NOP NOP NOP  NOP NOP NOP  NOP
   PORTD.3=0;
    NOP  NOP NOP  NOP NOP NOP  NOP NOP NOP  NOP NOP NOP  NOP NOP
    NOP  NOP NOP NOP  NOP NOP NOP  NOP NOP NOP  NOP NOP NOP  NOP
  }
  while(PINC.5==0)bianl++;////////判断有没有阻宜信息
  if(bianl<bianl2-1){message=1;bianl2=bianl;}///有阻宜信息message=1
  else {bianl2=bianl;message=0;} //没阻宜message=0
}
//******************************* 
//发送一组数据到手持机   
void Write_block1(unsigned char *p)
{
 
  unsigned char m, n; 
  unsigned char bbf1;
  //   nopthe=1;
     write_bit3(0);
     
  for(n=0;n<10;n++)	
  {  bbf1=p[n];
     for(m=0;m<8;m++)
     {
      if(((bbf1>>m)%2)==1)write_bit3(1);
   	  else write_bit3(0);
     
     }   
      
  }  
  /* 
     for(m=0;m<8;m++)
     {
      if(((p>>m)%2)==1)write_bit3(1);
   	  else write_bit3(0);
     
     }   */
    // nopthe=0; 
}
//*******************************
//*******************************
 void main()
{
 unsigned int m;
 unsigned char n;
 unsigned char pp[16];
 SystemInit(); 
 
 UCSR0A=0x00;  //USART0初始化,波特率9600Hz,8个数据位,1个停止位,无奇偶校验,无中断使能
 UCSR0B=0xD8;
 UCSR0C=0x06;
 UBRR0H=0x00;   //波特率
 UBRR0L=0x33;  //

// putchar(0x88); 
 for(n=0;n<16;n++)
 {
    pp[n]=n;
 }
    

 mep=1;
 delay_ms(500);
 mep=0;
 delay_ms(90);
 mep=1;
 delay_ms(90);
 mep=0;
 

 while(1)
 {
   
   Write_block1(pp);
   delay_ms(50); 
   /*
   Write_block1(0x33);
   delay_ms(50); 
   
   Write_block1(0x03);
   delay_ms(10);
   Write_block1(0x04);
   delay_ms(10);
   
   
   Write_block1(0x05);
   delay_ms(10);
   Write_block1(0x06);
   delay_ms(10); 
   
   
   Write_block1(0x07);
   delay_ms(10);
   Write_block1(0x08);
   delay_ms(10);    
   
   
   Write_block1(0x09);
   delay_ms(10);
   Write_block1(0x0a);
   delay_ms(10);
   */
   
 /*
 if(message==1)////卡进入感应区
  {
    
    SystemInit();
  //  LED_RED=0;
    Wog_Disable();
    Working();///处理卡上信息 
    //Beetmap(1);
  }
 SystemStop();///转入睡眠
 Wog_Enable();
 sleep_enable();
 powerdown();    
 
 */
  }
}

⌨️ 快捷键说明

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