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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dtmf.asm

?? 電話遠(yuǎn)程控制家電系統(tǒng)單片機(jī)開發(fā)電話遠(yuǎn)程控制家電系統(tǒng)單片機(jī)開發(fā)
?? ASM
?? 第 1 頁 / 共 4 頁
字號:
;	DTMF REMOTE CONTROL
;
;	(c) 2003 Radu Constantinescu
;	constantinescuradu @yahoo.com
;	RELEASED UNDER GNU PUBLIC LICENSE
;	
;	SOFTWARE DTMF DECODER 
;	modified Goertzel algorithm
;	timer 2 used to generate interupts at 9765.625hz
;	PWM1 output at 19531.25hz NOT USED
;
;
;	Use 255 samples table	
;	FOR 16F87X / 20 Mhz
;	F sample = 5000000/512 hz = 9765. 625 hz
;
;
;	RC0 BEEP OUT 
;	RC1 DTMF Signal Input - Schmitt trigger 
;	RC2 PWM1 OUT/ not used
;	RC3 HOOK ON OUT
;
;	RB0	= OUTPUT1
;	RB1	= OUTPUT2
;	RB2	= OUTPUT3
;	RB3	= OUTPUT4
;
;	#PASS#1-4#0-1##	SET OUTPUT
;	#PASS#1-4##	VERIFY OUTPUT
;	#PASS#NEWPASS#NEWPASS##	CHANGE PASS
;	PASS IS 10 DIGITS LONG
;
;
;
;
;Started 9/1/02	
;	
;
;
;

#include <p16f877.inc>

Bank0:	MACRO
	bcf STATUS, RP0
	bcf STATUS, RP1
	ENDM
Bank1:	MACRO
	bsf STATUS, RP0
	bcf STATUS, RP1
	ENDM
Bank2:	MACRO
	bcf STATUS, RP0
	bsf STATUS, RP1
	ENDM
Bank3:	MACRO
	bsf STATUS, RP0
	bsf STATUS, RP1
	ENDM



;****************************
;
;User Variables
;
;****************************
COUNT		EQU	H'27'
RESULT		EQU	H'28'
FLAGS		EQU	H'29'
EE_Byte		EQU	H'2A'	; variable for EEwrite
;2b
;2c
;2e
;2f

A697SIN		EQU	H'30'
A697COS		EQU	H'31'	; ACC
A770SIN		EQU	H'32'
A770COS		EQU	H'33'	; ACC
A852SIN		EQU	H'34'
A852COS		EQU	H'35'	; ACC
A941SIN		EQU	H'36'
A941COS		EQU	H'37'	; ACC
A1209SIN	EQU	0X38
A1209COS	EQU	0X39	;ACC
A1336SIN	EQU	0X3A
A1336COS	EQU	0X3B	;ACC
A1447SIN	EQU	0X3C
A1447COS	EQU	0X3D	;ACC
A1633SIN	EQU	0X3E
A1633COS	EQU	0X3F	;ACC

SAMPLEBIT	EQU	0X40
FSR_SAVE_DTMF	EQU	0X41	; DTMF START ROUTINE TEMP
TEMP_VAL	EQU	0X42
TABLECOUNTER	EQU	0X43
TEMP_TIMES	EQU	0X44
LOWTEMPLATE	EQU	0X45
HIGHTEMPLATE	EQU	0X46
BYTE		EQU	0X47
RESULT1		EQU	0X48	; DECODED DIGIT OR 0
PCLATH_SAVE	EQU	0X49
W_TEMP		EQU	0X4A
STATUS_TEMP	EQU	0X4B
FSR_SAVE	EQU	0X4C
TIME0		EQU	0X4D	;TIMEOUT LSB
TIME1		EQU	0X4E
TIME2		EQU	0X4F	;TIMEOUT MSB	
	#DEFINE	DONE		FLAGS,0
	#DEFINE TIMEOUT		FLAGS,1
	#DEFINE BEEP		FLAGS,2
