janesser 发表于 2012-8-19 00:48

射频感应电子锁源程序代码

射频感应电子锁源程序代码

void main(void)
{
               
st:
    sysflg = 0;
    Tim0 = 0;
    Tim1 = 0;
    STAT_LED = 1;
    RELAY_LOCK = 1;
    BUZZER = 1;
    SUB_CLEAR = 1;
    TMOD = 0x11;
    TH0 = 0xfc;
    TL0 = 0x18;
    TH1 = 0x8b;
    TL1 = 0xe7;
    TCON = 0x50;
    IP = 0x8;
    IE = 0x88;
    P1_0 = 1;
    P1_1 = 1;
    if(!BAT_LOW)
      LOW_BAT_LED = 0;
    cardadd=MASTER_START;
    if(!MASTER_CLEAR) {
      while(!master_clear);
      master_clear = 0;
      byte_array=0;
      write_using_no_pass(1,cardadd);
      read_using_no_pass(1,cardadd);
      if(byte_array==0)
                prompt_long(1);
      else
            goto errlp;
    }
    read_using_no_pass(1,cardadd);
    if(byte_array==1)
      master_exist=1;
    else
      master_exist=0;
    if(!master_exist) {
      for(i=0;i<5;i++) {
            flash_double();
            prompt_short(1);
      }
    }
    for(;;) {
      if(Tim0 == TIMEOUT_YES) {
            IE = 0;
            for(;;)
                PCON = 0x02;
      }
      if(ReadRomId()) {
            if(!master_exist) {
                Tim0 = 0;
                prompt_short(1);
                cardadd = MASTER_START;
                set_write_buffer();
                write_using_no_pass(8,cardadd);
                read_using_no_pass(8,cardadd);
                if(IsRomKey()) {
                  EA = 1;
                  while(APPEND);
                  prompt_long(2);
                  master_exist=1;
                  continue;
                }
                else
                  goto errlp;
            }
            cardadd = KEY_NUMS;
            read_using_no_pass(1,cardadd);
            key_total=byte_array;
            cardadd = MASTER_START;
            read_using_no_pass(8,cardadd);
            if(IsRomKey()) {
                if(!master_f1) {
                  master_f1 = 1;
                  prompt_short(1);
                  Delay_ms(800);
                  continue;
                }
                else {
                  master_f2 = 1;
                  goto add_del;
                }
            }
            else {
                if(master_f1)
                  goto add_del;
                for(i=0; i<key_total; i++) {
                  cardadd = (i<<3) + KMEM_START;
                  read_using_no_pass(8,cardadd);
                  if(byte_array==1) {
                        if(IsRomKey()) {
                            RELAY_LOCK = 0;
                            flash_led();
                            RELAY_LOCK = 1;
                            Tim0 = 0;
                            break;
                        }
                  }
                }
            }
add_del:
            if(master_f1) {
                master_f1 = 0;
                prompt_short(1);
                append_allow = 0;
                clear_all = 0;
                clear_allow = 0;
                Tim0 = 0;
                EA = 1;
                while(!append_allow&&!clear_all&&!clear_allow);
                EA = 0;
                av_place = 0;
                if(append_allow) {
                  append_allow = 0;
                  for(i=0; i<=key_total; i++) {
                        cardadd = (i<<3)+ MASTER_START;
                        read_using_no_pass(8,cardadd);
                        if(byte_array==1) {
                            if(IsRomKey())
                              break;
                        }
                        else {
                            if(av_place==0)
                              av_place = cardadd;
                        }
                  }
                  if(i<=key_total) {
                        prompt_short(1);
                        continue;
                  }
                  if(key_total < MAX_KEY) {
                        if(av_place==0)
                            cardadd = (i<<3)+ MASTER_START;
                        else
                            cardadd = av_place;
                        set_write_buffer();
                        write_using_no_pass(8,cardadd);
                        read_using_no_pass(8,cardadd);
                        if(IsRomKey()) {
                            if(av_place==0) {
                              key_total++;
                              byte_array = key_total;
                              cardadd = KEY_NUMS;
                              write_using_no_pass(1,cardadd);
                              read_using_no_pass(1,cardadd);
                              if(byte_array==key_total)
                                    prompt_short(3);
                              continue;
                            }
                            prompt_short(3);
                        }
                  }
                }
                else {
                  if(clear_all&&master_f2) {
                        clear_all = 0;
                        cardadd = KMEM_START;
                        if(clr_keymem(MAX_KEY,cardadd)!=OK)
                            goto errlp;
                        cardadd = KEY_NUMS;
                        if(clr_keymem(1,cardadd)!=OK)
                            goto errlp;
                        prompt_short(2);
                        prompt_long(1);

                  }
                  if(clear_allow) {
                        clear_allow = 0;
                        for(i=0; i<=key_total;i++) {
                            cardadd = (i<<3)+ MASTER_START;
                            read_using_no_pass(8,cardadd);
                            if(byte_array==1) {
                              if(IsRomKey()) {
                                    for(i=i+1;i<=key_total;i++) {
                                        cardadd += 8;
                                        read_using_no_pass(1,cardadd);
                                        if(byte_array==1) {
                                          if(clr_keymem(1,cardadd)) {
                                             prompt_short(2);
                                             break;
                                          }
                                        }
                                    }
                              break;
                              }
                            }
                        }
                  }
                }
            master_f2=0;
            }
      }

    }
errlp:
    STAT_LED = 0;

}

chzhssr 发表于 2012-8-19 01:47

看不懂

chenxiaoru 发表于 2012-8-28 10:10

原理图在哪里?
页: [1]
查看完整版本: 射频感应电子锁源程序代码