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

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

?? clearview007.asm

?? 電話遠程控制家電系統單片機開發電話遠程控制家電系統單片機開發
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
;	DTMF PWM GENERATOR v1.0
;	(c) 2004 Radu Constantinescu
;	constantinescuradu at yahoo.com
;	Free for Noncomercial use.
;
;	
;	DTMF SOFTWARE DECODER v2.0
;	(c) 2003-2004 Radu Constantinescu
;	constantinescuradu at yahoo.com
;	based on a David Hedley idea
;	
;	SERIAL ROUTINES with Buffer
; 	modified by Radu Constantinescu - eliminate calls in order to save stack space
; 	UART routines with TX and RX buffers By Tony K黚ek 2000-06-22 free for use	
;
;	PWM SIGNAL GENERATOR
;	timer 2 used to generate interupts at 9765.625hz
;	PWM1 output at 78.12hz
;
;	SOFTWARE DTMF DECODER 
;	modified Goertzel algorithm
;	timer 2 used to generate interupts at 9765.625hz
;	with 1X and 2X frequency bins
;
;	 
;
;
;	FOR 16F88 / 20 Mhz
;	F sample = 5000000/512 hz = 9765. 625 hz
;
;	RB3 OUT pin 9 PWM1 DTMF OUT - connect to a low pass filter
;	RA0 analog IN pin 17  DTMF/FSK INPUT (A/D) - RA0 Signal source must ve impedance lower thah 2K5
;	as per Microchip specifications and must have Vcc/2 bias.;
;
;	RB2 IN pin 8 Serial Rx
;	RB5 OUT pin 11 Serial Tx
;		
;	RB1 OUT pin 7 Interrupt Indicator ( =1 durring interrupt)
;	RB4	OUT	pin 10 FSK DCD - ACTIVE LOW
;	RB0 OUT pin 6 FSK DATA
; 
;
;	started JAN 31 2004
;
;	
;config bits
;2007	2762 
;2008	3ffc
; define treshods for the dtmf decoder
#define treshold1XL .240/4	; for 1X frequencies DTMF detector / 240 samples
#define treshold1XH .240/5	; for 1X frequencies DTMF detector / 240 samples
#define treshold2XL .113/3	; for 2X frequencies DTMF detector / 113 samples
#define treshold2XH .113/3	; for 2X frequencies DTMF detector / 113 samples
; 50 40 2
; 40 40 3 < best OF 126 - GOOD EXCEPT *
; 35 35 3

	RADIX DEC
#include <p16f88.inc>
#include <macro.asm>
; base frequency
XTAL_FREQ	EQU	20000000	; OSC freq in Hz
#include <serial.asm>
#include <tables.asm>



	CBLOCK 0x20
;****************************
; Bank0 Int Save
;****************************
PCLATH_SAVE:	1
STATUS_TEMP:	1
FSR_SAVE:	1

;****************************
; DTMF GENERATOR VARIALBLES
;****************************
PWMVAL:	1	; intermediate PWM Value (another temp register for interrupts can be used)
AccHH:	1	; Accumulator High High Frequency
AccLH:	1	; Accumulator Lo High Fequency
AccHL:	1	; Accumulator High Low Frequency
AccLL:	1	; Accumulator Lo Low Fequency
XAddHH:	1	; Acc Add High High Frequency
XAddLH:	1	; Acc Add Lo High frequency
XAddHL:	1	; Acc Add High Low Frequency
XAddLL:	1	; Acc Add Lo Low frequency
TempH:	1	; ISR Temp PWM value for High Frequency, reused in the DTMF Detector ISR for Temp Lowtemplate
TempL:	1	; ISR Temp PWM value for Low Frequency, reused in the DTMF Detector ISR for Temp Highemplate


; 	Freq	AddH	AddL	Error(%)
; 	1000	26		55		0.001692772
;	697	18		69		-0.01042912
;	770	20		47		-0.007402742
;	852	22		86		0.005680407
;	941	24		171		0.000885164
;	1209	31		177		-0.00569002
;	1336	35		6		0.002852743
;	1477	38		184		0.000209718
;	1633	42		207		0.001117896

;Frequency	1209	1336	1477	1633
;697		1		2		3		A
;770		4		5		6		B
;852		7		8		9		C
;941		*		0		#		D
 
;****************************
; SERIAL ROUTINES VARIABLES
;****************************

	; serial buffer RX and TX  pointers, buffers located in bank1

	RX_Buffer_InPtr:1	; where to put next incomming byte
	RX_Buffer_OutPtr:1	; where to get next ( first ) byte
	RX_Buffer_Count:1	; how many we have in buffer

	TX_Buffer_InPtr:1	; where to put next outgoing byte
	TX_Buffer_OutPtr:1	; whre to get next byte 
	TX_Buffer_Count:1	; how many we have in buffer
	TX_Temp:1		; temporary reg used while sending
	Flags:1			; flags for serial comunincation
	
	EE_Byte:1		; Temp var for EEProm Routines

	Temp:1			; temp byte ONLY to be used locally and no calls !
	FSRSAVE:1
;****************************
; DELAY ROUTINES VARIABLES
;****************************
	TIME0:	1		;DELAY COUNTER LSB
	TIME1:	1		;DELAY COUNTER MSB
;****************************
; DTMF DECODER ROUTINES VARIABLES
;****************************

	A697SIN:1
	A697COS:1	; ACCUMULATOR for 697 Hz sin
	A770SIN:1
	A770COS:1	; ACC
	A852SIN:1
	A852COS:1	; ACC
	A941SIN:1
	A941COS:1	; ACC
	A1209SIN:1
	A1209COS:1	;ACC
	A1336SIN:1
	A1336COS:1	;ACC
	A1447SIN:1
	A1447COS:1	;ACC
	A1633SIN:1
	A1633COS:1	;ACC
; double frequency bins
	A697SIN2:1
	A697COS2:1	; ACCUMULATOR for 697 Hz sin
	A770SIN2:1
	A770COS2:1	; ACC
	A852SIN2:1
	A852COS2:1	; ACC
	A941SIN2:1
	A941COS2:1	; ACC
	A1209SIN2:1
	A1209COS2:1	;ACC
	A1336SIN2:1
	A1336COS2:1	;ACC
	A1447SIN2:1
	A1447COS2:1	;ACC
	A1633SIN2:1
	A1633COS2:1	;ACC

	SAMPLEBIT:1
	TABLECOUNTER:1
	LOWTEMPLATE:1	; USED BY DTMF DETECTOR ISR - temp val for Lowfreq Table Value
	HIGHTEMPLATE:1	; USED BY DTMF DETECTOR ISR - temp val for Highfreq Table Value
	BYTE_DTMF:1
	RESULT1:1	; DECODED DIGIT OR 0
	RESULT:1	; USED BY DTMF DETECTOR ISR - result bits for 1X BINS
	RESULT2X:1	; USED BY DTMF DETECTOR ISR - result bits for 2X BINS
	FSR_SAVE_DTMF:1	; DTMF ISR ROUTINE TEMP Variable
	TEMP_VAL:1		
	TEMP_TIMES:1
	DTMF_RESULT:1	; LAST detected DTMF digit or '-'
	
	LASTBIT:1	; 0 OR 1(FF)
	BITCHANGES:1	; COUNT THE NUMBER OF BIT CHANGES, INCREMENT AT EACH INPUT BIT CHANGE

	ENDC
	
; ************* Bit variable definitions ***************************
	#define _BufferOverrun	Flags,0 ; Serial RX buffer overrun
	#define TIMEOUT		Flags,1 ; timeout flag
	#define DTMF_GEN_ON	Flags,2 ; DTMF GENERATOR ON/OFF
	#define GOT_ONE		Flags,3 ; GOT_ONE is set when at least a char is in the RxBuffer
	#define	DTMF_DONE	Flags,4	; 1 DTMF detector off / 0 - DTMF detector on
	#define	DTMF_DETECTED Flags, 5	; one DTMF digit detected in DTMF_RESULT
	#define	DTMF_RECOVER	Flags,6	; =1 do not send the next digit - just recover (used by the decision alg.)
	#define	Temp_Flag	Flags,7
; *** Bank1 *** 80 bytes, 64 used for Serial Buffers
	CBLOCK	0x0A0
	RX_Buffer:RX_BUFFER_SIZE	; buffer for rx - A0
	TX_Buffer:TX_BUFFER_SIZE	; buffer for tx - C0
	ENDC


;***********************************************
;Shared Ram
;***********************************************

	CBLOCK 0x71	; variables for all the RAM pages, skip 70 for ICD
	W_TEMP:	1	; int W save/shared Ram
	XcomA:	1
	XcomB:	1
	XcomC:	1
	

	temp1:	1	; temp value 1
	ENDC

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

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


	ORG	0X00
	NOP
	CLRF PCLATH	; Page 0
	CLRF STATUS	; BANK 0
	GOTO	START


INTERRUPT_VECTOR	
	ORG	0X04

;****************************
;
;	CONTEXT SAVE
;
;****************************

C_SAVE	MOVWF	W_TEMP
	SWAPF	STATUS,W
	CLRF	STATUS		;ENSURE BANK0 SAVE
	MOVWF	STATUS_TEMP
	
	BSF	PORTB, 1	; set interrupt indicator
	
	MOVF	PCLATH,W	; SAVE PCLATH
	MOVWF   PCLATH_SAVE

	MOVF	FSR, W
	MOVWF	FSR_SAVE

	BTFSS	PIR1,TMR2IF	; TMR2 Overflow Check
	GOTO	INT_TEST_RX_IRQ	; ; if not timer 2 then goto serial
;**********************
;Timer 2 ISR
;**********************
	BTFSC	DTMF_DONE
	GOTO	T2ISR_1		; Skip A/D input if dtmf detect is off

	CLRF	BYTE_DTMF	; input = 0
	BTFSC	ADRESH,7	; MSB bit of A/D	
	COMF	BYTE_DTMF, F	; input = 1
	
	BSF 	ADCON0, GO	; start a new conversion

;	clrw
;	xorwf	BYTE_DTMF, W
;	btfsC	STATUS, Z
;	BCF		PORTB, 0

;	MOVLW	.255
;	xorwf	BYTE_DTMF, W
;	btfsC	STATUS, Z
;	BSF		PORTB, 0
	
	; COMPARE  input AND lastbit
;	MOVF	LASTBIT, W
;	XORWF	BYTE_DTMF,W
;	BTFSC	STATUS, Z
;	GOTO	LASTBITEND
;	;  IF input <> lastbit
;	INCF	BITCHANGES,	F	; INCREMENT THE NUMBER OF BITCHANGES
;	; LASTBIT = INPUT
;	MOVF	BYTE_DTMF, W
;	MOVWF	LASTBIT
LASTBITEND


	
T2ISR_1
	BCF	PIR1,TMR2IF	; RESET TIMER 2 INT FLAG
	BTFSS	DTMF_GEN_ON	; dtmf generator is on?
	GOTO	DTMF_DETECT	; no, skip to DTMF detect ISR
;**********************
; DTMF GENERATOR ISR
;**********************
; Update High Frequency Generator Accumulator
	MOVF	XAddLH,W	;	Low constant High Frequency
	ADDWF	AccLH,F	;	Add to the low accumulator byte, High Frequency
	MOVF	XAddHH,W	;	High constant High Frequency
	BTFSC	STATUS,C
	ADDLW	1		; 	ADD carry
	ADDWF	AccHH,F	; 	Add to the high accumulator byte, High Frequency
; Update Low Frequency Generator Accumulator
	MOVF	XAddLL,W	;	Low constant Low Frequency
	ADDWF	AccLL,F	;	Add to the low accumulator byte, Low Frequency
	MOVF	XAddHL,W	;	High constant Low Frequency
	BTFSC	STATUS,C
	ADDLW	1		; 	ADD carry
	ADDWF	AccHL,F	; 	Add to the high accumulator byte, Low Frequency

GetSinVal:	; Read the Value from a 128 entries sin table
	;necessary only if table is not alligned
	;MOVLW	LOW GetSinTab
	;ADDWF	ACCH,W	; just set carry
	MOVLW	HIGH GetSinTab
	;BTFSC STATUS,C
	;ADDLW 1
	MOVWF	PCLATH
	MOVF	AccHH,W	; get index
	ANDLW	B'01111111'	; mask upper bit 0-127 only
	CALL	GetSinTab
	; add sign
	BTFSS	AccHH,7	; 2's coplement 256-value if <0
	GOTO	DTMFISR1
	CLRF	TempH
	SUBWF	TempH,W
DTMFISR1:
	MOVWF	TempH	;	Store temp pwm val for high freq
	MOVF	AccHL,W	; get index
	ANDLW	B'01111111'	; mask upper bit 0-127 only
	CALL	GetSinTab
	MOVWF	TempL	;	Store temp pwm val for low freq
	BCF		STATUS, C	; Clear Carry
	RRF		TempL,F	; TempL=TempL/2
	BCF		STATUS, C	; Clear Carry
	RRF		TempL,W	; TempL=TempL/2, result in W
	ADDWF	TempL,W	; TempL = 0.75 TempL --> Low frequency amplitude should be 3dB (0.707) lower than high frequency amplitude, resul in W
	; add sign
	BTFSS	AccHL,7	; 2's coplement 256-value if <0
	GOTO	DTMFISR2
	CLRF	TempL
	SUBWF	TempL,W
DTMFISR2:
	;MOVWF	TempL	;	Store temp pwm val for low freq		

	ADDWF	TempH,W	;	XcomBined PWM Value in W

	ADDLW	128	; 128+w --> value=128+PWM value
	; +50 = 128+50
	; -50 --> hCE+h80=H14e, h4e=78 = 128-50
	; index was 128-255 --> value=128-table read


	CLRF	PCLATH

SetPWMVal:	; set PWM val to W, PWMVAL=CCPR1L<5,0>,CCP1CON<5,4>
	MOVWF	PWMVAL	; temporary
	BCF	CCP1CON,4	; clear CCP1CON<5,4>
	BCF	CCP1CON,5
	RRF	PWMVAL,F	; rotate right with carry
	BTFSC	STATUS,C
	BSF	CCP1CON,4	; store carry in CCP1Con<4>
	RRF	PWMVAL,W
	BTFSC	STATUS,C
	BSF	CCP1CON,5	; store carry in CCP1Con<5>
	ANDLW	B'00111111'
	MOVWF	CCPR1L		; store 6 MSB bits in CCPR1L<5,0>
	; continue to Dtmf Detector ISR

;**********************
; DTMF DETECTOR ISR
;**********************
DTMF_DETECT
	BTFSC	DTMF_DONE
	GOTO	DTMF_ISR_END	; Skip dtmf detect isr if done=1, goto delay ISR

	; input value  in DTMF_BYTE = 00 or FF

;*****************************
;
;Get the expected Lowband Bits
;
;*****************************
	MOVLW	LOW	LOWBAND 
	ADDWF	TABLECOUNTER,W	; add low lowband + tablecounter with carry
	MOVLW	HIGH	LOWBAND	; to pclath
	BTFSC	STATUS,C
	ADDLW	1
	MOVWF	PCLATH		; if the table will be alligned to a 256 boundary this will nor be necessary
	; read 1X template
	MOVF	TABLECOUNTER,W
	CALL	LOWBAND			; read table
	;CLRF	PCLATH
	MOVWF	LOWTEMPLATE
	MOVF	BYTE_DTMF,W
	XORWF	LOWTEMPLATE, F	; APPLY INPUT OVER MASK
	
	; read 2X template - must use TABLECOUNTER X 2 as pointer
	MOVF	TABLECOUNTER,W
	;clear carry
	bcf		STATUS, C		; Carry=0
	rlf		TABLECOUNTER,W	; TABLECOUNTER X 2 > W
	CALL	LOWBAND			; read table
	MOVWF	TempL
	MOVF	BYTE_DTMF,W
	XORWF	TempL, F	; APPLY INPUT OVER MASK

	;CLRF	PCLATH	; clear pclath before any GOTO
;*****************************
;
;Get the expected Highband Bits 
;
;*****************************
	MOVLW	LOW	HIGHBAND
	ADDWF	TABLECOUNTER,W
	MOVLW	HIGH	HIGHBAND
	BTFSC	STATUS,C
	ADDLW	1
	MOVWF	PCLATH
	; read 1X template
	MOVF	TABLECOUNTER,W
	CALL	HIGHBAND
	
	;CLRF	PCLATH
	MOVWF	HIGHTEMPLATE
	MOVF	BYTE_DTMF,W
	XORWF	HIGHTEMPLATE, F	; APPLY INPUT OVER MASK

	; read 2X template - must use TABLECOUNTER X 2 as pointer
	MOVF	TABLECOUNTER,W
	;clear carry
	bcf		STATUS, C		; Carry=0
	rlf		TABLECOUNTER,W	; TABLECOUNTER X 2 > W
	CALL	HIGHBAND		; read table
	MOVWF	TempH
	MOVF	BYTE_DTMF,W
	XORWF	TempH, F	; APPLY 2X frequencies Mask over the 1X frequencies result

	CLRF	PCLATH	; clear pclath before any GOTO.......
;*******************************
;
;	LOWTEMPLATE AND HIGHTEMPLATE 
;	CONTAIN THE EXPECTED VALUES
;	FOR THE INCOMING BIT
;
;*******************************


; do it for the 1Xfreq bins
	MOVLW	LOW A697SIN
	MOVWF	FSR		;ACCUMULATOR ADDR in pointer FSR
	MOVLW	8
	MOVWF	SAMPLEBIT	; samplebit is the number of the bit being tested
COMPAREBITL
	RLF 	LOWTEMPLATE,F
	BTFSS	STATUS,C	
	GOTO	MATCHL
	DECF	INDF,F	; decrement accumulator 
	GOTO	CONTINL
MATCHL	
	INCF	INDF,F	
CONTINL
	INCF	FSR,F	; increment pointer - next accumulator
	DECFSZ	SAMPLEBIT,F	; next bit
	GOTO	COMPAREBITL	;FINISH THE BYTE


;	MOVF	TABLECOUNTER,W
;	SUBLW	.66-1		; 0-65=66 SAMPLES This is the number of samples to test against (max 127)
					; this will go from 0 to 125 and stop at 126, a total of 126 samples
					;treshold-w--> W, carry=0 on borrow,
					; W=31 carry=0, W=30 carry=1, W=29 carry=1!
					; therefore C is 0  for W > treshold
	BTFSS	STATUS,C
	GOTO	SKIPHI1X


	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

SKIPHI1X
; do it again for the 2Xfreq bins
	; SKIP 2X IF TABLECOUNTER>113
	MOVF	TABLECOUNTER,W
	SUBLW	.113-1		;This is the number of samples to test against (max 127)
					; this will go from 0 to 125 and stop at 126, a total of 126 samples
					;treshold-w--> W, carry=0 on borrow,
					; W=31 carry=0, W=30 carry=1, W=29 carry=1!
					; therefore C is 0  for W > treshold
	BTFSS	STATUS,C
	GOTO	SKIPHI2X


	MOVLW	LOW A697SIN2
	MOVWF	FSR		;ACCUMULATOR ADDR in pointer FSR
	MOVLW	8
	MOVWF	SAMPLEBIT	; samplebit is the number of the bit being tested
COMPAREBITL2
	RLF 	TempL,F
	BTFSS	STATUS,C	
	GOTO	MATCHL2
	DECF	INDF,F	; decrement accumulator 
	GOTO	CONTINL2
MATCHL2	
	INCF	INDF,F	
CONTINL2
	INCF	FSR,F	; increment pointer - next accumulator
	DECFSZ	SAMPLEBIT,F	; next bit
	GOTO	COMPAREBITL2	;FINISH THE BYTE

;	MOVF	TABLECOUNTER,W
;	SUBLW	.66-1		;This is the number of samples to test against (max 127)
					; this will go from 0 to 125 and stop at 126, a total of 126 samples
					;treshold-w--> W, carry=0 on borrow,
					; W=31 carry=0, W=30 carry=1, W=29 carry=1!
					; therefore C is 0  for W > treshold
;	BTFSS	STATUS,C
;	GOTO	SKIPHI2X



	MOVLW	LOW A1209SIN2
	MOVWF	FSR		;ACCUMULATOR ADDR
	MOVLW	8
	MOVWF	SAMPLEBIT
COMPAREBITH2
	RLF 	TempH,F
	BTFSS	STATUS,C	
	GOTO	MATCHH2
	DECF	INDF,F
	GOTO	CONTINH2
MATCHH2	
	INCF	INDF,F	
CONTINH2
	INCF	FSR,F
	DECFSZ	SAMPLEBIT,F
	GOTO	COMPAREBITH2	;FINISH THE BYTE

SKIPHI2X

;********************************
;
; Increment Tablecounter 0..255
;
;********************************
	
	INCF	TABLECOUNTER,F
	MOVF	TABLECOUNTER,W
	XORLW	.240		;This is the number of samples to test against (max 127)
					; this will go from 0 to 125 and stop at 126, a total of 126 samples
	BTFSS	STATUS,Z
	GOTO	DTMF_ISR_END
	BSF		DTMF_DONE


DTMF_ISR_END

;**********************
; Delay ISR
;**********************
; TIME1:TIME0 counter will be decremented each Timer2 Tick,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区在线观看| 91视频免费观看| 欧美乱妇15p| 亚洲尤物视频在线| 99精品欧美一区| 国产精品欧美极品| 成人免费毛片高清视频| 久久久91精品国产一区二区精品| 激情六月婷婷综合| 欧美成人在线直播| 伦理电影国产精品| 欧美成人精品二区三区99精品| 日韩经典中文字幕一区| 制服丝袜日韩国产| 奇米色一区二区| 日韩视频一区在线观看| 免费成人结看片| 日韩精品一区二| 国产资源在线一区| 久久精品男人天堂av| 成熟亚洲日本毛茸茸凸凹| 国产日产欧美一区二区三区| 成人免费视频视频在线观看免费| 欧美激情综合五月色丁香 | 亚洲午夜免费福利视频| 欧美日韩国产综合久久| 日日摸夜夜添夜夜添精品视频| 5月丁香婷婷综合| 激情另类小说区图片区视频区| 精品欧美乱码久久久久久| 国产精品一级黄| 中文字幕一区二区三区不卡在线| 色综合天天综合网国产成人综合天| 一区二区三区美女视频| 欧美日韩一级片网站| 日本sm残虐另类| 久久久国际精品| 91麻豆免费观看| 99国内精品久久| 亚洲综合一二区| 欧美一区二区三区在线观看| 久久99九九99精品| 国产欧美中文在线| 91久久精品一区二区| 日韩av中文在线观看| 久久综合久久综合久久| 99久久精品免费看国产| 亚洲丶国产丶欧美一区二区三区| 日韩欧美在线不卡| 成人午夜碰碰视频| 亚洲狠狠爱一区二区三区| 欧美本精品男人aⅴ天堂| 懂色av一区二区三区免费看| 一区二区三区不卡视频| 日韩欧美黄色影院| 91在线精品一区二区三区| 日韩主播视频在线| 久久久国产精品不卡| 在线观看国产91| 极品少妇xxxx精品少妇偷拍| 亚洲人成伊人成综合网小说| 91精品国产综合久久精品图片| 国产成人一区二区精品非洲| 亚洲自拍偷拍av| 欧美精品一区二| 欧美中文字幕一区二区三区 | 成人高清视频在线| 五月婷婷欧美视频| 国产欧美一区二区精品秋霞影院| 欧美少妇bbb| 国产成人av电影在线| 亚洲va欧美va天堂v国产综合| 久久久久久久免费视频了| 欧亚洲嫩模精品一区三区| 国内久久婷婷综合| 亚洲午夜电影在线| 国产精品网站在线| 日韩欧美专区在线| 日本高清不卡aⅴ免费网站| 韩国成人在线视频| 亚洲一区二区三区爽爽爽爽爽| 久久久久久久久久久黄色| 欧美三级电影在线看| 成人中文字幕合集| 麻豆国产精品777777在线| 一区二区三区小说| 亚洲国产高清在线观看视频| 91精品国产高清一区二区三区| 色综合天天视频在线观看| 国产精品18久久久久久久久| 亚洲18女电影在线观看| 中文字幕日本乱码精品影院| 日韩欧美在线不卡| 欧美日韩美女一区二区| 99久久777色| 国产成人精品1024| 久久福利视频一区二区| 亚洲午夜电影在线观看| 亚洲天堂av一区| 国产欧美日韩激情| 精品理论电影在线观看| 91麻豆精品国产综合久久久久久| 91麻豆高清视频| 粉嫩欧美一区二区三区高清影视| 蜜臀av性久久久久蜜臀av麻豆 | 欧美激情一区二区三区蜜桃视频 | 91精彩视频在线| 成人av在线一区二区三区| 国内外成人在线| 美洲天堂一区二卡三卡四卡视频 | 555www色欧美视频| 色av成人天堂桃色av| av在线综合网| 成人伦理片在线| 粉嫩av一区二区三区| 国产一区二区三区在线观看精品| 人妖欧美一区二区| 日韩精品乱码免费| 丝袜诱惑制服诱惑色一区在线观看| 亚洲综合在线视频| 亚洲精品菠萝久久久久久久| 中文字幕佐山爱一区二区免费| 国产农村妇女毛片精品久久麻豆 | 日韩视频中午一区| 欧美一区二区三区四区久久| 欧美精品日韩综合在线| 欧美顶级少妇做爰| 欧美精品在线一区二区| 777亚洲妇女| 日韩无一区二区| 欧美大尺度电影在线| 日韩精品一区在线| 精品国产123| 欧美精品一区二区高清在线观看| 精品国产乱子伦一区| 久久伊人蜜桃av一区二区| 久久久蜜臀国产一区二区| 国产喂奶挤奶一区二区三区| 国产无人区一区二区三区| 国产欧美日产一区| 国产精品视频免费| 中文字幕五月欧美| 亚洲精品五月天| 亚洲国产毛片aaaaa无费看| 性欧美疯狂xxxxbbbb| 日韩av在线播放中文字幕| 麻豆国产精品视频| 国产精品一区二区x88av| 成人精品高清在线| 色婷婷av一区二区三区软件| 欧美色图在线观看| 日韩视频一区在线观看| 久久久久综合网| 国产精品久久影院| 亚洲精品中文字幕在线观看| 亚洲一区二区视频在线| 免费成人在线网站| 国产福利不卡视频| 97se亚洲国产综合自在线| 色狠狠综合天天综合综合| 欧美美女黄视频| 日韩免费高清av| 国产日本一区二区| 亚洲精品成人少妇| 美腿丝袜亚洲色图| 国产精品亚洲午夜一区二区三区 | 国产精品久久久久久亚洲伦 | 欧美激情综合网| 亚洲激情在线激情| 日韩成人精品在线| 国产曰批免费观看久久久| heyzo一本久久综合| 欧美日韩免费电影| 欧美精品一区二区蜜臀亚洲| 综合色天天鬼久久鬼色| 一区二区三区在线免费视频| 日韩在线一区二区三区| 国产精品资源网| 中文字幕色av一区二区三区| 五月天久久比比资源色| 精品一区二区三区av| 91麻豆国产福利在线观看| 欧美一区二区三区日韩| 国产精品午夜免费| 午夜成人在线视频| 成人一级黄色片| 欧美喷水一区二区| 久久精品亚洲精品国产欧美kt∨| 亚洲激情校园春色| 国产呦萝稀缺另类资源| 91久久香蕉国产日韩欧美9色| 日韩欧美在线观看一区二区三区| 日韩一区欧美一区| 视频一区二区中文字幕| 懂色中文一区二区在线播放| 欧美日韩精品一区二区| 国产欧美一区二区三区在线看蜜臀| 亚洲一区二区三区国产| 国产精品一区二区免费不卡| 欧美专区日韩专区|