; Utility routines variables
	CBLOCK 0x50
	scrA:	1	; scratch pad	0X50
	scrB:	1
	scrC:	1	
	scrD:	1
	count_1:1	; counter lsb
	count_2:1
	count_3:1
	count_4:1	; counter msb
	dig_10:	1	; display digit 10
	dig_9:	1	; display digit 9
	dig_8:	1	; display digit 8
	dig_7:	1	; display digit 7
	dig_6:	1	; display digit 6
	dig_5:	1	; display digit 5
	dig_4:	1	; display digit 4
	dig_3:	1	; display digit 3
	dig_2:	1	; display digit 2
	dig_1:	1	; display digit 1
	dig_0:	1	; end of string 0 0X62

PSS0:		1	;PASSWORD 
PSS1:		1	;PASSWORD 
PSS2:		1	;PASSWORD 
PSS3:		1	;PASSWORD 
PSS4:		1	;PASSWORD 
PSS5:		1	;PASSWORD 
PSS6:		1	;PASSWORD 
PSS7:		1	;PASSWORD 
PSS8:		1	;PASSWORD
PSS9:		1	;PASSWORD 


 
	ENDC

	CBLOCK 0x72	; variables for all the RAM pages
	comA:	1
	comB:	1
	comC:	1
	comD:	1
	ENDC

;***********************************************
;EEprom Variables
;***********************************************
OUT0	EQU	0X0

PASS0	EQU	0X8
PASS1	EQU	0X9
PASS2	EQU	0XA
PASS3	EQU	0XB
PASS4	EQU	0XC
PASS5	EQU	0XD
PASS6	EQU	0XE
PASS7	EQU	0XF
PASS8	EQU	0X10
PASS9	EQU	0X11

	ORG	h'2100'		;EEPROM INITIAL VALUES
	DE	0,0,0,0,0,0,0,0
	DE	"1234567890"


;************************************************	



	ORG	0X00
	NOP
	NOP
	CLRF STATUS	; ENSURE BANK0
	GOTO	START
	;GOTO STARTPLUS

INTERRUPT_VECTOR	
	ORG	0X04

;****************************
;
;	CONTEXT SAVE
;
;****************************
C_SAVE	MOVWF	W_TEMP
	SWAPF	STATUS,W
	CLRF	STATUS		;ENSURE BANK0 SAVE
	MOVWF	STATUS_TEMP

	MOVF	PCLATH,W	; SAVE PCLATH
	MOVWF   PCLATH_SAVE

	MOVF	FSR, W
	MOVWF	FSR_SAVE

	BTFSS	PIR1,TMR2IF	; Exit ISR if it wasn't a TMR2 Overflow
	GOTO	C_RESTORE

	BCF	PIR1,TMR2IF	; RESET TIMER 2 INT FLAG


	BTFSC	TIMEOUT		; CHECK IF NOT TIMEOUT
	GOTO CONTIN1
	; DECREMENT TIMEOUT COUNTER
	DECF	TIME0, F
	BTFSS	STATUS, Z
	GOTO CONTIN1		; TIME0<>0
	DECF	TIME1, F
	BTFSS	STATUS, Z
	GOTO CONTIN1		; TIME1<>0
	BSF	TIMEOUT		; SET TIMEOUT=TRUE
CONTIN1:
	; BEEP COUNTER
	BTFSS	BEEP		; CHECK IF NOT BEEP
	GOTO CONTIN2
	DECF	scrA,F
	BTFSS	STATUS, Z
	GOTO CONTIN2		
	movlw	1
	xorwf	PORTC, F	; flip port C0
	MOVF	TIME2, W	; RELOAD DELAY
	MOVWF	scrA
CONTIN2:

	BTFSC	DONE
	GOTO	C_RESTORE	; Skip if done

;*****************************

	;TEST LEVEL of RC1 and set BYTE

	CLRF	BYTE
	BTFSS	PORTC, 1	
	GOTO	CONTINUE
PIN_HIGH
	COMF	BYTE, F
CONTINUE

