⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 car.asm.lst

📁 这是本人以前编的机遇PIC的汽车防盗程序
💻 LST
📖 第 1 页 / 共 3 页
字号:

 LIST f=INHX8M,p=16C57,r=DEC
 ;************************************
 PORTA           EQU     5
 PORTB           EQU     6
 PORTC           EQU     7
 STATUS          EQU     3
 FSR             EQU     4
 INDF            EQU     0
 C               EQU     0
 Z               EQU     2
 W               EQU     0
 F               EQU     1
 PA0             EQU     5
 DELAYNUM0       EQU     0X08
 DELAYNUM1       EQU     0X09
 DTIME0          EQU     0X0A
 DTIME1          EQU     0X0B
 DTIME           EQU     0X0C
 RELTIME         EQU     0X0D
 KEYVALUE        EQU     0X0E
 KEYSTATUS       EQU     0X0F
 CARSTATUS       EQU     0X10
 COMMAND         EQU     0X11
 INPUT0          EQU     0X12
 INPUT1          EQU     0X13
 INPUT2          EQU     0X14
 INPUT3          EQU     0X15
 INBITNUM        EQU     0X16
 IOTRIS          EQU     0X17
 DTIME2          EQU     0X18
 PASSWORD        EQU     0X19
                    00033 #DEFINE INBIT   PORTA,2
                    00034 #DEFINE HAND    PORTB,5
                    00035 #DEFINE FOOT    PORTB,3
                    00036 #DEFINE KEYON   PORTB,2
                    00037 #DEFINE FIRE    PORTB,4
                    00038 #DEFINE UR_ALERT        PORTB,1
                    00039 #DEFINE DOORTRI PORTB,0
                    00040 #DEFINE VIBRE   PORTA,3
                    00041 #DEFINE CLK     PORTB,6
                    00042 #DEFINE DATA    PORTB,7
                    00043 #DEFINE CEN1    PORTC,7
                    00044 #DEFINE CEN2    PORTC,6
                    00045 #DEFINE SOUND   PORTC,5
                    00046 #DEFINE LAMP    PORTC,4
                    00047 #DEFINE KEYACC  PORTC,3
                    00048 #DEFINE ON      PORTC,2
                    00049 #DEFINE START   PORTC,1
                    00050 #DEFINE MOTOR   PORTC,0
                    00051 #DEFINE PUSHING KEYSTATUS,0
                    00052 #DEFINE PROCESSED KEYSTATUS,1
                    00053 ;****************************************
                    00054 
07FF                00055         ORG 0X7FF

