亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hcs302.asm

?? Keeloq編解碼例程包含解碼編碼源程序及應用筆記.rar
?? ASM
?? 第 1 頁 / 共 3 頁
字號:

WRITE0  MOVLW	30H			; WRITE ENABLE COMMAND
	MOVWF   OUTBYT               	
        CALL    SENDC			; SEND COMMAND TO EEPROM
        BCF     PORTB,CS                ; END COMMAND, DESELECT

; ******** WRITE 16-BIT WORD TO EEPROM *********

WRITE1  MOVFW   ADDRESS			; GET EEPROM ADDRESS
	MOVWF	OUTBYT
        BSF     OUTBYT,6		; WRITE COMMAND
        CALL    SENDC                   ; SEND COMMAND TO EEPROM

	MOVLW	16D			; 16 DATA BITS
        MOVWF   CNT1	                

WRITE2
        BTFSS   TMP1,7			; TEST MSB OF 16 BIT WORD
        BCF     PORTB,DIO		; SET DATA BIT
        BTFSC   TMP1,7			; ... ELSE 
        BSF     PORTB,DIO               ; CLEAR DATA BIT
        GOTO    $+1                     ; WAIT 2 US
        RLF     TMP2,F                  ; SHIFT LO BYTE
        BSF     PORTB,CLK               ; CLOCK HIGH
        GOTO    $+1                     ; WAIT 2 US
        RLF     TMP1,F                  ; SHIFT HI BYTE
        BCF     PORTB,CLK               ; CLOCK LOW
	DECFSZ	CNT1,F
        GOTO	WRITE2             	; LOOP COUNTER

WAITACK
       	BCF     PORTB,CS                ; END OF WRITE COMMAND, DESELECT

        MOVLW   RDCFG
        TRIS    PORTB                   ; DIO = INPUT
        BSF     PORTB,CS		; CS HIGH TO WAIT FOR ACK
WRITE5 	
	BTFSC	PORTB,DIO		; CHECK FOR ACK
	GOTO	WRITE6			; WDT RESET ON NO ACK
	GOTO	WRITE5

WRITE6  BCF     PORTB,CS                ; END OF ACK

; ******* EEPROM WRITE DISABLE ****************
        MOVLW   000H             	; WRITE DISABLE COMMAND
	MOVWF	OUTBYT
        CALL    SENDC
        BCF     PORTB,CS                ; END OF DISABLE COMMAND, DESELECT

	INCF	ADDRESS,F    		; POINT TO NEXT EEPROM ADDRESS ( BY DEFAULT )
	RETLW	0H

;------------------------------------------------------------------------------
;
; FUNCTION     	: EEREAD ()	      			
;
; DESCRIPTION  	: READ 16 BIT VALUE FROM EEPROM 
;
; NOTE		: THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------

EEREAD
        MOVFW   ADDRESS
        MOVWF	OUTBYT
        BSF     OUTBYT,7                ; COMMAND = READ
        CALL    SENDC                   ; SEND COMMAND
        MOVLW   RDCFG
        TRIS    PORTB                   ; DIO = INPUT
	MOVLW   16D                	; 16 BITS TO READ
	MOVWF	CNT1

READ0   BSF     PORTB,CLK               ; CLOCK HIGH
        RLF     TMP2,F                  ; SHIFT LO BYTE
        BCF     TMP2,0                  ; ASSUME BIT WILL BE 1
        BTFSC   PORTB,DIO               ; READ DIO LINE
        BSF     TMP2,0                  ; COPY BIT TO REGISTER
        BCF     PORTB,CLK               ; CLOCK LOW
        RLF     TMP1,F                  ; SHIFT HI BYTE
        DECFSZ  CNT1,F			; LOOP COUNTER
	GOTO	READ0
        BCF     PORTB,CS                ; END READ CYCLE

	RETLW	0H

;------------------------------------------------------------------------------
;
; FUNCTION     	: DECRYPT ()	      			
;
; DESCRIPTION  	: DECRYPTS 32 BIT [HOP1:HOP4] USING [CSR0:CSR7]
;
; NOTE		: THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------


; THE KEY USED IS A FIXED KEY WHICH IS NOT SERIAL NUMBER DEPENDANT
; THE USER MUST CHOOSE A KEY AND CHANGE THE CODE HERE TO REFLECT THAT KEY

DECRYPT
	MOVLW	0EFH		; LOAD FIXED 64 BIT KEY LSB		
	MOVWF	KEY0
	MOVLW	0CDH
	MOVWF	KEY1
	MOVLW	0ABH
	MOVWF	KEY2
	MOVLW	089H
	MOVWF	KEY3
	MOVLW	067H
	MOVWF	KEY4
	MOVLW	045H
	MOVWF	KEY5
	MOVLW	023H
	MOVWF	KEY6
	MOVLW	01H		; LOAD FIXED 64 BIT KEY MSB
	MOVWF	KEY7

        MOVLW   11+1            ; OUTER LOOP 11+1 TIMES 
        MOVWF   CNT1          	; OUTER LOOP 11+1 TIMES 

DECRYPT_OUTER

        MOVLW   48              ; INNER LOOP 48 TIMES
        MOVWF   CNT0          	; INNER LOOP 48 TIMES

DECRYPT_INNER
	CLRWDT			; RESET WATCHDOG TIMER
        MOVFW   CNT1		; LAST 48 LOOPS RESTORE THE KEY
        XORLW   1               ; LAST 48 LOOPS RESTORE THE KEY
        SKPNZ                   ; LAST 48 LOOPS RESTORE THE KEY
        GOTO    ROTATE_KEY      ; LAST 48 LOOPS RESTORE THE KEY

        ; THE LOOKUP TABLE IS COMPRESSED INTO IN 4 BYTES TO SAVE SPACE
        ; USE THE 3 LOW INDEX BITS TO MAKE UP AN 8-BIT BIT MASK
        ; USE THE 2 HIGH INDEX BITS TO LOOK UP THE VALUE IN THE TABLE
        ; USE THE BIT MASK TO ISOLATE THE CORRECT BIT IN THE BYTE
        ; PART OF THE REASON FOR THIS SCHEME IS BECAUSE NORMAL TABLE LOOKUP
        ; REQUIRES AN ADDITIONAL STACK LEVEL

        CLRC                    ; CLEAR CARRY (FOR THE LEFT SHIFT)
       
        MOVLW   1               ; INITIALISE MASK = 1
        BTFSC   HOP3,3       	; SHIFT MASK 4X IF BIT 2 SET
        MOVLW   10000B          ; SHIFT MASK 4X IF BIT 2 SET
        MOVWF   MASK            ; INITIALISE MASK = 1

        BTFSS   HOP2,0       	; SHIFT MASK ANOTHER 2X IF BIT 1 SET
        GOTO    $+3
        RLF     MASK,F
        RLF     MASK,F            

        BTFSC   HOP1,0       	; SHIFT MASK ANOTHER 1X IF BIT 0 SET
        RLF     MASK,F

        ; MASK HAS NOW BEEN SHIFTED 0-7 TIMES ACCORDING TO BITS 2:1:0

        MOVLW   0               ; TABLE INDEX = 0
        BTFSC   HOP4,1
        IORLW   2               ; IF BIT 3 SET ADD 2 TO THE TABLE INDEX
        BTFSC   HOP4,6
        IORLW   4               ; IF BIT 4 SET ADD 4 TO THE TABLE INDEX

        ADDWF   PC,F            ; ADD THE INDEX TO THE PROGRAM COUNTER
				;  [ MUST BE IN LOWER HALF OF PAGE ]
                               
TABLE
        MOVLW   02EH            ; BITS 4:3 WERE 00
        GOTO    TABLE_END       ; END OF LOOKUP

        MOVLW   074H            ; BITS 4:3 WERE 01
        GOTO    TABLE_END       ; END OF LOOKUP

        MOVLW   05CH            ; BITS 4:3 WERE 10
        GOTO    TABLE_END       ; END OF LOOKUP

        MOVLW   03AH            ; BITS 4:3 WERE 11
                                 
TABLE_END

        ANDWF   MASK,F          ; ISOLATE THE CORRECT BIT BY ANDING WITH MASK
        MOVLW   0               ; COPY THE BIT TO BIT 7
        SKPZ                    ; COPY THE BIT TO BIT 7
        MOVLW   10000000B       ; COPY THE BIT TO BIT 7

        XORWF   HOP2,W    	; ONLY INTERESTED IN BIT HOP2,7
        XORWF   HOP4,W    	; ONLY INTERESTED IN BIT HOP4,7
        XORWF   KEY1,W		; ONLY INTERESTED IN BIT KEYREG1,7

        MOVWF   MASK            ; STORE W TEMPORARILY (WE NEED BIT 7)
        RLF     MASK,F          ; LEFT ROTATE MASK TO GET BIT 7 INTO THE CARRY

        RLF     HOP1,F         	; SHIFT IN THE NEW BIT
        RLF     HOP2,F
        RLF     HOP3,F
        RLF     HOP4,F

ROTATE_KEY

        CLRC			; CLEAR CARRY
        BTFSC   KEY7,7       	; SET CARRY IF LEFTMOST BIT SET
        SETC                    ; SET CARRY IF LEFTMOST BIT SET

        RLF     KEY0,F         	; LEFT-ROTATE THE 64-BIT KEY 
        RLF     KEY1,F
        RLF     KEY2,F
        RLF     KEY3,F
        RLF     KEY4,F
        RLF     KEY5,F
        RLF     KEY6,F
        RLF     KEY7,F         

        DECFSZ  CNT0,F         	; INNER LOOP 48 TIMES
        GOTO    DECRYPT_INNER   ; INNER LOOP 48 TIMES

        DECFSZ  CNT1,F         	; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)
        GOTO    DECRYPT_OUTER   ; OUTER LOOP 12 TIMES (11 + 1 TO RESTORE KEY)

        RETLW   0               ; RETURN 

;------------------------------------------------------------------------------
;
; FUNCTION     	: LOAD_CNT_VALS()	      			
;
; DESCRIPTION  	: LOAD COUNTERS INTO WRITE BUFFERS
;
; NOTE		: THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------

LOAD_CNT_VALS
	MOVFW	CNTR_HI			; LOAD MSB OF COUNTER
	MOVWF	TMP1
	MOVFW	CNTR_LW			; LOAD LSB OF COUNTER
	MOVWF	TMP2
	RETLW	0

;------------------------------------------------------------------------------
;
; FUNCTION     	: RECEIVE()	      			
;
; DESCRIPTION  	: RECEPTION ROUTINE FOR PWM TRANSMISSIONS
;
; NOTE		: THIS ROUTINE MUST BE IN THE LOWER HALF OF THE PAGE
;
;------------------------------------------------------------------------------

RECEIVE

;******** WAIT FOR HEADER AND CALIBRATE *******************

	BTFSS   PORTA,RFIN              ; INPUT LOW?
	GOTO    RMT_0                   ; YES; RECEIVE ERROR

	MOVLW   10                      ; 10 ms TIMER
	MOVWF   CNT1
RCV0
	MOVLW   200
	MOVWF   CNT0
RCV1
	BTFSS   PORTA,RFIN              ; [2] INPUT HIGH?
	GOTO    RCV2                    ; [0] NO, JUMP OUT OF LOOP
	DECFSZ  CNT0,1                  ; [1] YES, CONTINUE WITH TIMING LOOP
	GOTO    RCV1                    ; [2] 5 us X CNT0
	DECFSZ  CNT1,1                  ; [0] DO 1 ms LOOP CNT1 TIMES
	GOTO    RCV0			; [0]

RCV2
	CLRF    CNT0                    ; [1] CLEAR CALIB COUNTER LOW BYTE
	CLRF    CNT1                    ; [1] CLEAR CALIB COUNTER HIGH BYTE

;*************************************************************************
;  2.5 IS AVERAGE FOR DETECTING FALLING EDGE IN RCV1
;  2   INSTRUCTIONS FOR JUMP OUT RCV1 TO RCV2
;  2   INSTRUCTIONS FOR RCV2 - CLEAR CALIBRATION COUNTER
;  TOTAL 6.5 INSTRUCTIONS < 1 CALIBRATION LOOP SO DISCARD
;*************************************************************************

RCV3
	BTFSC   PORTA,RFIN              ; [2][2] INPUT HIGH?
	GOTO    RCV6                    ; [0][0] YES--END CALIBRATION
	INCF	CNT0,1			; [1] INCREMENT 16BIT COUNTER	
	SKPNZ	      			; [2]
	INCF	CNT1,1			; [0]
	CLRWDT				; [1] RESET WATCH DOG TIMER
	NOP				; [1]
	BTFSS	CNT1,3			; [1]
	GOTO	RCV3  			; [2]
	GOTO	RMT_0 			; [0]
		      			; TOTAL = 10
		      			
RCV6
	CLRC				; [1] DIVIDE CNT1:CNT0 BY 8 (600/8=75)
	RRF     CNT1,1			; [1]
	RRF     CNT0,1			; [1]
	RRF     CNT1,1			; [1]
	RRF     CNT0,1			; [1]
	RRF     CNT1,1			; [1]
	RRF     CNT0,1                  ; [1] 
					
	MOVLW   MIN/80			; [1]
	SUBWF   CNT0,W			; [1]
	BTFSS   STATUS,C		; [2] NEGATIVE?
	GOTO    RMT_0                   ; [0] YES--HEADER SHORTER THAN MIN.
					; TOTAL = 11
; ************* VALID HEADER RECEIVED *********************
RCV7
	MOVLW   NBITS                   ; [1] VALID START MARKER WAS RECEIVED
	MOVWF   CNT1			; [1]
	MOVF    CNT0,W			; [1]
	MOVWF   CNT2                    ; [1] CNT2 = CNT0
	MOVLW   6H			; [1] SEE NOTE BELOW
	SUBWF   CNT2,1			; [1]
	GOTO    DL1                   	; [2] COMPENSATE FOR FIRST BIT
					; TOTAL = 8

;**********************************************************************************
;  2.5 IS AVERAGE PLAY BETWEEN RISING EDGE AND JUMP OUT OF CALIBRATION LOOP.
;  2   FOR JUMP OUT OF RCV3 TO RCV6
; 11   INSTRUCTIONS FOR RVC6 - CAIBRATION COUNTER DIVIDE
;  8   INSTRUCTIONS FOR RCV7 - COMPENSATE FOR POST CALIBRATION CALCUATIONS
; TOTAL 22.5 INSTRUCTIONS BETWEEN RISING EDGE AND ENTERING DL1
;  THEREFORE SUBTRACT 22.5/4 = 5.625 TO COMPENSATE FOR POST CALCULATION ON 1ST BIT
;**********************************************************************************

RCV8					
	MOVLW	4H			; [1] WAIT A MAXIMUM OF 4 Te
	MOVWF	TMP_CNT			; [1] SET TEMP LOOP COUNTER

RCV10A
	MOVFW	CNT0                  	; [1] and CSR processing
	MOVWF   CNT2			; [1] Refer to explanation above

RCV10B
	BTFSC   PORTA,RFIN              ; [2] Wait for rising edge
	GOTO    RCV11                   ; [0] Edge found--Process
	CLRWDT                          ; [1] Clear watchdog Timer
	BTFSC   PORTA,RFIN              ; [2] Wait for Next rising edge
	GOTO    RCV11                   ; [0] Edge found--Process
	DECFSZ  CNT2,1                  ; [1] Decrement Timeout counter
	GOTO    RCV10B                  ; [2] Loop Back
					; TOTAL = 8, RFIN CHECKED EVERY 4uS ON AVERAGE

	DECFSZ	TMP_CNT,1		; [1] ALL Te PERIODS
	GOTO	RCV10A			; [2] ... NO, THEN WAIT FOR NEXT ONE
	GOTO    RMT01                   ; [0] ... YES, [0] TIMEOUT--no edge found

RCV11
	MOVLW	3H			; [1]  SEE NOTE BELOW
	SUBWF	CNT0,W			; [1]
	MOVWF	CNT2			; [1]

;*************************************************************************
; 2   SETUP OF TEMP LOOP COUNTER  ( ONLY ONCE )
; 2   SETUP TE LOOP COUNTER       ( MAX 4 )
; 3   DECREMENT TEMP LOOP COUNTER ( MAX 4 )
; 4   IS THE AVERAGE PLAY BETWEEN EDGE AND EDJE BEING DETECTED IN RCV9
; 2   JUMP OUT OF RCV10B TO RCV11

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的电影网站| 91免费观看在线| 亚洲另类在线一区| 色综合久久六月婷婷中文字幕| 一区二区三区资源| 欧美不卡视频一区| 91在线免费看| 久久99精品久久久久| 亚洲日本va在线观看| 日韩欧美国产电影| 91麻豆国产自产在线观看| 毛片av一区二区| 亚洲女人小视频在线观看| 日韩三级视频中文字幕| av在线综合网| 久久99久国产精品黄毛片色诱| 亚洲视频精选在线| 国产亚洲va综合人人澡精品| 欧美日韩黄色影视| av一区二区三区黑人| 美女一区二区三区| 亚洲一区二区三区四区在线观看| 精品捆绑美女sm三区| 91麻豆国产福利精品| 国产精品一区二区三区99| 水蜜桃久久夜色精品一区的特点 | 不卡av在线免费观看| 六月丁香综合在线视频| 一区二区高清免费观看影视大全| 国产日韩欧美激情| 精品日本一线二线三线不卡| 精品1区2区3区| a在线播放不卡| 国产成a人亚洲精品| 国产98色在线|日韩| 五月天精品一区二区三区| 18成人在线观看| 国产午夜亚洲精品理论片色戒| 欧美高清性hdvideosex| 在线看日韩精品电影| 99re在线精品| 福利电影一区二区| 精品亚洲国内自在自线福利| 日日欢夜夜爽一区| 中文字幕亚洲欧美在线不卡| 久久网站最新地址| 亚洲精品一线二线三线无人区| 欧美群妇大交群的观看方式| 欧美日韩一区 二区 三区 久久精品| 国产成人在线免费| 国产福利91精品| 日韩电影在线看| 一区二区三区免费| 亚洲国产wwwccc36天堂| 亚洲影视在线观看| 亚洲第一激情av| 天堂在线亚洲视频| 日韩专区一卡二卡| 日本vs亚洲vs韩国一区三区二区| 日日夜夜免费精品视频| 奇米色777欧美一区二区| 日本女人一区二区三区| 毛片基地黄久久久久久天堂| 久久99国产精品麻豆| 国产精品综合视频| 国产suv一区二区三区88区| 丁香一区二区三区| 成年人午夜久久久| 色999日韩国产欧美一区二区| 色综合 综合色| 欧美色欧美亚洲另类二区| 欧美日韩成人综合| 91超碰这里只有精品国产| 日韩写真欧美这视频| 精品美女在线播放| 日本一区二区三区dvd视频在线| 中文字幕一区二区三区精华液 | 成人一级片在线观看| 成a人片国产精品| 在线观看视频一区| 欧美丰满少妇xxxbbb| 久久综合国产精品| 精品国产乱码久久久久久久| 国产精品美女一区二区在线观看| 亚洲欧美日韩中文播放| 丝袜美腿成人在线| 国产在线视频不卡二| www.在线欧美| 91.xcao| 2021国产精品久久精品| 亚洲人成人一区二区在线观看 | 国产精品久久久久久久第一福利| 中文字幕一区二区视频| 午夜精品一区在线观看| 国产一区啦啦啦在线观看| 成人性生交大片免费看中文网站 | 3d成人h动漫网站入口| 欧美精品一区二区三区四区| 中文字幕欧美激情| 日韩在线一二三区| 成人免费黄色大片| 欧美另类变人与禽xxxxx| 欧美大肚乱孕交hd孕妇| 国产精品久久久久影院| 亚洲成人免费在线| 91在线免费看| 国产精品免费看片| 国产麻豆精品95视频| 日韩无一区二区| 亚洲免费毛片网站| 粉嫩av一区二区三区| 精品91自产拍在线观看一区| 亚洲第一综合色| 日本高清不卡视频| 中文字幕一区二区三区不卡在线| 国产一区二区三区日韩| 日韩三级电影网址| 日韩激情视频网站| 7878成人国产在线观看| 亚洲成在线观看| 欧美日韩一级黄| 午夜久久久久久久久| 91久久国产综合久久| 亚洲精品久久久蜜桃| 91在线免费看| 亚洲三级在线播放| 91在线视频18| 亚洲精品一二三区| 日本高清视频一区二区| 一区二区三区在线播放| 91麻豆国产香蕉久久精品| 一色屋精品亚洲香蕉网站| 成人精品国产一区二区4080| 中文字幕不卡在线播放| 成人毛片在线观看| 国产精品二三区| 91丨九色丨蝌蚪丨老版| 亚洲免费在线观看| 精品视频1区2区| 日韩成人免费在线| 日韩欧美亚洲国产另类| 精品一区二区三区在线观看 | 欧美成人video| 国产精品一区二区在线播放| 久久只精品国产| 国产成人无遮挡在线视频| 国产精品毛片大码女人 | 日韩免费高清av| 国产一区二区三区观看| 国产色综合一区| 成人精品国产一区二区4080| 综合欧美亚洲日本| 欧美撒尿777hd撒尿| 日韩高清不卡一区二区三区| 2024国产精品| 91亚洲精品久久久蜜桃| 婷婷综合久久一区二区三区| 日韩欧美二区三区| 国产91精品一区二区| 亚洲精品国产精品乱码不99| 欧美日韩国产首页| 国产在线视视频有精品| 亚洲视频在线一区| 欧美一级国产精品| 国产成人精品亚洲午夜麻豆| 亚洲色欲色欲www在线观看| 欧美日韩精品二区第二页| 国内精品伊人久久久久av影院| 国产精品狼人久久影院观看方式| 在线视频一区二区免费| 久久国产尿小便嘘嘘| 亚洲欧洲99久久| 欧美一区二区视频免费观看| 国产经典欧美精品| 亚洲国产成人91porn| 久久精品视频一区二区三区| 日本久久电影网| 国产揄拍国内精品对白| 亚洲自拍偷拍欧美| 久久久精品人体av艺术| 欧美丝袜丝nylons| 大白屁股一区二区视频| 午夜精品久久久久久久久久久| 国产偷国产偷亚洲高清人白洁 | 日韩美女主播在线视频一区二区三区| 国产成人免费在线视频| 亚洲18女电影在线观看| 中文字幕不卡在线| 日韩欧美自拍偷拍| 色婷婷av一区二区三区软件| 久久成人麻豆午夜电影| 一区二区三区在线视频免费| 日韩视频免费观看高清完整版在线观看 | 国产精品免费久久| 日韩精品自拍偷拍| 欧美性感一区二区三区| 国产91对白在线观看九色| 免费在线一区观看| 亚洲一级不卡视频| 亚洲私人影院在线观看|