;*****************************
;
;Get the expected Lowband Bits
;
;*****************************
	MOVLW	LOW	LOWBAND 
	ADDWF	TABLECOUNTER,W
	MOVLW	HIGH	LOWBAND
	BTFSC	STATUS,C
	ADDLW	1
	MOVWF	PCLATH
	
	MOVF	TABLECOUNTER,W
	CALL	LOWBAND

	CLRF	PCLATH
	MOVWF	LOWTEMPLATE
	MOVF	BYTE,W
	XORWF	LOWTEMPLATE, F	; APPLY INPUT OVER MASK
;*****************************
;
;Get the expected Highband Bits 
;
;*****************************
	MOVLW	LOW	HIGHBAND
	ADDWF	TABLECOUNTER,W
	MOVLW	HIGH	HIGHBAND
	BTFSC	STATUS,C
	ADDLW	1
	MOVWF	PCLATH
	
	MOVF	TABLECOUNTER,W
	CALL	HIGHBAND
	
	CLRF	PCLATH
	MOVWF	HIGHTEMPLATE
	MOVF	BYTE,W
	XORWF	HIGHTEMPLATE, F	; APPLY INPUT OVER MASK
;*******************************
;
;	LOWTEMPLATE AND HIGHTEMPLATE 
;	CONTAIN THE EXPECTED VALUES
;	FOR THE INCOMING BIT
;
;*******************************

	MOVLW	LOW A697SIN
	MOVWF	FSR		;ACCUMULATOR ADDR
	MOVLW	8
	MOVWF	SAMPLEBIT
COMPAREBITL
	RLF 	LOWTEMPLATE,F
	BTFSS	STATUS,C	
	GOTO	MATCHL
	DECF	INDF,F
	GOTO	CONTINL
MATCHL	
	INCF	INDF,F	
CONTINL
	INCF	FSR,F
	DECFSZ	SAMPLEBIT,F
	GOTO	COMPAREBITL	;FINISH THE BYTE

	MOVLW	LOW A1209SIN
	MOVWF	FSR		;ACCUMULATOR ADDR
	MOVLW	8
	MOVWF	SAMPLEBIT
COMPAREBITH
	RLF 	HIGHTEMPLATE,F
	BTFSS	STATUS,C	
	GOTO	MATCHH
	DECF	INDF,F
	GOTO	CONTINH
MATCHH	
	INCF	INDF,F	
CONTINH
	INCF	FSR,F
	DECFSZ	SAMPLEBIT,F
	GOTO	COMPAREBITH	;FINISH THE BYTE

;********************************
;
; Increment Tablecounter 0..255
;
;********************************
	
	INCF	TABLECOUNTER,F
	MOVF	TABLECOUNTER,W
	XORLW	D'255'		;This is the number of samples to test against (max 7f)
	BTFSS	STATUS,Z
	GOTO	C_RESTORE
	BSF	DONE
; DTMF DECISION ALGORITHM
; compute absolute value  acc = ABS(acc)
	
	MOVLW	H'30'	
	MOVWF	FSR
TESTFORNEG
	BTFSC	INDF,7
	GOTO	NEG
	GOTO	NEXT
NEG
;	SUBTRACT F FROM 0

	MOVF	INDF,W
	SUBLW	0
	MOVWF	INDF
NEXT
	INCF	FSR,F
	MOVF	FSR,W
	XORLW	H'40'
	BTFSS	STATUS,Z
	GOTO	TESTFORNEG

; add acumulator results for sin and cos

	MOVLW	H'30'
	MOVWF	FSR
MORERESULTS
	MOVF	INDF,W
	CLRF	INDF
	INCF	FSR,F
	ADDWF	INDF,F
	MOVF	FSR,W
	INCF	FSR,F
	XORLW	H'3F'
	BTFSS	STATUS,Z
	GOTO	MORERESULTS

; compare acc with 64 of 255 

	MOVLW	0X31
	MOVWF	FSR
TEMPX1
	MOVF	INDF,W
	SUBLW	D'64'		;THRESHOLD
	RRF	RESULT,F
	INCF	FSR,F
	INCF	FSR,F
	MOVF	FSR,W
	XORLW	0X41
	BTFSS	STATUS,Z
	GOTO 	TEMPX1		
	COMF	RESULT,F
; RESULT IS 1633/1477/1336/1209/941/852/770/697 FOR VALUE>64
; DECISION ALGORITHM : A VALUE MUST BE DETECTED AT LEAST 2-3 TIMES 
; BEFORE IS CONSIDERED VALID / 

	MOVF	RESULT, W
	XORWF	TEMP_VAL,W	; COMPARE RESULT WITH TEMP_VAL
	BTFSC	STATUS, Z
	GOTO 	DECI1		; ==
	
	CLRF	TEMP_TIMES	
	MOVF	RESULT,W 	; TEMP_TIMES = 0
	MOVWF	TEMP_VAL	; TEMP_VAL = RESULT
	GOTO	CLEANUP		; START AGAIN
DECI1
	MOVLW	0XFF
	XORWF	TEMP_TIMES,W	; COMPARE TEMP_TIMES/255
	BTFSC	STATUS,Z
	GOTO CLEANUP		; ==255, START AGAIN
	INCF TEMP_TIMES, F	; <> 255, INC TEMP_TIMES
DECI3	
	
	MOVLW	.1		; 2 TIMES DETECTED -1 

	XORWF	TEMP_TIMES,W
	BTFSS	STATUS,Z
	GOTO	CLEANUP		; <> START AGAIN
; GOT ONE VALUE 2 TIMES !!!!!!!!!!!
	CLRW
	XORWF	TEMP_VAL, W	; COMPARE TEMP_VAL / 0
	BTFSC	STATUS,Z
	GOTO CLEANUP		; ==0, START AGAIN
DECI2				; <>0

;**********************************************
; GOT ONE CHARACTER, CONVERT IT TO ASCII....
;**********************************************

	MOVF	RESULT,W	
	XORLW	D'17'
	BTFSC	STATUS,Z
	GOTO	GOTCHA1
	MOVF	RESULT,W
	XORLW	D'33'
	BTFSC	STATUS,Z
	GOTO	GOTCHA2
	MOVF	RESULT,W
	XORLW	D'65'
	BTFSC	STATUS,Z
	GOTO	GOTCHA3
	MOVF	RESULT,W
	XORLW	D'18'
	BTFSC	STATUS,Z
	GOTO	GOTCHA4
	MOVF	RESULT,W
	XORLW	D'34'
	BTFSC	STATUS,Z
	GOTO	GOTCHA5
	MOVF	RESULT,W
	XORLW	D'66'
	BTFSC	STATUS,Z
	GOTO	GOTCHA6
	MOVF	RESULT,W
	XORLW	D'20'
	BTFSC	STATUS,Z
	GOTO	GOTCHA7
	MOVF	RESULT,W
	XORLW	D'36'
	BTFSC	STATUS,Z
	GOTO	GOTCHA8
	MOVF	RESULT,W
	XORLW	D'68'
	BTFSC	STATUS,Z
	GOTO	GOTCHA9
	MOVF	RESULT,W
	XORLW	D'40'
	BTFSC	STATUS,Z
	GOTO	GOTCHA0
	MOVF	RESULT,W
	XORLW	D'72'
	BTFSC	STATUS,Z
	GOTO	GOTCHAPOUND
	MOVF	RESULT,W
	XORLW	D'24'
	BTFSC	STATUS,Z
	GOTO	GOTCHASTAR
; GOT ONLY TRASH...
	CLRF	TEMP_TIMES
	GOTO CLEANUP

; CONVERT ASCII	
	
GOTCHAPOUND
	MOVLW	H'23'
	GOTO	SENDIT
GOTCHASTAR
	MOVLW	H'2A'
	GOTO	SENDIT
GOTCHA1
	MOVLW	H'31'
	GOTO	SENDIT
GOTCHA2
	MOVLW	H'32'
	GOTO	SENDIT
GOTCHA3
	MOVLW	H'33'
	GOTO	SENDIT
GOTCHA4
	MOVLW	H'34'
	GOTO	SENDIT
GOTCHA5
	MOVLW	H'35'
	GOTO	SENDIT
GOTCHA6
	MOVLW	H'36'
	GOTO	SENDIT
GOTCHA7
	MOVLW	H'37'
	GOTO	SENDIT
GOTCHA8
	MOVLW	H'38'
	GOTO	SENDIT
GOTCHA9
	MOVLW	H'39'
	GOTO	SENDIT
GOTCHA0
	MOVLW	H'30'
	GOTO	SENDIT

SENDIT
	
	MOVWF	RESULT1		; PLACE RECEIVED CHAR IN RESULT1
	GOTO	C_RESTORE


CLEANUP
	MOVLW	0X2F		; start -1
	MOVWF	FSR
TEMPXX
	INCF	FSR,F
	CLRF	INDF
	MOVF	FSR,W
	XORLW	0X3F		; CLEAR RAM FROM 0X30-0X3F
	BTFSS	STATUS,Z
	GOTO	TEMPXX
			; table read pointer
	CLRF	TABLECOUNTER
	BCF	DONE		; CLEAR DONE, START 


;********************************
;
; Context Restore
;
;********************************

C_RESTORE
	CLRF	STATUS		;ENSURE BANK0 RESTORE
	MOVF	FSR_SAVE,W
	MOVWF	FSR
	MOVF	PCLATH_SAVE,W
	MOVWF	PCLATH		; RESTORE PCLATH
	SWAPF	STATUS_TEMP,W
	MOVWF	STATUS
	SWAPF	W_TEMP,F
	SWAPF	W_TEMP,W
	RETFIE

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷av一区二区三区软件| 欧美一区二区三区四区久久| 欧美日韩中文字幕一区| 精品精品国产高清a毛片牛牛| 日本一区二区综合亚洲| 亚洲影视资源网| 成人的网站免费观看| 欧美成人精品3d动漫h| 亚洲欧美一区二区不卡| 国产精品一区二区久久不卡| 91精品国产91久久久久久一区二区| 日本一区二区成人在线| 奇米精品一区二区三区在线观看一 | 久久嫩草精品久久久久| 午夜欧美2019年伦理| 99精品视频中文字幕| 久久久不卡影院| 久久精品国产秦先生| 717成人午夜免费福利电影| 一区二区成人在线观看| 91在线porny国产在线看| 久久久久久久久久久黄色| 麻豆成人久久精品二区三区红 | 日韩欧美不卡一区| 午夜欧美2019年伦理| 欧美日韩一二区| 美女mm1313爽爽久久久蜜臀| 欧美三级资源在线| 一个色在线综合| 日本韩国视频一区二区| 中文字幕亚洲精品在线观看 | 久久久精品人体av艺术| 美女www一区二区| 欧美精品一区在线观看| 国产一区二区三区在线观看精品 | 中文天堂在线一区| 国产成人在线免费观看| 久久精品无码一区二区三区 | 日本不卡不码高清免费观看| 欧美老年两性高潮| 蜜桃av噜噜一区| 久久久久久久久久久99999| 国内不卡的二区三区中文字幕| 精品国产91洋老外米糕| 美美哒免费高清在线观看视频一区二区 | 成人性生交大片免费看视频在线 | 成av人片一区二区| 国产精品久久福利| 色香色香欲天天天影视综合网| 亚洲一区二区三区影院| 欧美精品三级日韩久久| 国内精品视频一区二区三区八戒| 久久久精品影视| 色一情一乱一乱一91av| 美女视频黄久久| 国产精品欧美久久久久一区二区| 色88888久久久久久影院野外| 亚洲国产成人av网| 久久久久久久网| 在线观看av一区二区| 天天综合色天天综合色h| 久久久国际精品| 欧美在线观看一二区| 久久精品久久99精品久久| 国产精品看片你懂得| 制服.丝袜.亚洲.中文.综合| 国产丶欧美丶日本不卡视频| 一区二区久久久| 久久久亚洲高清| 欧洲一区在线电影| 国产成人综合网站| 日韩精彩视频在线观看| 国产精品欧美综合在线| 日韩欧美二区三区| 欧美性感一类影片在线播放| 国产一区二区精品在线观看| 亚洲精品大片www| 国产亚洲精品久| 69堂亚洲精品首页| 色av综合在线| 粉嫩13p一区二区三区| 视频一区二区国产| 亚洲三级小视频| 久久这里只有精品6| 欧美日韩一区精品| av成人老司机| 国产一区二区女| 麻豆精品视频在线观看| 夜夜精品视频一区二区| 中文字幕不卡三区| 日韩欧美成人激情| 91精品国产综合久久福利软件| 成人av动漫网站| 国产大片一区二区| 国产剧情一区在线| 激情综合色综合久久| 日韩中文字幕不卡| 亚洲成人高清在线| 亚洲综合区在线| 一区二区三区欧美日| 日韩一区欧美一区| 中文字幕乱码久久午夜不卡| 精品成人在线观看| 日韩精品在线看片z| 欧美一级日韩免费不卡| 在线不卡中文字幕播放| 欧美亚州韩日在线看免费版国语版| 99国产精品久久久久| 成人一区在线观看| 成人h动漫精品| 高清不卡一区二区在线| 国内不卡的二区三区中文字幕 | 成人免费视频播放| 国产电影一区二区三区| 国产成人无遮挡在线视频| 国产乱人伦精品一区二区在线观看| 精品一区二区在线视频| 久久av老司机精品网站导航| 麻豆高清免费国产一区| 国产露脸91国语对白| 成人免费视频一区二区| 91在线观看下载| 在线视频你懂得一区| 欧美精品一级二级| 日韩欧美在线影院| 国产亚洲欧美一级| 自拍偷拍国产精品| 亚洲综合999| 美女任你摸久久| 高清国产一区二区| 色综合久久99| 欧美日韩免费一区二区三区视频| 7777精品伊人久久久大香线蕉的| 欧美成人欧美edvon| 国产精品网站在线观看| 亚洲精品成a人| 久久精品国产在热久久| 成人激情免费视频| 欧美吻胸吃奶大尺度电影 | 亚洲欧洲另类国产综合| 亚洲一区二区欧美激情| 亚洲成人av一区二区| 国产精品一级片在线观看| 欧美精品一区二区三区视频| www.欧美色图| 欧美在线视频全部完| 91视频在线观看免费| 久久久久国产精品厨房| 久久精品国产秦先生| 欧美伦理视频网站| 亚洲综合男人的天堂| 91浏览器入口在线观看| 亚洲国产成人午夜在线一区| 国内成人精品2018免费看| 欧美xxxxx牲另类人与| 日韩专区一卡二卡| 欧美日韩国产影片| 午夜在线电影亚洲一区| 在线视频中文字幕一区二区| 亚洲精品国产一区二区精华液| 99视频在线精品| 成人免费在线播放视频| proumb性欧美在线观看| 国产精品女同互慰在线看| 成人一区二区三区视频| 国产网站一区二区三区| 国产精品中文有码| 26uuu国产电影一区二区| 国产综合色精品一区二区三区| 日韩欧美视频在线| 久草精品在线观看| 亚洲精品在线三区| 国产91清纯白嫩初高中在线观看| 日本一区二区三区国色天香| 粉嫩av一区二区三区| 综合亚洲深深色噜噜狠狠网站| a美女胸又www黄视频久久| 亚洲欧美偷拍另类a∨色屁股| 色乱码一区二区三区88| 亚洲一区二区欧美日韩| 337p亚洲精品色噜噜噜| 久久www免费人成看片高清| 久久精品视频一区二区| bt欧美亚洲午夜电影天堂| 亚洲视频一区二区在线| 欧美日韩在线直播| 蜜桃久久av一区| 国产精品免费丝袜| 91久久久免费一区二区| 日韩电影一区二区三区四区| 日韩视频在线一区二区| 国产成人av福利| 亚洲免费观看高清完整| 这里只有精品电影| 国产一区二区三区日韩| 亚洲日本欧美天堂| 欧美二区在线观看| 国产v综合v亚洲欧| 亚洲成人福利片| 日本一区二区三区高清不卡|