07FF 0A79           00056         GOTO MAIN
0000                00057         ORG 0
0000 046F           00058         BCF KEYSTATUS,3
0001 0C32           00059 DELAY   MOVLW 50
0002 002A           00060         MOVWF DTIME0
0003 0C64           00061 DELAY1  MOVLW 100
0004 002B           00062         MOVWF DTIME1
0005 0000           00063 DELAY2  NOP
0006 076F           00064         BTFSS KEYSTATUS,3
0007 0A19           00065         GOTO DELAY3
0008 0000           00066         NOP
0009 0000           00067         NOP
000A 0000           00068         NOP
000B 0000           00069         NOP
000C 0000           00070         NOP
000D 02EB           00071 DELAY4  DECFSZ DTIME1,F          ;延时1ms
000E 0A05           00072         GOTO DELAY2
000F 02AD           00073 DELAY6  INCF RELTIME,F           ;键释放间隔+1
0010 0C50           00074         MOVLW 80
0011 008D           00075         SUBWF RELTIME,W
0012 0703           00076         BTFSS STATUS,C
0013 0A16           00077         GOTO $+3
0014 040F           00078         BCF PUSHING              ;键释放间隔超过80,则清键压着标志
0015 006D           00079         CLRF RELTIME
0016 02EA           00080         DECFSZ DTIME0,F
0017 0A03           00081         GOTO DELAY1              ;延时50ms,时间到返回
0018 0800           00082         RETLW 0
0019 0745           00083 DELAY3  BTFSS INBIT
001A 0A0D           00084         GOTO DELAY4
001B 0C0F           00085         MOVLW 15
001C 002C           00086         MOVWF DTIME
001D 02EC           00087         DECFSZ DTIME,F
001E 0A1D           00088         GOTO $-1                 ;防误触发
001F 0745           00089         BTFSS INBIT
0020 0A0D           00090         GOTO DELAY4
0021 0645           00091         BTFSC INBIT
0022 0A21           00092         GOTO $-1                 ;有键按,等待输入为0
0023 070F           00093         BTFSS PUSHING
0024 0A32           00094         GOTO DELAY5
0025 0CFE           00095         MOVLW 254                ;若键正按着,判断键是否还按着?
0026 002C           00096         MOVWF DTIME
0027 02EC           00097         DECFSZ DTIME,F
0028 0A27           00098         GOTO $-1
0029 0745           00099         BTFSS INBIT
002A 0A0F           00100         GOTO DELAY6
002B 0C21           00101         MOVLW 33
002C 002C           00102         MOVWF DTIME
002D 02EC           00103         DECFSZ DTIME,F
002E 0A2D           00104         GOTO $-1
002F 0645           00105         BTFSC INBIT
0030 006D           00106         CLRF RELTIME
0031 0A0F           00107         GOTO DELAY6
0032 0C1C           00108 DELAY5  MOVLW 28                 ;若是第一次按,则接受28BIT键值
0033 0036           00109         MOVWF INBITNUM
0034 0C8F           00110 DELAY8  MOVLW 143
0035 002C           00111         MOVWF DTIME
0036 02EC           00112         DECFSZ DTIME,F
0037 0A36           00113         GOTO $-1
0038 0403           00114         BCF STATUS,C
0039 0745           00115         BTFSS INBIT
003A 0503           00116         BSF STATUS,C
003B 0C6E           00117         MOVLW 110
003C 002C           00118         MOVWF DTIME
003D 02EC           00119         DECFSZ DTIME,F
003E 0A3D           00120         GOTO $-1
003F 0645           00121         BTFSC INBIT
0040 0A49           00122         GOTO DELAY7
0041 0C50           00123         MOVLW 80
0042 002C           00124         MOVWF DTIME
0043 02EC           00125         DECFSZ DTIME,F
0044 0A43           00126         GOTO $-1
0045 00EA           00127         DECF DTIME0,F
0046 0643           00128         BTFSC STATUS,Z
0047 0800           00129         RETLW 0
0048 0A0D           00130         GOTO DELAY4
0049 0375           00131 DELAY7  RLF INPUT3,F
004A 0374           00132         RLF INPUT2,F
004B 0373           00133         RLF INPUT1,F
004C 0372           00134         RLF INPUT0,F
004D 0645           00135         BTFSC INBIT
004E 0A4D           00136         GOTO $-1
004F 02F6           00137         DECFSZ INBITNUM,F
0050 0A34           00138         GOTO DELAY8
0051 0C0F           00139         MOVLW 0X0F
0052 0172           00140         ANDWF INPUT0,F
0053 0395           00141         SWAPF INPUT3,W
0054 0E0F           00142         ANDLW 0X0F
0055 002E           00143         MOVWF KEYVALUE
0056 0395           00144         SWAPF INPUT3,W
0057 0EF0           00145         ANDLW 0XF0
0058 0132           00146         IORWF INPUT0,F
0059 0214           00147         MOVF INPUT2,W
005A 0743           00148         BTFSS STATUS,Z
005B 0800           00149         RETLW 0
005C 0213           00150         MOVF INPUT1,W          ;判断信号是否有效?
005D 0FFB           00151         XORLW 0XFB
005E 0743           00152         BTFSS STATUS,Z
005F 0800           00153         RETLW 0
0060 0212           00154         MOVF INPUT0,W
0061 0F54           00155         XORLW 0X54
0062 0743           00156         BTFSS STATUS,Z
0063 0800           00157         RETLW 0
0064 050F           00158         BSF PUSHING            ;有效,则置按键正压着标志
0065 042F           00159         BCF PROCESSED          ;清已处理标志
0066 0800           00160         RETLW 0
                    00161 
0067                00162 DELAY55
0067 0C21           00163         MOVLW 33
0068 002C           00164         MOVWF DTIME
0069 02EC           00165         DECFSZ DTIME,F
006A 0A69           00166         GOTO $-1
006B 0800           00167         RETLW 0
                    00168 
006C                00169 NOLOCK
006C 04E7           00170         BCF CEN1
006D 05C7           00171         BSF CEN2               ;开锁
006E 0C08           00172 LOCK1   MOVLW 8
006F 0028           00173         MOVWF DELAYNUM0
0070 0901           00174         CALL DELAY
0071 02E8           00175         DECFSZ DELAYNUM0,F
0072 0A70           00176         GOTO $-2
0073 04C7           00177         BCF CEN2
0074 04E7           00178         BCF CEN1
0075 0800           00179         RETLW 0
                    00180 
0076                00181 UPLOCK
0076 05E7           00182         BSF CEN1               ;上锁
0077 04C7           00183         BCF CEN2
0078 0A6E           00184         GOTO LOCK1
                    00185 
                    00186 
