?? car.asm.lst
字號(hào):
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 ;延時(shí)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,則清鍵壓著標(biāo)志
0015 006D 00079 CLRF RELTIME
0016 02EA 00080 DECFSZ DTIME0,F
0017 0A03 00081 GOTO DELAY1 ;延時(shí)50ms,時(shí)間到返回
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 ;防誤觸發(fā)
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 ;判斷信號(hào)是否有效?
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 ;有效,則置按鍵正壓著標(biāo)志
0065 042F 00159 BCF PROCESSED ;清已處理標(biāo)志
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 ;延時(shí)25s,進(jìn)入防盜狀態(tài)
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 ;按設(shè)定鍵,進(jìn)入防盜狀態(tài)
009E 020E 00227 MOVF KEYVALUE,W
009F 0F02 00228 XORLW 0X02
00A0 0643 00229 BTFSC STATUS,Z
00A1 0AA7 00230 GOTO UNLOCK ;按解除鍵,燈閃三下回正常狀態(tài)
00A2 0A8C 00231 GOTO NORMAL1
00232
00A3 00233 LOCK
00A3 0587 00234 BSF LAMP ;設(shè)定,則上鎖,燈閃一下
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 ;按任何鍵可退出回正常狀態(tài)
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -