[器件资料] 射频感应电子锁源程序代码

[复制链接] 查看: 2564|回复: 2

94

主题

1

好友

98

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
284215
帖子
447
精华
0
经验
98 点
金钱
64 ¥
注册时间
2011-1-19
发表于 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]=0;
        write_using_no_pass(1,cardadd);
        read_using_no_pass(1,cardadd);
        if(byte_array[0]==0)
                prompt_long(1);
        else
            goto errlp;
    }
    read_using_no_pass(1,cardadd);
    if(byte_array[0]==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[0];
            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[0]==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[0]==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[0] = key_total;
                                cardadd = KEY_NUMS;
                                write_using_no_pass(1,cardadd);
                                read_using_no_pass(1,cardadd);
                                if(byte_array[0]==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[0]==1) {
                                if(IsRomKey()) {
                                    for(i=i+1;i<=key_total;i++) {
                                        cardadd += 8;
                                        read_using_no_pass(1,cardadd);
                                        if(byte_array[0]==1) {
                                            if(clr_keymem(1,cardadd)) {
                                               prompt_short(2);
                                               break;
                                            }
                                        }
                                    }
                                break;
                                }
                            }
                        }
                    }
                }
            master_f2=0;
            }
        }

    }
errlp:
    STAT_LED = 0;

}

104

主题

3

好友

833

积分
     

职业侠客 当前离线

低价高品质DAC

Rank: 5Rank: 5

UID
319183
帖子
3938
精华
0
经验
833 点
金钱
749 ¥
注册时间
2011-4-15
发表于 2012-8-19 01:47 | 显示全部楼层
看不懂

2

主题

0

好友

312

积分

业余侠客 当前离线

Rank: 4

UID
261583
帖子
319
精华
0
经验
312 点
金钱
312 ¥
注册时间
2010-11-16
发表于 2012-8-28 10:10 | 显示全部楼层
原理图在哪里?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部