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

📄 yibiao.c.bak

📁 这是我在我们公司做的C51加油单片机程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
                temp>>=4;
                xs_shu(6,54+4,yi_1+(temp&0x0f)*8);
        }
        /*时*/
        if ((hour1!=hour)||(one==1)||(gn==1))
        {
                temp=hour;
                xs_shu(6,78+4,clr);
                xs_shu(6,72+4,clr);
                xs_shu(6,78+4,yi_1+(temp&0x0f)*8);
                temp>>=4;
                xs_shu(6,72+4,yi_1+(temp&0x0f)*8);
        }
        /*:*/
        if ((one==1)||(gn==1))
        xs_shu(6,85+4,yi_1+10*8);
        /*分*/
        if ((minutes1!=minutes)||(one==1)||(gn==1))
        {
                temp=minutes;
                xs_shu(6,96+4,clr);
                xs_shu(6,90+4,clr);
                xs_shu(6,96+4,yi_1+(temp&0x0f)*8);
                temp>>=4;
                xs_shu(6,90+4,yi_1+(temp&0x0f)*8);
        }
        /*:*/
         if ((one==1)||(gn==1))
         xs_shu(6,103+4,yi_1+10*8);
         /*秒*/
        if ((second1!=second)||(one==1)||(gn==1))
        {
                temp=second;
                xs_shu(6,114+4,clr);
                xs_shu(6,108+4,clr);
                xs_shu(6,114+4,yi_1+(temp&0x0f)*8);
                temp>>=4;
                xs_shu(6,108+4,yi_1+(temp&0x0f)*8);
        }
        second1=second;
        minutes1=minutes;
        hour1=hour;
        day1=day;
        month1=month;
        year1=year;
        one=0;
        gn=0;


        if (guanbiao>40)
        {
                guanbiao=0;
                if (gb==1)
                {
                   gb=0;
                   if (NET==0)
                      xs_shu(6,2,yi_1+12*8);
                }
                else
                {
                    gb=1;
                    if (NET==0)
                       xs_shu(6,2,clr);
                }
                if(SR==1)
                xs_gb(Y_hang,X_lie);

                if (jy_xin==0x40)
                {
                        if(jxin<7)
                              jxin++;
                        else
                              jxin=0;
                        jyxsx();
                 }
        }
        if (NET==1)
            xs_shu(6,2,yi_1+12*8);
}
unsigned char  password(bit aa)/*aa=0 员工密码  aa=1 用户密码*/
{
       // unsigned charkeybuf_p=0;
        huakuang(3,6,2);
        keybuf_p=0;
        SR=1;
        Y_hang=3;
        X_lie=34;
        while(1)
        {
                key=getkey();
                if ((key>=0)&&(key<=9)&&(keybuf_p<4))
                {
                        keybuf[keybuf_p]=key;
                        xs_shu(3,2*16+keybuf_p*8+1,xin);
                        keybuf_p++;
                        Y_hang=3;
                        X_lie=34+keybuf_p*8;
                 }
                 if(key=='l')
                 {
                        if(keybuf_p>0)
                        {
                                xs_shu(3,2*16+(keybuf_p-1)*8+1,clr);
                                keybuf_p--;
                                gb=0;
                                xs_gb(Y_hang,X_lie);
                                X_lie=34+keybuf_p*8;
                        }
                        else
                         {
                                gb=0;
                                xs_gb(Y_hang,X_lie);
                                SR=0;
                                return 2;
                         }
                 }
                 if (key=='k')
                 {
                        astobcd(4);
                        SR=0;
                        if (aa==0)
                           if (strcomp(keybuf,ygmm,2))
                              return 0x01;/*密码正确返回*/
                           else
                               return 0x00;/*密码错误返回*/
                        else
                           if (strcomp(keybuf,yhmm,2))
                               return 0x01;/*密码正确返回*/
                           else
                               return 0x00;/*密码错误返回*/

                 }
                 if (key=='t')
                 {
                        SR=0;
                        return 2;/*退卡返回*/
                 }
                xs_time();
        }
        SR=0;
}
unsigned char pass_card()
{
        huakuang(3,6,2);
        keybuf_p=0;
        Y_hang=3;
        X_lie=34;
        SR=1;
        while(1)
        {
                key=getkey();
                if ((key>=0)&&(key<=9)&&(keybuf_p<12))
                {
                        keybuf[keybuf_p]=key;
                        xs_shu(3,2*16+keybuf_p*8+1,xin);
                        keybuf_p++;
                        Y_hang=3;
                        X_lie=34+keybuf_p*8;
                 }
                 if(key=='l')
                 {
                        if(keybuf_p>0)
                        {
                                xs_shu(3,2*16+(keybuf_p-1)*8+1,clr);
                                keybuf_p--;
                                gb=0;
                                xs_gb(Y_hang,X_lie);
                                X_lie=34+keybuf_p*8;
                         }
                         else
                         {
                                gb=0;
                                xs_gb(Y_hang,X_lie);
                                X_lie=34+keybuf_p*8;
                                SR=0;
                                return;
                         }
                 }
                 if (key=='k')
                 {
                        SR=0;
                        astobcd(keybuf_p);
                        pin_dat[0]=keybuf_p;
                        pin_dat[1]=keybuf[0];
                        pin_dat[2]=keybuf[1];
                        pin_dat[3]=keybuf[2];
                        pin_dat[4]=keybuf[3];
                        pin_dat[5]=keybuf[4];
                        return 0x0;
                 }
                 if (key=='t')
                 {
                    SR=0;
                    return 0x02;/*退卡返回*/
                 }
                 xs_time();
        }

}
unsigned char sendcard()
{
  unsigned char idata card_err_state;        //卡片错误状态
  unsigned char idata wait_counter;          //卡片连续等待计数器
  unsigned char idata rec_data;              //接收一字节缓冲

   ES=0;
   sendcard_st:                              //重发地址
   send(0,5);                                //发送5字节命令头
   wait_counter=3;                           // 可以连续接收3次
   do_byte_state:                            //状态字节处理地址
      card_err_state=0;
   rekk[0]=0xff;
   card_err_state =recv(0,1);                //接收一字节

     if (card_err_state == 0)                //接收正确?
         {
            //  de100u();                      //接收正确
              rec_data=rekk[0];           //取一字节
              switch (rec_data)
               {
                  case 0x60:                 //卡片要求延长等待
                     if (wait_counter--==0)  //连续三次?
                       {
                          card_err_state=0x80;    //连续三次
                          break;                  //退出
                       }
                      else goto   do_byte_state;


                  case 0x6c:                      //卡片要求安后续一字节为Le,重发命令头
                       card_err_state =recv(0,1); //接收后续字节
                       send_buf[4]=rekk[0];     //重置Le
                       de100u();
                       goto sendcard_st;          //重发

                  case 0x61:
                        card_err_state =recv(0,1);  //卡片要求取XX字节
                       if (card_err_state == 0)
                         {
                         card_err_state =getcard_data(); //按卡片要求取XX 字节
                         }
                       break;                  //退出

                       default :       //前者都不是  继续
                        rec_data=rekk[0];
                        if (((rec_data&0xf0)==0x60)||((rec_data&0xf0)==0x90)) card_err_state =recv(1,1);  //卡片返回6X 9X 取一字节状态码 退出

                         else if  (rekk[0]==send_buf[1])  card_err_state =recv(0,(send_buf[4]+2));  //卡片要求接收全部剩余字节
                         else if  ((~(rekk[0])+1)==send_buf[1])        //卡片要求接收一字节后等待下一个状态字
                              {
                                  card_err_state =recv(0,1);          //接收一字节
                                  if (card_err_state==0)              //接收正确?
                                        {                             //接收正确
                                        if (wait_counter--==0) card_err_state=0x81;   //连续三次 退出
                                        else   goto      do_byte_state;               //不足三次  等待下一个状态字
                                        }
                               }
                        break;                  //退出 switch

               }


          }
          comm_status=0;
          ES=1;
       return(card_err_state);   //返回错误状态
}

unsigned char sendcard1()
{
  unsigned char idata card_err_state;        //卡片错误状态
  unsigned char idata wait_counter;          //卡片连续等待计数器
  unsigned char idata rec_data;              //接收一字节缓冲
  unsigned char idata data_le;              //数据的长度
  unsigned char idata data_adr;              //数据的地址
   ES=0;
   data_le=send_buf[4];
   data_adr=5;
   send(0,5);                                //发送5字节命令头
   wait_counter=3;                           // 可以连续接收3次
   do_byte_state:                            //状态字节处理地址
      card_err_state=0;
   rekk[0]=0xff;
   card_err_state =recv(0,1);                //接收一字节

     if (card_err_state == 0)                //接收正确?
         {
              de100u();                      //接收正确
              rec_data=rekk[0];           //取一字节

                  if (rec_data==0x60)                 //卡片要求延长等待
                     {
                       if (wait_counter--==0)  //连续三次?
                       {
                          card_err_state=0x82;    //连续三次

                       }
                       else goto   do_byte_state;
                     }
                  else if (rec_data==0x90)
                     {
                      card_err_state=recv(1,1);
                      goto  send_card1_end ;
                     }
                  else if (rec_data==send_buf[1])
                     {
                        send(data_adr,data_le);
                     }
                  else if (((~rec_data)+1)==send_buf[1])
                     {
                     send(data_adr,data_le);
                     data_adr=data_adr+1;
                     data_le=data_le-1;
                     if  (data_le!=0) goto  do_byte_state;
                     }
                  else
                     {
                     card_err_state=0x83;
                     goto  send_card1_end;
                     }
          }
       wait_counter=3;
       de100u();
       do_byte_state1:
       if ((card_err_state=recv(0,1))==0)
          {
                rec_data=rekk[0];
                  if (rec_data==0x60)                 //卡片要求延长等待
                     {
                       if (wait_counter--==0)  //连续三次?
                         {
                          card_err_state=0x84;    //连续三次

                         }
                       else goto   do_byte_state1;
                     }
                 else if (rec_data==0x61)
                     {
                         if ((card_err_state=recv(0,1)) == 0)
                         {
                         card_err_state =getcard_data(); //按卡片要求取XX 字节
                         }
                     }
                 else if (((rec_data&0xf0)==0x60)||((rec_data&0xf0)==0x90))   card_err_state =recv(1,1);
                 else    card_err_state=0x85;
          }

         send_card1_end:
        comm_status=0;
        ES=1;
        return(card_err_state);   //返回错误状态
}

