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

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

?? vfd.c

?? 一款收款機C源代碼!因為是幾年前的代碼了
?? C
字號:
///////////////////////////////////////////////////////////////////////////////
// 										vfd.c
//
// Copyright (c) 2004, WeiHua Technology Co., Ltd.
// All rights reserved.
//
// Created by:		Chen Huahai		2004-08-23
//
// Desription: 
//		VFD顯示,是通過串行接口經串并轉換電路后驅動顯示的,三芯片共24端口輸出,其中20端口有效輸出.
//		Input ==> {A,B,C,D,E,F,G,H} - {A,B,C,D,E,F,G,H} - {A,B,C,D,E,F,G,H}
//					 {G10, G9, ...    G2, G1} - {P10, P9, ... P2, P1} - {invalid}
//							位驅動								段驅動
//		低電平驅動.
///////////////////////////////////////////////////////////////////////////////
#include "ecrsys.h"
#include "vfd.h"
#include <string.h>

#ifdef OLD_VFD
#define	VFD_DRV_IO				1
#define	VFD_DRV_SERIAL			2


volatile byte		vfddisBuf[VFD_BIT_NUM][3];
volatile byte 		vfd_tmp_buf[3];
volatile byte 	VFD_Buff[VFD_BIT_NUM];			// The VFD buffer, store the last display data
//byte		vfd_lcd_Disp;						// VFD or LCD display
byte		vfd_drv_mode;						// VFD driver mode : IO / Serial
volatile byte	bk_vfddisBuf[VFD_BIT_NUM][3];		// 正常程序的顯示備份,用于打印機異常期間保存原顯示.
byte	bk_main_vfddisBuf[VFD_BIT_NUM][3];	// 正常程序的顯示備份,用于主程序保存及恢復顯示.

byte const vfdBitBuf[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
const byte disbuf[] = {
		0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, // "0123456789"
		VFD_CHAR_SPACE, // ' '
		VFD_CHAR_MINUS,	// '-'
		VFD_CHAR_A, VFD_CHAR_b, VFD_CHAR_C, VFD_CHAR_d, VFD_CHAR_E,
		VFD_CHAR_F, VFD_CHAR_G, VFD_CHAR_H, VFD_CHAR_I, VFD_CHAR_J,
		VFD_CHAR_SPACE, VFD_CHAR_L, VFD_CHAR_SPACE, VFD_CHAR_n, VFD_CHAR_O,
		VFD_CHAR_P, VFD_CHAR_SPACE, VFD_CHAR_R, VFD_CHAR_S, VFD_CHAR_t,
		VFD_CHAR_U, VFD_CHAR_SPACE, VFD_CHAR_SPACE, VFD_CHAR_SPACE, 
		VFD_CHAR_y, VFD_CHAR_Z 
	};
const byte posCvt[] = {8,9,0,1,2,3,4,5,6,7};

///////////////////////////////////////////////////////////////////////////////
//									VFD特殊符號(逗號及下劃線)顯示驅動.
///////////////////////////////////////////////////////////////////////////////
volatile byte vfdCommaAndUnderline[VFD_BIT_NUM];

#define		VFD_COMMA_DIS			(0x01 << 4)
#define		VFD_COMMA_EN			(~(0x01 << 4))
#define		VFD_UNDERLINE_DIS		(0x01 << 5)
#define		VFD_UNDERLINE_EN		(~(0x01 << 5))

// private function
void DispComma(byte pos);
void ClrDispComma(byte pos);
void ClsDispComma(void);
void DispUnderline(byte pos);
void ClrDispUnderline(byte pos);
void ClsDispUnderline(void);
void disint(void);
void enint(void);

static bool m_VfdOn = true;
void Vfd_On(void)
{
	m_VfdOn = true;
}

void Vfd_Off(void)
{
	m_VfdOn = false;
}

#define	IsVfdOn()	(m_VfdOn)

///////////////////////////////////////////////////////////////////////////////
// Description:Insert period to VFD
// In Param:	pos
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void Vfd_InsPeriod(byte pos)
{
    Vfd_DispChar(pos, VFD_Buff[pos], 1);
}

///////////////////////////////////////////////////////////////////////////////
// Description: Clear period
// In Param:	pos
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void Vfd_ClrPeriod(byte pos)
{
   	Vfd_DispChar(pos, VFD_Buff[pos], 0);
}

///////////////////////////////////////////////////////////////////////////////
// Description: drive VFD via Serial
// In Param:	void
// Out Param:	void
// Return:		void
// Description:	FOSC == 11M, u2brg = 3, 本函數執行時間為45us(示波器查看).
///////////////////////////////////////////////////////////////////////////////
void Vfd_WriteStr_Serial(void)
{
	// 先關閉VFD顯示.
	u2tb = 0xff;
	while (!ti_u2c1);
	u2tb = 0xff;
	while (!ti_u2c1);
	u2tb = 0xff;
	while (!ti_u2c1);

	// 等待發送完畢,立即鎖存.
	while (!txept_u2c0);
	VFD_CLR = 0;
	VFD_CLR = 1;

	// 再送下一位顯示數據.
	u2tb = vfd_tmp_buf[0];
	while (!ti_u2c1);
	u2tb = vfd_tmp_buf[1];
	while (!ti_u2c1);
	u2tb = vfd_tmp_buf[2];
	while (!ti_u2c1);

	// 等待發送完畢,立即鎖存.
	while (!txept_u2c0);
	VFD_CLR = 0;
	VFD_CLR = 1;
}

///////////////////////////////////////////////////////////////////////////////
// Description: drive VFD via Normal I/O lines
// In Param:	void
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void Vfd_WriteStr(void)
{
//	asm("jsr.a 1e00h");

//	if (vfd_drv_mode == VFD_DRV_IO)
//	{
//		asm("jsr.a 1e00h");
//	}
//	else if (vfd_drv_mode == VFD_DRV_SERIAL)
//	{
		Vfd_WriteStr_Serial();
//	}
//	else
//	{
//	}
}

///////////////////////////////////////////////////////////////////////////////
// Description: Vfd display initial
// In Param:	void
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void Vfd_Init(void)
{
   pd7 = 0xFF;

	VFD_CLR_DIR = 1;
	VFD_CLK_DIR = 1;
	VFD_DI_DIR  = 1;

//	if (Hw_GetVer() == HW_V2)
	{
		vfd_drv_mode = VFD_DRV_IO;
	}
//	else
//	{
//		vfd_drv_mode = VFD_DRV_SERIAL;				// 新版本用同步串口方式驅動.
//	}
	Vfd_Clr();

	ClsDispComma();
	ClsDispUnderline();

//   if (vfd_drv_mode == VFD_DRV_SERIAL)
   {
//	   pd7_3 = 0;
	   // need set A/B/C register
	   ps1_0 = 1;					// TxD2 output
		psl1_0 = 0;					// TxD2 port
	
//	   ps1_1 = 0;					// RxD2 as I/O
	
		ps1_2 = 1;					// CLK2 func select enable
		psl1_2 = 0;
		psc_0 = 0;					// CLK2 output
	
	   // MODE: set data format,set start bit and stop bit
	   u2mr = 0x01;			   // set baud rate: BRG's source and BRG's value
	   u2c0 = 0x10;				// LSB, f1, 2 division, 10M/2 = 5M
//	   ckpol_u2c0 = 1;			// transfer data at rising edge of clock
	   u2brg = 7;					// if FOSC == 14M, {7} is OK!
//	   s2tic = 0x05;           // set serial IPL,enable interrupt
//	   u2c1 = 0x05;            // enable Tx

		te_u2c1 = 1;            // enable Tx
	   u2irs = 1;              // cause by TI = 1(transmit completed)
	}
	
//	tb1mr = 0x40;						// f8, disable gate, timer mode
//	tb1 	= 500 * FOSC / 8;			// set timer B1 initial value
//	tb1ic = 0x05;
//	tb1s = 1;							// Start timer B1
}

///////////////////////////////////////////////////////////////////////////////
// Description: VFD clear all display
// In Param:	
// Out Param:	
// Return:		
///////////////////////////////////////////////////////////////////////////////
void Vfd_Clr(void)
{
	byte i;
	
	for (i=0; i<VFD_BIT_NUM; i++)
	{
		Vfd_DispChar(i, ' ', 0);
	}
}

///////////////////////////////////////////////////////////////////////////////
// Description: display into VFD
// In Param:	posi, dsp_char, dot
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void Vfd_DispChar(byte pos, byte temp, byte dots)
{
	extern volatile bool bPrnProtectEnable;
	byte cmdbuf[5];
	byte tmpPos;
	byte tmpPos2 = pos;
   
	VFD_Buff[pos] = temp;
	
	tmpPos = 9 - pos;
	pos = posCvt[tmpPos];

	if ((temp >= '0') && (temp <= '9'))
	{
		temp = disbuf[temp-'0'];
	}
	else if ((temp >= 0x0A) && (temp <= 0x0F))
	{
		temp -= 0x0A;
		temp = disbuf[temp+12];
	}
	else if ((temp >= 'a') && (temp <= 'z'))
	{
		temp -= 'a';
		temp = disbuf[temp+12];
	}
	else if ((temp >= 'A') && (temp <= 'Z'))
	{
		temp -= 'A';
		temp = disbuf[temp+12];
	}
	else if (temp == ' ')
	{
		temp = disbuf[10];
	}
	else if (temp == '-')
	{
		temp = disbuf[11];
	}
	else if(temp == '.')
	{
		temp = VFD_CHAR_DEC;
	}
	else if (temp <= 9)
	{
		temp = disbuf[temp];
	}
	else
	{
		VFD_Buff[tmpPos2] = ' ';
		return;
	}
	
	if (dots != 0)
	{
		temp &= 0x7f;
	}

	if (pos <= 7)
	{
		cmdbuf[0] = temp << 4;
		if ((cmdbuf[0] & 0x10) == 0x10)
		{
			cmdbuf[0] += 0x0f;
		}
		cmdbuf[1] = (temp >> 4) + 0xf0;
		cmdbuf[2] = ~(0x01 << pos);
	}
	else if (pos <= 9)
	{
		cmdbuf[0] = temp << 4;
		if ((cmdbuf[0] & 0x10) == 0x10)
		{
			cmdbuf[0] += 0x0f;
		}
		if (pos == 8)
			cmdbuf[1] = (temp >> 4) + 0xB0;
		else
			cmdbuf[1] = (temp >> 4) + 0x70;
		cmdbuf[2] = 0xff;
	}
	else
	{
		return;
	}

	#if 0
   if (bPrnProtectEnable)
	#else
	if (0)
	#endif
   {
   	disint();
		memcpy(bk_vfddisBuf[tmpPos], cmdbuf, 3);
		enint();
   }
   else
   {
		ta0s = 0;	//	disint();
		memcpy(vfddisBuf[tmpPos], cmdbuf, 3);
		ta0s = 1;	// enint();
	}
}

/*
	保存VFD顯示數據. (中斷調用)
*/
void StoreVfdDisp(void)
{
	memcpy(bk_vfddisBuf, vfddisBuf, sizeof(vfddisBuf));
}

/*
	恢復VFD顯示數據. (中斷調用)
*/
void RestoreVfdDisp(void)
{
	memcpy(vfddisBuf, bk_vfddisBuf, sizeof(vfddisBuf));
}

/*
	保存VFD顯示數據. (主程序調用)
*/
void Main_StoreVfdDisp(void)
{
	memcpy(bk_main_vfddisBuf, vfddisBuf, sizeof(vfddisBuf));
}

/*
	恢復VFD顯示數據. (主程序調用)
*/
void Main_RestoreVfdDisp(void)
{
	memcpy(vfddisBuf, bk_main_vfddisBuf, sizeof(vfddisBuf));
}



///////////////////////////////////////////////////////////////////////////////
// Description: Copy function "Vfd_WrtStrEx" to Internal RAM.
// In Param:	void
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void Vfd_CopyFuncToRam(void)
{
	extern dword softRtcAddr;
	
	asm("mov.l #_Vfd_WrtStrEx, _softRtcAddr");
	memcpy((byte *)0x1e00, (byte *)softRtcAddr, 0x100);
}

///////////////////////////////////////////////////////////////////////////////
// Description: 刷新VFD顯示,在系統定時中斷中調用.
// In Param:	void
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void Vfd_WrtStrEx(void)
{
	volatile byte *cmdbuf = vfd_tmp_buf;
	byte i, j;
	byte temp;

	//asm("fclr i");
	// 設置中斷允許優先級與打印中斷平行,即屏蔽打印中斷.
	asm("ldipl #4");										
	for (i=3; i>0; i--)
	{
		temp = *cmdbuf++;
		
		if (i == 3)
		{
			temp >>= 3;
		}
		else
		{
	   		VFD_CLK = 0;
	   		if (temp & 0x01)	VFD_DI = 1;
	      	else	      		VFD_DI = 0;
	   		temp >>= 1;
		   	VFD_CLK = 1;

	   		VFD_CLK = 0;
	   		if (temp & 0x01)	VFD_DI = 1;
	      	else	      		VFD_DI = 0;
	   		temp >>= 1;
		   	VFD_CLK = 1;

	   		VFD_CLK = 0;
	   		if (temp & 0x01)	VFD_DI = 1;
	      	else	      		VFD_DI = 0;
	   		temp >>= 1;
		   	VFD_CLK = 1;
		}

		VFD_CLK = 0;
		if (temp & 0x01)	VFD_DI = 1;
   	else	      		VFD_DI = 0;
		temp >>= 1;
   	VFD_CLK = 1;

		VFD_CLK = 0;
		if (temp & 0x01)	VFD_DI = 1;
   	else	      		VFD_DI = 0;
		temp >>= 1;
   	VFD_CLK = 1;

		VFD_CLK = 0;
		if (temp & 0x01)	VFD_DI = 1;
   	else	      		VFD_DI = 0;
		temp >>= 1;
   	VFD_CLK = 1;

		VFD_CLK = 0;
		if (temp & 0x01)	VFD_DI = 1;
   	else	      		VFD_DI = 0;
		temp >>= 1;
   	VFD_CLK = 1;

		VFD_CLK = 0;
		if (temp & 0x01)	VFD_DI = 1;
   	else	      		VFD_DI = 0;
		temp >>= 1;
   	VFD_CLK = 1;
	}
	VFD_CLR = 0;
	VFD_CLR = 0;
	VFD_CLR = 1;
	//asm("fset i");
	// 恢復中斷允許優先級,即重設為系統定時中斷的優先級.
	asm("ldipl #3");
}

///////////////////////////////////////////////////////////////////////////////
// Description: Close Vfd display
// In Param:	void
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void Vfd_Cls(void)
{
	vfd_tmp_buf[0] = 0xFF;							// clear VFD
	vfd_tmp_buf[1] = 0xFF;
	vfd_tmp_buf[2] = 0xFF;
	Vfd_WriteStr();
}

///////////////////////////////////////////////////////////////////////////////
// Description: 刷新VFD顯示,在系統定時中斷中調用本函數.
// In Param:	
// Out Param:	
// Return:		
///////////////////////////////////////////////////////////////////////////////
void Vfd_Flush(void)
{
   volatile static byte vfdScanCnt = 0; 

   if (IsVfdOn())
   {
		vfd_tmp_buf[0] = vfddisBuf[vfdScanCnt][0];
		vfd_tmp_buf[1] = vfddisBuf[vfdScanCnt][1] & 
								(vfdCommaAndUnderline[VFD_BIT_NUM - 1 - vfdScanCnt] | 0xCf);
		vfd_tmp_buf[2] = vfddisBuf[vfdScanCnt][2];
		//asm("jsr.a 1e00h");
		Vfd_WriteStr();
		vfdScanCnt++;
		vfdScanCnt %= VFD_BIT_NUM;
	}
}

///////////////////////////////////////////////////////////////////////////////
//									VFD特殊符號(逗號及下劃線)顯示驅動.
///////////////////////////////////////////////////////////////////////////////

// 顯示指定位置的逗號.
void DispComma(byte pos)
{
   if (pos >= VFD_BIT_NUM)
   	return;

	vfdCommaAndUnderline[pos] &= VFD_COMMA_EN;
}

// 清除顯示指定位置的逗號.
void ClrDispComma(byte pos)
{
   if (pos >= VFD_BIT_NUM)
   	return;

	vfdCommaAndUnderline[pos] |= VFD_COMMA_DIS;
}

// 清除所有位置的逗號.
void ClsDispComma(void)
{
	byte i;
	for (i=0; i<VFD_BIT_NUM; i++)
		vfdCommaAndUnderline[i] |= VFD_COMMA_DIS;
}

// 顯示指定位置的下劃線.
void DispUnderline(byte pos)
{
   if (pos >= VFD_BIT_NUM)
   	return;

	vfdCommaAndUnderline[pos] &= VFD_UNDERLINE_EN;
}

// 清除顯示指定位置的下劃線.
void ClrDispUnderline(byte pos)
{
   if (pos >= VFD_BIT_NUM)
   	return;

	vfdCommaAndUnderline[pos] |= VFD_UNDERLINE_DIS;
}

// 清除所有位置的下劃線.
void ClsDispUnderline(void)
{
	byte i;
	for (i=0; i<VFD_BIT_NUM; i++)
		vfdCommaAndUnderline[i] |= VFD_UNDERLINE_DIS;
}
#if 0  //used for disp flash,  but no useful 
/*--------------------------------------------------------------------
*	display flash
*	used for the offer function, alerm operator
*	beep 3 times, and flash 3 times
*-------------------------------------------------------------------*/
void	disp_flash(void)
{
	BYTE	r;
	BYTE	r1;
	byte	bk[VFD_BIT_NUM][3];	// 正常程序的顯示備份,用于主程序保存及恢復顯示.
	Main_StoreVfdDisp();
	memcpy(bk, bk_main_vfddisBuf, sizeof(vfddisBuf));
	disp_Char_Str("--OFFER---",0);

	for ( r = 0; r < 3; r ++ )
	{
		Main_StoreVfdDisp();
		for ( r1 = 0; r1 < 3; r1 ++ )
		{
			Clr_Dsp_Data();
			bellcnt = 0x3e;
			Delay(200);		/*delay 0.3 s */
			Main_RestoreVfdDisp();
			Delay(200);		/*delay 0.3 s */
		}
		Delay(500);
	}
	memcpy(bk_main_vfddisBuf, bk,sizeof(vfddisBuf));
	Main_RestoreVfdDisp();
}
#endif
#endif//end OLD VFD

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av一区二区三区在线| 亚洲国产精品影院| 亚洲视频狠狠干| 精品中文av资源站在线观看| 色婷婷国产精品久久包臀| 久久久精品日韩欧美| 精品一区在线看| 精品视频在线免费看| 一区二区三区在线视频观看| 99re66热这里只有精品3直播| 国产欧美日韩在线看| 国产成人亚洲精品青草天美| 久久青草欧美一区二区三区| 久久99精品久久久久久国产越南| 欧美一级日韩不卡播放免费| 日韩国产欧美一区二区三区| 欧美一区二区三区影视| 极品尤物av久久免费看| 欧美日韩国产综合草草| 丝袜亚洲另类丝袜在线| 欧美一区三区二区| 美女免费视频一区| 精品国产青草久久久久福利| 精品无人区卡一卡二卡三乱码免费卡 | 91丝袜高跟美女视频| 精品国产乱码久久久久久图片 | 国产成人日日夜夜| 国产日韩一级二级三级| 国产精品亚洲一区二区三区在线| 久久蜜桃一区二区| 成人sese在线| 一区二区三区欧美激情| 777xxx欧美| 国内精品在线播放| 精品欧美乱码久久久久久| 国产在线视频一区二区| 国产精品国产自产拍高清av| 91蝌蚪国产九色| 水野朝阳av一区二区三区| 精品久久国产老人久久综合| 国产乱码一区二区三区| 综合激情成人伊人| 欧美日韩性生活| 看电影不卡的网站| 中文乱码免费一区二区| 欧美一区二区三区婷婷月色| 久久er99热精品一区二区| 日本一区二区久久| 色狠狠色噜噜噜综合网| 午夜精品久久久久久久久| 精品国产sm最大网站免费看| 午夜久久久久久电影| 欧美一区二区三区免费在线看| 国产在线不卡一区| 亚洲激情中文1区| 2024国产精品| 欧美色精品在线视频| 韩国三级中文字幕hd久久精品| 综合电影一区二区三区| 91精品国产高清一区二区三区 | 日韩av中文字幕一区二区| 国产香蕉久久精品综合网| 欧美日韩中文字幕一区二区| 国产精品一区二区在线播放| 亚洲福中文字幕伊人影院| 欧美极品aⅴ影院| 欧美一区二区播放| 在线看国产一区二区| 青青草国产精品亚洲专区无| 亚洲人成网站在线| 国产三级久久久| 欧美成人精品福利| 在线免费av一区| www.av亚洲| 国产露脸91国语对白| 日本中文字幕一区二区有限公司| 国产精品乱人伦| 91精品欧美久久久久久动漫| 色综合久久中文字幕综合网| 国产在线不卡一区| 久久国产精品免费| 午夜激情一区二区| 一区二区日韩电影| 亚洲精品乱码久久久久久黑人| 国产日产精品1区| 午夜精品久久久| 亚洲欧洲av另类| 久久免费午夜影院| 日韩欧美高清一区| 欧美日韩成人综合| 一本一本大道香蕉久在线精品 | 国产精品18久久久久久久久久久久| 日韩中文字幕91| 亚洲va天堂va国产va久| 亚洲男同性视频| 亚洲免费在线视频一区 二区| 精品久久免费看| 日韩免费成人网| 日韩一二三区不卡| 久久综合狠狠综合| 中文字幕一区二区三区四区 | 国产精品系列在线观看| 国产传媒久久文化传媒| 91免费观看国产| 欧亚洲嫩模精品一区三区| 欧美日韩国产一区| 久久蜜臀中文字幕| 亚洲色图视频网站| 午夜久久久久久久久| 国产麻豆91精品| 91国模大尺度私拍在线视频| 8v天堂国产在线一区二区| 久久久精品综合| 一区二区三区成人| 7777精品伊人久久久大香线蕉 | 国产一区二区三区四区在线观看| 国产精品小仙女| 欧美性色黄大片手机版| 欧美va亚洲va| 自拍偷拍欧美精品| 蜜臀久久久久久久| 99久久99久久综合| 日韩精品一区二区三区视频在线观看| 日韩欧美电影一区| **欧美大码日韩| 免费国产亚洲视频| 99国产精品久| 日韩精品一区二区三区视频在线观看| 国产精品福利av| 免费观看91视频大全| 91丨九色丨尤物| xfplay精品久久| 亚洲激情在线播放| 国产成人精品三级| 欧美一三区三区四区免费在线看| 中文字幕高清不卡| 蜜桃传媒麻豆第一区在线观看| 91亚洲午夜精品久久久久久| 精品电影一区二区| 午夜激情综合网| 色噜噜狠狠色综合中国| 国产日韩成人精品| 免费高清成人在线| 欧美日韩国产电影| 18成人在线观看| 国产99一区视频免费| 日韩免费观看2025年上映的电影| 亚洲人成在线观看一区二区| 国产精品综合在线视频| 日韩午夜激情免费电影| 亚洲国产日韩综合久久精品| 成人a免费在线看| 国产欧美一区二区三区鸳鸯浴| 日韩 欧美一区二区三区| 欧美艳星brazzers| 亚洲欧美日韩国产一区二区三区| 国产成都精品91一区二区三| 日韩欧美成人一区二区| 日韩精品福利网| 欧美日韩国产首页在线观看| 亚洲精品v日韩精品| eeuss鲁片一区二区三区在线观看| 精品国产免费久久| 久久99精品久久久| 精品久久久久久久久久久久包黑料| 日本中文一区二区三区| 欧美精品一卡二卡| 视频一区中文字幕国产| 欧美日韩另类一区| 亚洲成人av一区二区三区| 在线视频你懂得一区二区三区| 国产精品国产a级| 91免费看片在线观看| 亚洲视频免费在线| 欧美自拍偷拍午夜视频| 亚洲国产三级在线| 91精品久久久久久久91蜜桃 | 国产在线精品一区二区| 久久亚洲精品国产精品紫薇| 国产一区亚洲一区| 国产日产欧美一区| 97精品国产97久久久久久久久久久久| 国产精品久久久久久久久久免费看| 成人av资源在线| 亚洲黄色免费电影| 欧美疯狂做受xxxx富婆| 久久99深爱久久99精品| 国产欧美日韩麻豆91| 99热国产精品| 午夜国产精品影院在线观看| 欧美一区二区三级| 国产精品自拍三区| 日韩美女啊v在线免费观看| 91福利区一区二区三区| 亚洲高清视频在线| 欧美精品一区男女天堂| 成人黄页在线观看| 午夜精品久久久久影视| 久久久久久黄色| 一本色道久久加勒比精品|