clrsignal_high

MOV a,@24

xora,code_total

jbcr3,2

jmpcollect_end

input_low:

incsignal_low

MOV a,signal_low;信号低电平宽度大于800US时滤除

suba,@40

jbsr3,0

ret

calldelay20us

jbsport6,2;3

jmpinput_low

jmpcollect1

collect_end:

MOV a,code_recorder1;校验低字节地址

xora,@code_address1

jbsr3,2

ret

MOV a,code_recorder2;校验高字节地址

xora,@code_address2

jbsr3,2

ret

jbsKEY_STATUS,check_flag;是否是第一串收码?

jmpstorage_data

bcKEY_STATUS,check_flag

MOV a,com_data_rec

xora,data_recorder

jbsr3,2

jmpstorage_data

MOV a,data_recorder

xora,@autorun_value;是启动键?

jbsr3,2

jmpkey1

bsKEY_STATUS,autorun_key;置启动键标志

bsKEY_STATUS,press_flag;置有键按下标志

clrkey_counter;清除按键间隔计数器

ret

key1:

MOV a,data_recorder

xora,@open_value;是解除键?

jbsr3,2

jmpkey2

bsKEY_STATUS,open_key

bsKEY_STATUS,press_flag

clrkey_counter

ret

key2:

MOV a,data_recorder

anda,@0x0c;同时有两个键按下时不为0X30

xora,@lock_value;是防盗键?

jbsr3,2

jmpkey3

bsKEY_STATUS,lock_key

bsKEY_STATUS,press_flag

clrkey_counter

key3:

MOV a,data_recorder

anda,@0x30

xora,@search_value;是寻车键?

jbsr3,2

ret

bsKEY_STATUS,search_key

bsKEY_STATUS,press_flag

clrkey_counter

ret

storage_data:;第一次收码存储数据字节

bsKEY_STATUS,check_flag

MOV a,data_recorder

MOV com_data_rec,a

ret

delay20us:

wdtc

MOV a,@3;9

MOV delay1,a

delay20us_1:

nop

djzdelay1

jmpdelay20us_1

ret

关于控制,MCU就介绍完了,您有什么想法可以联系小编。