- 积分
- 98
- 在线时间
- 1241 小时
- 最后登录
- 2023-6-3
- 阅读权限
- 50
- 精华
- 0
 
- UID
- 284215
- 帖子
- 447
- 精华
- 0
- 经验
- 98 点
- 金钱
- 64 ¥
- 注册时间
- 2011-1-19
|
射频感应电子锁源程序代码
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;
} |
|