0079                00187 MAIN
0079 0C0D           00188         MOVLW 0X0D
007A 0025           00189         MOVWF PORTA
007B 0C0E           00190         MOVLW 0X0E
007C 0005           00191         TRIS PORTA
007D 0C3F           00192         MOVLW B'00111111'
007E 0026           00193         MOVWF PORTB
007F 0CFF           00194         MOVLW 0XFF
0080 0006           00195         TRIS PORTB
0081 0067           00196         CLRF PORTC
0082 0040           00197         CLRW
0083 0007           00198         TRIS PORTC
0084 0070           00199         CLRF CARSTATUS
0085 006F           00200         CLRF KEYSTATUS
0086 006D           00201         CLRF RELTIME
0087 052F           00202         BSF PROCESSED          ;初始化
0088 0AA7           00203         GOTO UNLOCK
                    00204 
0089                00205 NORMAL
0089 0070           00206         CLRF CARSTATUS
008A 0CFF           00207         MOVLW 0XFF
008B 0028           00208         MOVWF DELAYNUM0        ;延时25s,进入防盗状态
008C 0726           00209 NORMAL1 BTFSS UR_ALERT
008D 0BA9           00210         GOTO URGENCY
008E 0901           00211         CALL DELAY
008F 0646           00212         BTFSC KEYON
0090 0A97           00213         GOTO TEMP0
0091 0901           00214         CALL DELAY
0092 072F           00215         BTFSS PROCESSED        ;是否有键按?
0093 0A99           00216         GOTO NORMAL2
0094 02E8           00217         DECFSZ DELAYNUM0,F
0095 0A8C           00218         GOTO NORMAL1
0096 0AA3           00219         GOTO LOCK
0097 05A3           00220 TEMP0   BSF STATUS,PA0
0098 0A68           00221         GOTO DRIVE
0099 052F           00222 NORMAL2 BSF PROCESSED
009A 020E           00223         MOVF KEYVALUE,W
009B 0F01           00224         XORLW 0X01
009C 0643           00225         BTFSC STATUS,Z
009D 0AA3           00226         GOTO LOCK              ;按设定键,进入防盗状态
009E 020E           00227         MOVF KEYVALUE,W
009F 0F02           00228         XORLW 0X02
00A0 0643           00229         BTFSC STATUS,Z
00A1 0AA7           00230         GOTO UNLOCK            ;按解除键,灯闪三下回正常状态
00A2 0A8C           00231         GOTO NORMAL1
                    00232 
00A3                00233 LOCK
00A3 0587           00234         BSF LAMP               ;设定,则上锁,灯闪一下
00A4 0976           00235         CALL UPLOCK
00A5 0487           00236         BCF LAMP
00A6 0AC3           00237         GOTO ALERTING
00A7                00238 UNLOCK
00A7 0587           00239         BSF LAMP
00A8 096C           00240         CALL NOLOCK            ;解除,则开锁,灯闪三下
00A9 0487           00241         BCF LAMP
00AA 0C08           00242         MOVLW 8
00AB 0028           00243         MOVWF DELAYNUM0
00AC 0901           00244         CALL DELAY
00AD 02E8           00245         DECFSZ DELAYNUM0,F
00AE 0AAC           00246         GOTO $-2
00AF 0C02           00247         MOVLW 2
00B0 0029           00248         MOVWF DELAYNUM1
00B1 0587           00249 UNLOCK2 BSF LAMP
00B2 0C10           00250         MOVLW 16
00B3 0028           00251         MOVWF DELAYNUM0
00B4 0208           00252 UNLOCK1 MOVF DELAYNUM0,W
00B5 0F08           00253         XORLW 8
00B6 0743           00254         BTFSS STATUS,Z
00B7 0AB9           00255         GOTO UNLOCK3
00B8 0487           00256         BCF LAMP
00B9 0901           00257 UNLOCK3 CALL DELAY
00BA 072F           00258         BTFSS PROCESSED
00BB 0AC0           00259         GOTO UNLOCK4
00BC 02E8           00260         DECFSZ DELAYNUM0,F
00BD 0AB4           00261         GOTO UNLOCK1
00BE 02E9           00262         DECFSZ DELAYNUM1,F
00BF 0AB1           00263         GOTO UNLOCK2
00C0 052F           00264 UNLOCK4 BSF PROCESSED          ;按任何键可退出回正常状态
00C1 0067           00265         CLRF PORTC
00C2 0A89           00266         GOTO NORMAL
                    00267 
00C3                00268 ALERTING
00C3 0C01           00269         MOVLW 1
00C4 0030           00270         MOVWF CARSTATUS
00C5 0726           00271         BTFSS UR_ALERT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -