?? rem.lst
字號:
186 0059 KEY_ROW_0:
187 0059 0426 XOR A,RAMA ; Check HANG HANG HANG Multi-Key FOR EX PB=1010 1111 2KEY
188 005A 3D0A SZ STA_Z ; PBVALUE=RAMA ?
189 005B 2800 R JMP COL_WITH_KEY ; = IS 1KEY
190 005C COL_ERROR_KEY:
191 005C 30B4 SET MultiBIT ; = IS 2-8 KEY
192 005D
193 005D COL_WITHOUT_KEY:
194 005D 2800 R NOP2
195 005E 2800 R NOP2
196 005F 2800 R NOP2 ; TIMES DELAY
197 0060 2800 R JMP READY_2_NEXT_COLUMN
198 0061 COL_WITH_KEY:
199 0061 182A RLA SCANSTEP ; \ KEYNUM CAL K1-K64 TO A
200 0062 1885 RL ACC ; > SCANSTEP * 8 --> ACC
201 0063 1885 RL ACC ; /
202 0064 0327 ADD A,RAMB
203 0065 00AC MOV NOWKEY,A ; KEY NUM CAL OVER K1-K64
204 0066 3CB2 SZ ReckeyBIT ; CHECK LIE LIE LIE Multi-Key REC KEY BIT=0 ? FOR EX K1\K9 KNOB
205 0067 30B4 SET MultiBIT ; <>0 DUO TIMES
206 0068 30B2 SET ReckeyBIT ; =0 ONE TIME REV NO KEY
207 0069 READY_2_NEXT_COLUMN:
208 0069 14AA INC SCANSTEP ; THIS LUN=8LIE PA RL8
209 006A 072A MOV A,SCANSTEP
210 006B 0C08 XOR A,008D
211 006C 390A SNZ STA_Z
212 006D 2800 R JMP NEXT_COLUMN ; A=1-7
213 006E 0001 CLR WDT ; A=8 THIS LUN OVER
214 006F ; === Scan Key Complete, Check key valid ? ===
215 006F CHECK_KEY_ACTIVE:
216 006F 0001 CLR WDT
217 0070 10AC SZ NOWKEY ; If NOWKEY = 00H, invalid key
218 0071 2800 R JMP VALID_KEY_CHK ; <>0 YES KEY
219 0072 2800 R JMP INVALID_KEY_CHK ; =0 NO KEY
220 0073 VALID_KEY_CHK:
221 0073 10AB SZ PREKEY ; Check New Key ?
222 0074 2800 R JMP VALID_KEYC_PRO ; OLD KEY
223 0075 2800 R JMP KEY_DEB ; NEW KEY PREKEY=0 CONFIRM 6 TIMES TO PREKEY=0FFH
224 0076 VALID_KEYC_PRO:
225 0076 072C MOV A,NOWKEY ; OLD KEY
226 0077 042B XOR A,PREKEY ; Check Repeat key
227 0078 390A SNZ STA_Z
228 0079 2800 R JMP VALID_SEND_KEY ; OLD KEY <> NEWKEY
229 007A VALID_RPSEND_KEY: ; OLD KEY = NEWKEY <> 0
230 007A 38B4 SNZ MultiBIT ; Check Multi-Key Clear NOWKEY
231 007B 2800 R JMP REPEAT_KEY ; (Multibit=0) & (OLD KEY = NEWKEY <> 0) REPEAT KEY
232 007C 1F2C CLR NOWKEY ; (Multibit=1) & (OLD KEY = NEWKEY <> 0) DOU KEYS
233 007D 0003 RET
234 007E
235 007E REPEAT_KEY:
236 007E 30B3 SET RepeatBIT ; SET Repeat Flag
237 007F 2800 R NOP2
238 0080 2800 R JMP SET_VALIDFG
239 0081 VALID_SEND_KEY: ; OLD KEY <> NEWKEY <> 0
File: REM.ASM Holtek Cross-Assembler Version 2.86 Page 5
240 0081 072B MOV A,PREKEY
241 0082 0CFF XOR A,0FFH ; Check Debounce END
242 0083 390A SNZ STA_Z
243 0084 2800 R JMP CHANG_KEY
244 0085 34B3 CLR RepeatBIT ; PREKEY=OFFH IS 6 TIMES CONFIRM NEWKEY
245 0086 072C MOV A,NOWKEY
246 0087 00AB MOV PREKEY,A ; PREKEY = NOWKEY NEW KEYCODE SEND
247 0088 SET_VALIDFG:
248 0088 30B1 SET SENDBIT ; SEND FLAG
249 0089 0003 RET
250 008A
251 008A CHANG_KEY: ; (OLD KEY <> NEWKEY <> 0) & (OLD KEY<>0FFH)
252 008A 1F2E CLR KDTIME ; ONE KEY AND ANOTHER KEY - CHUAN KEY
253 008B 2800 R JMP RKEY_PRO ; INVAILD KEY,CLR KD-TIME
254 008C INVALID_KEY_CHK:
255 008C 1F2E CLR KDTIME ; NO KEY is RL8 PB ALL=1111 1111 -NKDTIME=5TIME
256 008D RKEY_PRO:
257 008D 14AF INC NKDTIME ; AT 5 RL8 LUN CAN CONFIM NO KEY
258 008E 072F MOV A,NKDTIME
259 008F 0C05 XOR A,005D
260 0090 390A SNZ STA_Z
261 0091 2800 R JMP SCAN_KEY_MATRIX ; <>5 CLR ALL , NEW SCAN-KEY
262 0092 15AF DEC NKDTIME ; =5 TIME -1 FOR (OLD KEY <> NEWKEY <> 0) & (OLD KEY<>0FFH)
263 0093 NO_KEY_PROC: ; UP: FOR (ONE KEY AND ANOTHER KEY - CHUAN KEY) / (NO KEY)
264 0093 34B1 CLR SENDBIT ; NO SENDBIT
265 0094 2800 R NOP2
266 0095 2800 R NOP2
267 0096 0001 CLR WDT
268 0097 072C MOV A,NOWKEY ; EXIT_INVALID_KEY: Clear PREKEY
269 0098 00AB MOV PREKEY,A ; NO KEY NOWKEY=0
270 0099 2800 R NOP2
271 009A 0003 RET
272 009B
273 009B KEY_DEB: ; NOWKEY<>0,PREVKEY=0 NEWKEY
274 009B 14AE INC KDTIME ; Check Key Debounce T1=455KHz/4=116480Hz = 8.79us
275 009C 072E MOV A,KDTIME
276 009D 0C06 XOR A,6
277 009E 390A SNZ STA_Z
278 009F 2800 R JMP SCAN_KEY_MATRIX ; KDTIME<>6,CLR ALL - SCAN-KEY
279 00A0 0FFF MOV A,0FFH ; SAVE KEY Debounce Check END
280 00A1 00AB MOV PREKEY,A ; 0FFH to PREKEY -- SCAN-KEY
281 00A2 2800 R JMP SCAN_KEY_MATRIX
282 00A3
283 00A3 ; === TIME DELAY PROCEDURE Delay 10*ACC+5 Instruction Cycle ===
284 00A3 F_DELAY:
285 00A3 10AE SZ KDTIME
286 00A4 2800 R JMP NEWK_D ; KD-TIME <> 0
287 00A5 072F MOV A,NKDTIME ; KD-TIME=0 Release Confirm time offset delay
288 00A6 00A9 MOV RAMD,A
289 00A7 BLANK_DELAY_00:
290 00A7 14A9 INC RAMD
291 00A8 0729 MOV A,RAMD ; NKDTIME=5 ?
292 00A9 0C05 XOR A,005D
293 00AA 3D0A SZ STA_Z
294 00AB 2800 R JMP BLANK_DELAY_010 ; =5
295 00AC 0F9A MOV A,154D ; <>5 ORIGIN=155D
296 00AD BLANK_DELAY_01:
297 00AD 1785 SDZ ACC
298 00AE 2800 R JMP BLANK_DELAY_01 ; DELAY
299 00AF 0001 CLR WDT
File: REM.ASM Holtek Cross-Assembler Version 2.86 Page 6
300 00B0 2800 R JMP BLANK_DELAY_00
301 00B1 BLANK_DELAY_010: ; NKDTIME=5
302 00B1 1F2F CLR NKDTIME ; NKDTIME=0
303 00B2 0F01 MOV A,1 ; OFFSET TIME DELAY
304 00B3 00A9 MOV RAMD,A
305 00B4 BLANK_DELAY_02:
306 00B4 0F25 MOV A,037D
307 00B5 BLANK_DELAY_03:
308 00B5 0001 CLR WDT
309 00B6 1785 SDZ ACC
310 00B7 2800 R JMP BLANK_DELAY_03
311 00B8 17A9 SDZ RAMD
312 00B9 2800 R JMP BLANK_DELAY_02
313 00BA 0003 RET
314 00BB NEWK_D: ; KDTIME<>0 -> NO DELAY New Key No Time Offset Delay
315 00BB 1F2E CLR KDTIME
316 00BC 0003 RET
317 00BD ; === Send Remote Code ===
318 00BD SEND_REMOTE_CODE:
319 00BD 0001 CLR WDT ; CHECK VALIDITY KEY
320 00BE 3CB1 SZ SENDBIT
321 00BF 2800 R JMP READY_SEND
322 00C0 0003 RET
323 00C1
324 00C1 ; ==== M3010 PHILIPS.FORMAT (Remote 64KEY) OSC:429KHz CARRY:36KHz
325 00C1 ; ** HT48RA0A 455K T1=4/455K=8.791US
326 00C1 ; ** 4P30 432K(CAR=1/12Fosc=36K 25%ZKB) 1BIT=3X2(8)X1/432K=1.778MS
327 00C1 READY_SEND:
328 00C1 072C MOV A,NOWKEY ; READ KEY DATA
329 00C2 0087 MOV TBLP,A ; TABLE LOW 8BIT ADR
330 00C3 1DB6 TABRDL REM_DATCODE ; LAST PAGE 0300H; RL REM_DATCODE; RL REM_DATCODE
331 00C4 0708 MOV A,TBLH ; UP:REM_DATCODE=6BIT DATA ,THIS IS READ 5BIT SYSTEM CODE
332 00C5 1885 RL ACC
333 00C6 1885 RL ACC
334 00C7 1885 RL ACC
335 00C8 00B7 MOV REM_SYSCODE,A ; SAVE AS SYSCODE
336 00C9 ; SZ REM_SYSCODE.0
337 00C9 ; JMP REMOTECAR ; 4ge 500hz(3/4)&n(REM_DATCODE) ge 1khz(1/2)
338 00C9 38B3 SNZ RepeatBIT
339 00CA 14B8 INC CONBIT_DAT ; CONBIT_DAT.0= 1&0 REPEAT=0(NEW KEY)
340 00CB 18B6 RL REM_DATCODE
341 00CC 18B6 RL REM_DATCODE
342 00CD ; == Starting send M3010 Remote code ==
343 00CD SEND_M3010: ; REPEAT=1 OR 0 110 00000 001101 --> 111 00000 001101
344 00CD 1636 SIZA REM_DATCODE ; +1-> A CHECK NO KEY CODE 0FFH
345 00CE 2800 R JMP SAT_BIT1
346 00CF 0003 RET
347 00D0 ; ***** 4 ge 500hz(3low1high) rem_datcode ge 1k(1/2) total 6cycle
348 00D0 ;REMOTECAR:
349 00D0 ; MOV A,00AH
350 00D0 ; SNZ REM_DATCODE.6 ; Ge 1Khz fa 4cycle
351 00D0 ; JMP TOGETH ; =0 10 Cycle
352 00D0 ; MOV A,008D ; 8 cycle
353 00D0 ; TOGETH:
354 00D0 ; MOV RAMD,A
355 00D0 ; STACAR: CLR WDT
356 00D0 ; SZ RepeatBIT
357 00D0 ; JMP CAREND
358 00D0 ; MOV A,REM_DATCODE
359 00D0 ; MOV RAMB,A ; n ge 1kHz
File: REM.ASM Holtek Cross-Assembler Version 2.86 Page 7
360 00D0 ; MOV A,004D ; 4 ge 500hz
361 00D0 ; MOV RAMC,A
362 00D0 ; FA500HZ:
363 00D0 ; SET REM ; NO Fa
364 00D0 ; MOV A,58D ; JISHOU 1.5MS HIGH
365 00D0 ; YS150MS:
366 00D0 ; SDZ ACC
367 00D0 ; JMP YS150MS ; [3*(A-1)+2+2] * 4/455 =1500 fact=1485.7(56D)
368 00D0 ; CLR WDT
369 00D0 ; CLR REM ; YES FA WDT 2048X8.79US=18MS
370 00D0 ; MOV A,16D
371 00D0 ; YS500MS:
372 00D0 ; SDZ ACC
373 00D0 ; JMP YS500MS ; [3*(A-1)+2+5] * 4/455 =500 fact=509.9+8.79(18D)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -