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

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

?? hcs301.asm

?? 利用MPLAB工具編寫的滾動碼源碼程序。
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
; 3   FOR RCV11
; TOTAL 10 INSTRUCTIONS BETWEEN EDGE AND ENTERING DL1
; THEREFORE SUBTRACT 10/4 = 2.5 => 3 DL1 LOOPS TO COMPENSATE FOR 
;*************************************************************************

DL1
	CLRWDT                          ; [1] RESET WATCHDOG TIMER
	DECFSZ  CNT2,1                  ; [1] [2, IF SKIP]
	GOTO    DL1                     ; [2] CNT0 X 4 us

SAMPLE1
	BTFSS   PORTA,RFIN              ; [2] INPUT HIGH?  FIRST SAMPLE
	GOTO    RMT01                   ; [0] NO--ERROR

	MOVF    CNT0,W                  ; [1] CALIBRATION COUNTER
	MOVWF   CNT2                    ; [1] (NOMINALLY 75 FOR 300 us PULSE)
	DECF    CNT2,1			; [1] SUBTRACT 2 FROM FINAL CALIB COUNTER TO COMPENATE FOR THIS
	GOTO	$+1			; [2]
	NOP				; [1]
					; TOTAL = 8 => 1 LOOP COUNTER
DL2
	CLRWDT                          ; [1] RESET WATCHDOG TIMER
	GOTO	$+1			; [2] WASTE TIME
	GOTO	$+1			; [2] WASTE TIME
	DECFSZ  CNT2,1			; [1]
	GOTO    DL2                     ; [2] CNT0 X 8 us [ CNT0 x Te ]

SAMPLE2
	BCF     FLAGS,BITIN             ; [1]   CLEAR BIT POSITION
	BTFSS   PORTA,RFIN              ; [1.5] LEAVE 0 IF LINE HIGH
	BSF     FLAGS,BITIN             ; [0.5] MAKE 1 IF LINE LOW
					; SUB TOTAL = 3 CYCLES

	CALL    ROT_SHIFT               ; [11]+[2] CSR SHIFT + CALL
	BCF	CSR7,7			; [1]
	BTFSC   FLAGS,BITIN		; [1.5]
	BSF     CSR7,7			; [0.5]
					; SUB TOTAL = 16 CYCLES


	MOVF    CNT0,W                  ; [1] CALIBRATION COUNTER
	MOVWF   CNT2                    ; [1] (NOMINALLY 75 FOR 300 us PULSE)
	MOVLW	3			; [1] SEE CALCULATION BELOW
	SUBWF	CNT2,1			; [1]
	NOP				; [1]
					; SUB TOTAL = 5 CYCLE
					; TOTAL = 24 => 24/8 = 3 LOOP COUNTERS
					 
;*************************************************************************
; TOTAL = 24 INSTRUCTIONS
; SUBTRACT 24/8 = 3 TO COMPESATE FOR UPDATEING CSR AND OTHER PROCESSING 
; AFTER DATA SAMPLE IS TAKEN.
;*************************************************************************

DL3
	GOTO	$+1			; [2] WASTE TIME
	GOTO	$+1			; [2] WASTE TIME
	CLRWDT                          ; [1] RESET WATCHDOG TIMER
	DECFSZ  CNT2,1                  ; [1]
	GOTO    DL3                     ; [2] CNT0 X 8 us [ CNT0 X Te ]

SAMPLE3
	BTFSC   PORTA,RFIN              ; [2] INPUT LOW?  THIRD SAMPLE
	GOTO    RMT0                    ; [0] NO--RECEIVE ERROR

	CALL    TST_RTCC                ; [11] CHECK RTCC

	DECFSZ  CNT1,1                  ; [1] LAST BIT?
	GOTO    RCV8                    ; [2] ... NO, GET NEXT BIT
	GOTO	RMT1		     	; TOTAL = 14 CYCLES


RMT_0
RMT0	
RMT01	BSF	STATUS,C		; INVALID TRANSMISSION
	RETLW	1			; RETURN

RMT1	BSF	PORTA,LED		; VALID TRANSMISSION FORMAT, LED ON
	MOVLW	0FH			; FORCE OPEN BUTTON CODES TO ZERO
	ANDWF	SER_0,1
	CLRC				; VALID SERIAL NUMBER => VALID TX
 	RETLW   0                    	; RETURN 

;------------------------------------------------------------------------------
;
; FUNCTION     	: M_LOOP ()	      			
;
; DESCRIPTION  	: MAIN PROGRAM ROUTINE
;
;------------------------------------------------------------------------------

M_LOOP	BCF	PORTA,LED		 
	BTFSS	PORTA,LRN		
	GOTO	LEARN		 	; TEST & HANDLE LEARN BUTTON
	CALL	TST_RTCC		; UPDATE TIMER 
	CALL	TST_TIMER		; HANDLE TIMER - UPDATE OUTPUTS
	CALL	RECEIVE			; RECEIVE TRANSMISSION 
	BC	M_LOOP			; CHECK IF TRANSMISSION VALID

M_SEARCH
	CLRF	TXNUM			; TEST FIRST POSITION
; ******* COMPARE LOWER WORD OF SERIAL NUMBER ********
M_SERIAL
	CALL	TX_LOOKUP		; GET TX BASE ADDRESS
	BSF	ADDRESS,1		; ADD 2 TO BASE ADDRESS
	CALL	EEREAD			; READ LOWER 16-BITS OF SER# FROM EEPROM
  		    
	MOVFW	TMP1			; COMPARE RX AND EEPROM VALUES
	XORWF	SER_2,W
	BNZ	M_NEXT			; IF NOT EQUAL CHECK NEXT
	MOVFW	TMP2			; COMPARE RX AND EEPROM VALUES
	XORWF	SER_3,W
	BNZ	M_NEXT			; IF NOT EQUAL CHECK NEXT
	
; ******* COMPARE UPPER WORD OF SERIAL NUMBER ********
M_SERIAL2
	INCF	ADDRESS,F		; POINT TO NEXT ENTRY 
	CALL	EEREAD			; READ UPPER 16-BITS OF SER# FROM EEPROM

	MOVFW	TMP1			; COMPARE RX AND EEPROM VALUES
	XORWF	SER_0,W
	BNZ	M_NEXT			; IF NOT EQUAL CHECK NEXT

	MOVFW	TMP2			; COMPARE RX AND EEPROM VALUES
	XORWF	SER_1,W
	BNZ	M_NEXT			; IF NOT EQUAL CHECK NEXT

	BTFSS	FLAGS,LRNF		; LEARN MODE
	GOTO	M_HOP			; FOUND TRANSMITTER - DECRYPT

	BSF	FLAGS,RELEARN		; SET RELEARN FLAG
	GOTO	LEARN_F			; FOUND TRANSMITTER - LEARN
		
; **** SEARCH NEXT POSITION FOR SERIAL NUMBER *****
M_NEXT	INCF	TXNUM,F			; POINT TO NEXT TRANSMITTER POSITION
	MOVLW	MAX_USERS		; TEST FOR LAST POSITION
	SUBWF	TXNUM,W			
	BTFSS	STATUS,C		; NOT FOUND IN MAP
	GOTO	M_SERIAL		; TRY NEXT POSITION
M_NF
	BTFSS	FLAGS,LRNF		; LEARN MODE
	GOTO	M_LOOP			; NO... INVALID SERIAL NUMBER 
	GOTO	LEARN_NF		; NEW TRANSMITTER - USE POINTER FOR LEARN

; ********** DECRYPT HOPCODE *********************
M_HOP	
	CALL	DECRYPT			; DECRYPT HOPCODE 

; ********* TEST DICRIMINATION VALUE *************
M_DIS	MOVFW	SER_3			; SERIAL NUBER LSB MUST BE EQUAL
	XORWF	DISC,W			; TO DISCRIMINATION VALUE
	BNZ	M_LOOP

; *************** CHECK COUNTERS VALID ************
	BCF	FLAGS,SEC_CNT		; CHECK FIRST COUNTER
M_CNT	CALL	TX_LOOKUP		; POINT LOWER 16 BIT COUNTER
	BTFSC	FLAGS,SEC_CNT		; IF SECOND COUNTER IS USED
	INCF	ADDRESS,F		; INCREMENT ADDRESS
	CALL	EEREAD			; READ LOWER 16 BIT COUNTER FROM EEPROM

; ************ CHECK COUNTER WINDOWS ***********
M_SUB
	MOVFW	TMP2			; 16 BIT COUNTER SUBSTRACTION
	SUBWF	CNTR_LW,W
	MOVWF	TMP2			
	SKPC				; SKIP IF NO BORROW
	INCF	TMP1,F			; ... ELSE INCR HI BYTE
	MOVFW	TMP1
	SUBWF	CNTR_HI,W
	MOVWF	TMP1

	BCF	TMP1,0			; MAKE ACCEPTED WINDOW 512

M_CHECK0
	MOVFW	TMP1			; TEST IF IN WINDOW ( UPPER BYTE )
	BTFSC	STATUS,Z
	GOTO	M_CHECK2		; GO AND CHECK LOWER BYTE

	BTFSC	FLAGS,SEC_CNT		; IF SECOND COUNTER
	GOTO	M_LOOP			; ERROR - GOTO MAIN LOOP		

	BSF	FLAGS,SEC_CNT		; SET FLAG FOR SECOND COUNTER CHECK
	GOTO	M_CNT			; AND CHECK IT

M_CHECK2
	MOVFW	TMP2			; CHECK LOWER BYTE
	BZ	M_TZERO			; IF REPEAT - RESET TIMEOUT COUNTER

; ************ UPDATE EEPROM COUNTER ***********
M_UPDATE
	CALL	TX_LOOKUP		; GET CURRENT TX BASE ADDRESS
	CALL	LOAD_CNT_VALS		; LOAD COUNTER VALUES
	CALL	EEWRITE			; UPDATE FIRST COUNTER
	CALL	LOAD_CNT_VALS		; LOAD COUNTER VALUES	
	CALL	EEWRITE			; UPDATE SECOND COUNTER

; ******** UPDATE OUTPUT WITH CURRENT BUTTON CODE ********

M_OUTPUT 
	MOVLW	0F0H			; MASK ONLY BUTTON CODES
	ANDWF	FUNC,1
	SWAPF	FUNC,1			; GET BUTTON CODE FROM FUNC BYTE
	
	BTFSC	FUNC,0			; CHANGE BUTTON TO S-OUTPUT FORMAT
	BSF	FUNC,4			; [ S2 S1 S0 S3 ]
	CLRC				
	RRF	FUNC,W			
	
M_OUTPUT1
	MOVWF	PORTB			; UPDATE PORT WITH FUNCTION CODE

M_TZERO CLRF	CNT_HI			; RESET RTCC CLOCK
	CLRF	CNT_LW			

M_END	
	GOTO	M_LOOP			; WAIT FOR NEXT TRANMISSION

;------------------------------------------------------------------------------
;
; FUNCTION     	: LEARN ()	      			
;
; DESCRIPTION  	: LEARN ROUTINE
;
;------------------------------------------------------------------------------

LEARN
	CLRF	CNT_LW			; RESET TIMER
	CLRF	CNT_HI
	
	
LEARN1	BSF	PORTA,LED		; LED ON
	CALL	TST_RTCC		; UPDATE TIMER
	BTFSC	PORTA,LRN		; TEST FOR BUTTON RELEASE		
	GOTO	LEARN2			; ENTER LEARN MODE
	BTFSS	CNT_HI,0		; TEST FOR ERASE ALL
	GOTO	LEARN1			; LOOP BACK

; ******* EEPROM ERASE ALL ******************

	BCF	PORTA,LED
ERASE_ALL
	CLRWDT				; CLEAR WATCHDOG TIMER
	BTFSS	PORTA,LRN		; WAIT FOR BUTTON RELEASE
	GOTO	ERASE_ALL		; LOOP BACK

  	MOVLW	30H			; ERASE ENABLE COMMAND
	MOVWF   OUTBYT               	
        CALL    SENDC			; SEND COMMAND TO EEPROM
  	MOVLW	20H			; ERASE ALL COMMAND
	MOVWF   OUTBYT               	
        CALL    SENDC			; SEND COMMAND TO EEPROM
	CALL	WAITACK			; WAIT FOR ERASE ACK
	GOTO	RESET			; START OVER
	
LEARN2
	BCF	PORTA,LED		; CLEAR LED
	BSF	FLAGS,LRNF		; SET LEARN FLAG

LEARN3
	CALL	TST_RTCC		; UPDATE TIMER
	CALL	TST_TIMER		; CHECK FOR LEARN TIMEOUT
	CALL	RECEIVE			; RECEIVE TRANSMISSION 
	BC	LEARN3			; CHECK IF TRANSMISSION VALID
 	GOTO	M_SEARCH		; CHECK IF SERIAL NUMBER IS IN MAP

LEARN_NF

; *** IF SERIAL NOT IN MAP READ SELFLEARN POINTER ***

	MOVLW	LRNPTR			; POINT TO LEARN POINTER
	MOVWF	ADDRESS
	CALL	EEREAD			; READ LEARN POINTER FROM EEPROM

	MOVF	TMP2,W			; CHECK LOWER BYTE
	MOVLW	0H			; LOAD 0 DEFAULT
	BTFSC	STATUS,Z		; IF LOWER != 0 LEARN ON 0
	MOVF	TMP1,W			; ELSE LEARN ON TMP1 VALUE
	MOVWF	TXNUM			; LOAD TXNUM

LEARN_F
	CALL	TX_LOOKUP
	BSF	ADDRESS,1		; ADD 2 TO BASE ADDRESS
	MOVFW	SER_2			; GET LOWER 16 BIT OF SERIAL NUMBER
	MOVWF	TMP1
	MOVFW	SER_3
	MOVWF	TMP2
	CALL	EEWRITE			; ... AND WRITE TO EEPROM
	
	MOVFW	SER_0			; GET UPPER 16 BIT OF SERIAL NUMBER
	MOVWF	TMP1
	MOVFW	SER_1
	MOVWF	TMP2
	CALL	EEWRITE			; ... AND WRITE TO EEPROM

; *** DECRYPT HOP CODE ***

LEARN_DEC
	CALL	DECRYPT			; DECRYPTION ROUTINE

; *** CHECK DISCRIMINATION VALUE ***

LEARN_CHK
	MOVFW	SER_3			; CHECK LOWER BYTE OF SERIAL NUMBER
	XORWF	DISC,W			; AGAINST DISCRIMINATION VALUE
	BZ	LEARN_UP		; UPDATE LEARN POINTER
	GOTO	CANCEL_LEARN		; ERROR CANCEL LEARN MODE

; ********* UPDATE LEARN POINTER **********
LEARN_UP
	CALL	TX_LOOKUP		; GET CURRENT TX BASE ADDRESS
	CALL	LOAD_CNT_VALS
	CALL	EEWRITE			; WRITE LSB WORD OF COUNTER TO EEPROM

	BTFSC	FLAGS,RELEARN		; IF RELEARN
	GOTO	BYPASS_POINTER_WRITE	; DONT UPDATE POINTER

	INCF	TXNUM,F			; INCREMENT LEARN POINTER	       
	MOVLW	MAX_USERS     		; ALLOW 0 .. MAX_USERS - 1
	SUBWF	TXNUM,W			
	MOVLW	0H			; IF MAX WRAP TO 0
	BTFSS	STATUS,C
	MOVF	TXNUM,W			; ELSE USE TXNUM
	MOVWF	TMP1			; FOR WRITE OPERATION

	CLRF	TMP2			; CLEAR LOWER BYTE
	
	MOVLW	LRNPTR			; POINT TO LEARN POINTER
	MOVWF	ADDRESS
	CALL	EEWRITE			; UPDATE LEARN POINTER IN EEPROM

