×
单片机 > 单片机程序设计 > 详情

PIC防盗器原理与程序

发布时间:2020-06-16 发布时间:
|

R3        EQU    0X03  
            PORT5        EQU    0X05 

            PORT6        EQU    0X06  
            R3        EQU    0X03 


            KEY_STATUS    EQU    0X10    ;低半字节为按键标志,高半字节为控制标志  
            SIGNAL_LOW    EQU    0X11    ;信号电平低计数器  
            SIGNAL_HIGH    EQU    0X12    ;信号电平高计数器  
            DATA_RECORDER    EQU    0X13    ;接收码数据字节  
            CODE_RECORDER2    EQU    0X14    ;接收码地址高字节  
            CODE_RECORDER1    EQU    0X15    ;接收码地址低字节  
            CODE_TOTAL    EQU    0X16    ;接收数据位计数器  
            KEY_COUNTER    EQU    0X17    ;两次按键检测计数器  
/**********************KEY_STATUS标志位定义***********************************/  
            AUTORUN_KEY    EQU    0    ;遥控键标志  
            LOCK_KEY    EQU    1    ;防盗键标志  
            SEARCH_KEY    EQU    2    ;寻车键标志  
            OPEN_KEY    EQU    3    ;解除键标志  
            PRESS_FLAG    EQU    4    ;有键按下标志  
            CHECK_FLAG    EQU    5    ;校验标志  
/***********************CONSTANT DEFINE*************************************/  
            CODE_ADDRESS1    EQU    0B10001100    ;遥控器地址码,更改常数即可实现其他遥控器收码  
            CODE_ADDRESS2    EQU    0B00101100          
            AUTORUN_VALUE    EQU    0B00000011    ;遥控器相应键值,改变相应数值即可更改其功能  
            LOCK_VALUE    EQU    0B00001100  
            SEARCH_VALUE    EQU    0B00110000  
            OPEN_VALUE    EQU    0B11000000  
/**********************当PORT6.2口电平为高时调用该程序收码******************/  
;PORT6.2为信号输入口 

collect_2262:  
            MOV     a,@0xf0  
            And     KEY_STATUS,a  
            clr    code_total  
            clr    signal_high  
collect1:  
            inc    signal_high  
            MOV     A,SIGNAL_HIGH  
            SUB    A,@30  
            JBS    R3,0  
            RET  
            clr    signal_low  
            call    delay20us  
            jbs    port6,2  
            jmp    collect_low  
            jmp    collect1  
collect_low:      
            MOV     a,signal_high    ;信号高电平宽度<80US时滤除  
            sub    a,@4  
            jbc    r3,0  
            ret  
            MOV     a,@20        ;信号高电平宽度在80—400US时为采集为0  
            sub    a,signal_high    ;信号高电平宽度在400US以上时为采集为1  
            rrc    data_recorder  
            rrc    code_recorder2  
            rrc    code_recorder1  
            inc    code_total  
            clr    signal_high  
            MOV     a,@24  
            xor    a,code_total  
            jbc    r3,2  
            jmp    collect_end  
input_low:  
            inc    signal_low  
            MOV     a,signal_low    ;信号低电平宽度大于800US时滤除  
            sub    a,@40  
            jbs    r3,0  
            ret  
            call    delay20us  
            jbs    port6,2;3  
            jmp    input_low      
            jmp    collect1  
collect_end:      
            MOV     a,code_recorder1    ;校验低字节地址  
            xor    a,@code_address1  
            jbs    r3,2  
            ret  
            MOV     a,code_recorder2    ;校验高字节地址  
            xor    a,@code_address2  
            jbs    r3,2  
            ret  
            jbs    KEY_STATUS,check_flag    ;是否是第一串收码?  
            jmp    storage_data  
            bc    KEY_STATUS,check_flag    
            MOV     a,com_data_rec  
            xor    a,data_recorder  
            jbs    r3,2  
            jmp    storage_data  
            MOV     a,data_recorder  
            xor    a,@autorun_value        ;是启动键?  
            jbs    r3,2  
            jmp    key1  
            bs    KEY_STATUS,autorun_key    ;置启动键标志  
            bs    KEY_STATUS,press_flag    ;置有键按下标志  
            clr    key_counter        ;清除按键间隔计数器  
            ret              
key1:  
            MOV     a,data_recorder  
            xor    a,@open_value        ;是解除键?  
            jbs    r3,2  
            jmp    key2  
            bs    KEY_STATUS,open_key      
            bs    KEY_STATUS,press_flag  
            clr    key_counter      
            ret  
key2:  
            MOV     a,data_recorder  
            and    a,@0x0c            ;同时有两个键按下时不为0X30  
            xor    a,@lock_value        ;是防盗键?  
            jbs    r3,2              
            jmp    key3  
            bs    KEY_STATUS,lock_key  
            bs    KEY_STATUS,press_flag  
            clr    key_counter  
key3:  
            MOV     a,data_recorder  
            and    a,@0x30  
            xor    a,@search_value    ;是寻车键?  
            jbs    r3,2  
            ret      
            bs    KEY_STATUS,search_key      
            bs    KEY_STATUS,press_flag  
            clr    key_counter              
            ret  
storage_data:                        ;第一次收码存储数据字节  
            bs    KEY_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  
            djz    delay1  
            jmp    delay20us_1  
            ret 


关键字:PIC  防盗器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/article_2017120636615.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于arm的指纹识别门禁系统是如何设计的