unsigned char sendcard2()
{
  unsigned char idata card_err_state;        //卡片错误状态
  unsigned char idata wait_counter;          //卡片连续等待计数器
  unsigned char idata rec_data;              //接收一字节缓冲
  unsigned char idata data_le;              //数据的长度
  unsigned char idata data_adr;              //数据的地址
   ES=0;
   data_le=send_buf[4];
   data_adr=5;
   send(0,5);                                //发送5字节命令头
   wait_counter=3;                           // 可以连续接收3次
   do_byte_state:                            //状态字节处理地址
      card_err_state=0;
   rekk[0]=0xff;
   card_err_state =recv(0,1);                //接收一字节

     if (card_err_state == 0)                //接收正确?
         {
              de100u();                      //接收正确
              rec_data=rekk[0];           //取一字节

                  if (rec_data==0x60)                 //卡片要求延长等待
                     {
                       if (wait_counter--==0)  //连续三次?
                       {
                          card_err_state=0x86;    //连续三次

                       }
                       else goto   do_byte_state;
                     }
                  else if (rec_data==0x90)
                     {
                      card_err_state=recv(1,1);
                      goto  send_card1_end ;
                     }
                  else if (rec_data==send_buf[1])
                     {
                        send(data_adr,data_le);
                     }
                  else if (((~rec_data)+1)==send_buf[1])
                     {
                     send(data_adr,data_le);
                     data_adr=data_adr+1;
                     data_le=data_le-1;
                     if  (data_le!=0) goto  do_byte_state;
                     }
                  else
                     {
                     card_err_state=0x87;
                     goto  send_card1_end;
                     }
          }
       wait_counter=3;
       de100u();
       do_byte_state1:
       if ((card_err_state=recv(0,1))==0)
          {
                rec_data=rekk[0];
                  if (rec_data==0x60)                 //卡片要求延长等待
                     {
                       if (wait_counter--==0)  //连续三次?
             

⌨️ 快捷键说明

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