BYPASS_POINTER_WRITE

	BSF	PORTA,LED		; LED ON TO INDICATE VALID LEARN

	CLRF	CNT_LW			; CLEAR COUNTER LOW BYTE

SUCCESS
	CALL	TST_RTCC		; INDICATE SUCCESSFUL LEARN
	BTFSS	CNT_LW,4		; LED ON FOR 0.5 SEC
	GOTO	SUCCESS			; LOOP BACK

CANCEL_LEARN
	BCF	FLAGS,LRNF		; CLEAR LEARN FLAG
	BCF	FLAGS,RELEARN		; CLEAR RELEARN FLAG
	GOTO	M_LOOP			; RETURN TO MAIN LOOP - LED OFF

;------------------------------------------------------------------------------
; END OF FILE : SIMDEC10.ASM
;------------------------------------------------------------------------------

	ORG	1FFH
	GOTO	RESET
	END


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女精品人人做人人爽| 中文字幕中文在线不卡住| 欧美日本在线一区| 不卡视频一二三四| 国产裸体歌舞团一区二区| 裸体歌舞表演一区二区| 亚洲欧美国产高清| 亚洲第四色夜色| 91精品国产乱| 69av一区二区三区| 欧美一区二区三区精品| 欧美一区二区免费| 日韩欧美国产一区在线观看| 欧美一二三四区在线| 日韩欧美中文一区二区| 精品国产乱码久久久久久浪潮| 日韩欧美一二三四区| 久久午夜老司机| 韩日av一区二区| 日韩不卡一二三区| 美女网站在线免费欧美精品| 国产一区二区三区最好精华液| 国产成人免费视| 97久久超碰精品国产| 欧美色图激情小说| 日韩丝袜情趣美女图片| 精品国产乱码久久| 国产清纯白嫩初高生在线观看91 | 麻豆国产一区二区| 久久se精品一区二区| 大胆亚洲人体视频| 在线观看av一区| 日韩欧美中文字幕制服| 国产欧美视频一区二区| 亚洲精品久久久蜜桃| 日韩成人精品在线观看| 国产精品18久久久| 91国偷自产一区二区使用方法| 欧美另类一区二区三区| 国产亚洲福利社区一区| 一区二区在线电影| 美女任你摸久久| aaa欧美色吧激情视频| 欧美日韩情趣电影| 久久久综合精品| 亚洲国产欧美在线| 国产一区二区三区黄视频| 色哟哟一区二区在线观看| 欧美mv日韩mv| 日韩电影在线一区| 国模一区二区三区白浆| 欧美亚洲一区二区在线观看| 欧美大胆人体bbbb| 国产精品水嫩水嫩| 亚洲bt欧美bt精品777| 国产精品中文欧美| 欧美色涩在线第一页| 久久影视一区二区| 亚洲国产成人av| 成人性生交大片免费看中文 | 久久午夜色播影院免费高清| 亚洲欧美日韩成人高清在线一区| 久久成人麻豆午夜电影| 一本大道久久a久久综合婷婷| 日韩午夜小视频| 亚洲激情男女视频| 成人性生交大片免费看在线播放| 欧美精品乱码久久久久久| 欧美经典一区二区| 久久精品国产亚洲aⅴ| 在线观看视频欧美| 国产精品妹子av| 经典一区二区三区| 3d成人动漫网站| 亚洲一区二区在线视频| 成人天堂资源www在线| 精品国产露脸精彩对白| 亚洲视频狠狠干| 久久品道一品道久久精品| 亚洲va国产天堂va久久en| av影院午夜一区| 亚洲精品一区二区三区在线观看| 亚洲成av人在线观看| 91天堂素人约啪| 中文字幕欧美区| 国产麻豆午夜三级精品| 91精品国产一区二区三区| 亚洲精品福利视频网站| 91在线视频播放地址| 久久精品夜色噜噜亚洲aⅴ| 美腿丝袜亚洲三区| 91精品国产色综合久久不卡蜜臀| 伊人性伊人情综合网| 91亚洲永久精品| 中文字幕色av一区二区三区| 国产999精品久久久久久| 久久蜜桃av一区精品变态类天堂 | 毛片av中文字幕一区二区| 欧美色老头old∨ideo| 一个色在线综合| 欧美亚洲一区二区在线| 一区二区三区视频在线观看| 在线观看一区不卡| 亚洲午夜久久久久久久久电影院| 91污在线观看| 一区二区三区在线视频观看58| 91色婷婷久久久久合中文| 中文字幕色av一区二区三区| 91丨porny丨蝌蚪视频| 亚洲欧美电影一区二区| 色综合久久久久| 亚洲五码中文字幕| 欧美视频一区二区三区在线观看| 亚洲国产成人av网| 欧美一区二区性放荡片| 经典三级一区二区| 欧美激情一区二区在线| 波多野结衣精品在线| 一区二区欧美视频| 欧美人与禽zozo性伦| 蜜桃视频在线一区| 久久中文娱乐网| youjizz国产精品| 亚洲精品久久嫩草网站秘色| 欧美日韩高清影院| 蜜臀av一区二区| 中文字幕欧美三区| 欧洲中文字幕精品| 蜜臀久久99精品久久久画质超高清| 26uuu另类欧美| 不卡视频免费播放| 亚洲h在线观看| 久久一二三国产| 一本色道亚洲精品aⅴ| 午夜久久久久久久久| 久久亚洲春色中文字幕久久久| 国产白丝精品91爽爽久久| 一区二区三区中文字幕精品精品 | 欧美日韩激情一区| 精品制服美女久久| 亚洲视频在线观看一区| 欧美高清视频www夜色资源网| 精品一区二区三区免费| 国产精品久久久一本精品| 欧美群妇大交群中文字幕| 精品综合免费视频观看| 亚洲精品综合在线| 日韩欧美在线影院| 99在线视频精品| 麻豆成人久久精品二区三区小说| 国产精品乱人伦中文| 在线不卡中文字幕| 高清shemale亚洲人妖| 午夜精品视频一区| 国产精品三级视频| 欧美日韩aaaaa| 不卡的av在线播放| 日韩电影在线看| 1024成人网色www| 欧美va亚洲va| 欧美在线播放高清精品| 国产精品亚洲综合一区在线观看| 一区二区三区欧美在线观看| 久久只精品国产| 在线电影国产精品| 99riav久久精品riav| 久久精品99久久久| 亚洲国产综合色| 国产精品二三区| 2023国产一二三区日本精品2022| 欧美亚洲一区二区在线| av不卡一区二区三区| 国产精品自在在线| 美腿丝袜一区二区三区| 亚洲成人黄色影院| 亚洲色图第一区| 欧美国产1区2区| 久久人人爽爽爽人久久久| 欧美一区二区三区的| 在线免费观看日韩欧美| av午夜精品一区二区三区| 国产一区不卡视频| 视频在线观看一区二区三区| 亚洲精品视频在线观看免费| 日本一区二区三区在线观看| 日韩精品中文字幕一区| 这里只有精品电影| 欧美精品日韩一本| 91国偷自产一区二区开放时间| av在线不卡免费看| 高潮精品一区videoshd| 国产乱子轮精品视频| 蜜桃视频一区二区| 毛片av中文字幕一区二区| 五月天亚洲婷婷| 亚洲一区二区欧美激情| 一区二区三区色| 亚洲精品视频免费看| 玉足女爽爽91| 一区二区三区日韩|