wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8036|回復: 1
打印 上一主題 下一主題
收起左側

MSP430F全系列Flash存儲器通用程序庫

[復制鏈接]
跳轉到指定樓層
樓主
ID:108615 發表于 2016-3-14 20:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件(例4.1.6))完整例程下載:http://www.izizhuan.cn/bbs/dpj-46245-1.html


關于本程序的詳細解說大家可以點擊上圖下載電子書
這個Flash存儲器庫文件的調用方法可先下載完整代碼然后找到(例4.1.6)這一節,里面有調用方法
Flash.c文件:
  1. /*
  2.                
  3.                    MSP430F全系列Flash存儲器通用程序庫


  4.   說明:該程序庫包含了內部Flash存儲器常用的讀寫功能,還包含了常用數據
  5.         格式變量的保存、讀取函數。除了字節讀寫之外,還可以很方便的向
  6.         FlashROM里寫入和讀出整型、浮點數、長整型格式的數據。
  7.             由于Flash存儲器不能單字節擦除或改寫,因此寫入任何字節都需
  8.         要先備份整個數據區再整塊擦除,之后恢復其他未改變數據。本程序利
  9.         用兩個Flash存儲區(InfoA和InfoB)互相備份信息,優點是備份過程不
  10.         占用RAM,能在RAM小于256字節的單片機上運行;缺點是速度慢,且浪費
  11.         了1/2的存儲容量。適合小批量數據且不關心寫入速度的場合,如菜單
  12.         保存設置參數等。另外注意Flash壽命只有10萬次左右,不要頻繁調用
  13.         寫函數。寫Flash時,電源電壓必須高于2.7V。
  14.             本程序庫中所有的讀寫函數對外已經屏蔽了Flash特征,存儲地址
  15.         空間從0開始到127。如果實際用到的數據量很少,可修改MAXNUM定義,
  16.         以節省執行時間。如果需要保存的數據量大于128,可修改存儲區首地址
  17.         和備份區首地址的定義,指向程序Flash區中程序代碼和中斷向量表未
  18.         占用的空白區塊,能獲得512字節的存儲容量。
  19.             要使用該庫函數,需要將本文件(Flash.c)添加進工程,并在需要
  20.         調用函數的文件開頭處包含"Flash.h"。

  21.   (C)西安電子科技大學 測控技術與儀器教研中心 編寫:謝楷 2008/02/04
  22.   
  23. */
  24. //
  25. //
  26. //                  MSP430F4XX
  27. //               +---------------+         
  28. //               |               |
  29. //               |           XOUT|-----
  30. //               |               |      32.768KHz Watch Crystal
  31. //               |            XIN|-----
  32. //               |               |
  33. //               +---------------+

  34. #include  "MSP430x42x.h"
  35. #define   MAXNUM  32      /*存儲的總數據量(字節),最大128*/
  36. /*由于每個數據都需要備份,總數據量越小速度越快,不要留太多余量*/
  37. /*后面存儲、讀取函數可用的存儲地址空間為0~(MAXNUM-1)*/

  38. #define   FLASH_SAVEADDR  (0x1080) /*Flash數據存儲區首地址(InfoB)*/
  39. #define   FLASH_COPYADDR  (0x1000) /*Flash備份存儲區首地址(InfoA)*/

  40. union LongChar      //長整字節  復合結構
  41. { unsigned long int Long;
  42.   struct ByteL4
  43.    { unsigned char  BHH;
  44.      unsigned char  BHL;
  45.      unsigned char  BLH;
  46.      unsigned char  BLL;
  47.    }Bytes;   
  48. };
  49. union FloatChar      //浮點字節  復合結構
  50. { float Float;
  51.   struct ByteF4
  52.    { unsigned char  BHH;
  53.      unsigned char  BHL;
  54.      unsigned char  BLH;
  55.      unsigned char  BLL;
  56.    }Bytes;   
  57. };

  58. unsigned char FLASH_PSR;
  59. #define DISABLE_INT;  FLASH_PSR=__get_SR_register();_DINT();
  60. #define RESTORE_INT;  if(FLASH_PSR & GIE)           _EINT();
  61. /****************************************************************************
  62. * 名    稱:Flash_Init()
  63. * 功    能:對Flash時鐘進行初始化設置
  64. * 入口參數:無
  65. * 出口參數:無
  66. * 說    明: 如需使用后面的讀寫函數,在程序開始必須先調用該初始化函數
  67.             配置Flash時鐘必須在257~476KHz之間!!
  68. ****************************************************************************/
  69. void Flash_Init(void)
  70. {
  71.   FCTL2 = FWKEY + FSSEL_2 + FN1; // 默認 SMCLK/3 =349KHz
  72. }
  73.   /* Flash時鐘必須在257~476KHz之間, */
  74.   /* 分頻系數= 32*FN5 + 16*FN4 + 8*FN3 + 4*FN2 + 2*FN1 + FN0 + 1 */

  75.   // Flash時鐘選擇:   
  76.   /* FSSEL_0 Flash clock select: 0 - ACLK */
  77.   /* FSSEL_1 Flash clock select: 1 - MCLK */
  78.   /* FSSEL_2 Flash clock select: 2 - SMCLK */


  79. /****************************************************************************
  80. * 名    稱:Flash_Busy()
  81. * 功    能:Flash忙等待
  82. * 入口參數:無
  83. * 出口參數:無
  84. * 說    明: 若Flash忙則等待,直到Flash操作完成(空閑)才返回。
  85. ****************************************************************************/
  86. void Flash_Busy()
  87. {
  88.   while((FCTL3 & BUSY) == BUSY){_NOP();}    //Busy
  89. }
  90. /****************************************************************************
  91. * 名    稱:Flash_Erase()
  92. * 功    能:擦除Flash的一個數據塊
  93. * 入口參數:Addr:被擦除數據塊的首地址
  94. * 出口參數:無
  95. ****************************************************************************/
  96. void Flash_Erase(unsigned int Addr)  
  97. { unsigned char *Flash_ptr;
  98.   Flash_ptr=(unsigned char *)Addr;
  99.   FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  100.   FCTL3 = FWKEY;                            // Clear Lock bit
  101.   DISABLE_INT;
  102.   *Flash_ptr = 0;                          // Dummy write to erase Flash segment B
  103.   Flash_Busy();                            //Busy
  104.   RESTORE_INT;
  105.   FCTL1 = FWKEY;                            // Lock
  106.   FCTL3 = FWKEY+LOCK;                       // Set Lock bit  
  107. }
  108. /****************************************************************************
  109. * 名    稱:Flash_CopyA2B()
  110. * 功    能:將數據區的內容拷貝到備份區
  111. * 入口參數:無
  112. * 出口參數:無
  113. ****************************************************************************/
  114. void Flash_CopyA2B()
  115. {
  116.   unsigned char *Flash_ptrA;                      // Segment A pointer
  117.   unsigned char *Flash_ptrB;                      // Segment B pointer
  118.   unsigned int i;
  119.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;  // Initialize Flash segment A pointer
  120.   Flash_ptrB = (unsigned char *) FLASH_COPYADDR;  // Initialize Flash segment B pointer
  121.   Flash_Erase(FLASH_COPYADDR);
  122.   FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
  123.   FCTL3 = FWKEY;                            // Clear Lock bit
  124.   for (i=0; i<MAXNUM; i++)
  125.   {
  126.     DISABLE_INT;
  127.     *Flash_ptrB++ = *Flash_ptrA++;           // copy value segment A to segment B
  128.     Flash_Busy();                              //Busy
  129.     RESTORE_INT;
  130.   }
  131.   FCTL1 = FWKEY;                            // Clear WRT bit
  132.   FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
  133. }
  134. /****************************************************************************
  135. * 名    稱:Flash_WriteChar()
  136. * 功    能:向Flash中寫入一個字節(Char型變量)
  137. * 入口參數:Addr:存放數據的地址
  138.             Data:待寫入的數據
  139. * 出口參數:無
  140. * 范    例:Flash_WriteChar(0,123);將常數123寫入0單元
  141.             Flash_WriteChar(1,a);將整型變量a寫入1單元
  142. ****************************************************************************/
  143. void Flash_WriteChar (unsigned int Addr,unsigned char Data)
  144. {
  145.   unsigned char *Flash_ptrA;                         // Segment A pointer
  146.   unsigned char *Flash_ptrB;                         // Segment B pointer
  147.   unsigned int i;
  148.   Flash_CopyA2B();                          //Flash內的數據先保存起來
  149.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;// Initialize Flash segment A pointer
  150.   Flash_ptrB = (unsigned char *) FLASH_COPYADDR;// Initialize Flash segment B pointer
  151.   Flash_Erase(FLASH_SAVEADDR);  
  152.   FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
  153.   FCTL3 = FWKEY;                            // Clear Lock bit
  154.   for (i=0; i<MAXNUM; i++)
  155.   {
  156.     DISABLE_INT;
  157.     if(i==Addr)
  158.     {
  159.      *Flash_ptrA++ =Data;                    // Save Data
  160.      Flash_Busy();                              //Busy
  161.      Flash_ptrB++;
  162.     }
  163.     else
  164.     {
  165.      *Flash_ptrA++ = *Flash_ptrB++;           // 恢復Flash內的其他數據
  166.      Flash_Busy();                              //Busy
  167.     }
  168.     RESTORE_INT;
  169.   }
  170.   FCTL1 = FWKEY;                            // Clear WRT bit
  171.   FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
  172. }  
  173. /****************************************************************************
  174. * 名    稱:Flash_ReadChar()
  175. * 功    能:從Flash中讀取一個字節
  176. * 入口參數:Addr:存放數據的地址
  177. * 出口參數:讀回的數據
  178. ****************************************************************************/
  179. unsigned char Flash_ReadChar (unsigned int Addr)
  180. { unsigned char Data;
  181.   unsigned char *Flash_ptrA;                         // Segment A pointer
  182.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  183.   Data=*(Flash_ptrA+Addr);
  184.   return(Data);
  185. }
  186. /****************************************************************************
  187. * 名    稱:Flash_WriteWord()
  188. * 功    能:向Flash寫入一個整型變量
  189. * 入口參數:Addr:被寫入FlashROM單元的地址
  190.             Data:待寫入的整型變量(2字節數據)
  191. * 出口參數:無
  192. * 說    明: 該函數保存數據將占用Addr和Addr+1兩個存儲單元
  193. * 范    例:Flash_WriteWord(2,1234);將常數1233寫入2~3單元
  194.             Flash_WriteWord(4,a);將整型變量a寫入4~5單元
  195. ****************************************************************************/
  196. void Flash_WriteWord (unsigned int Addr,unsigned int Data)
  197. {
  198.   unsigned char *Flash_ptrA;                // Segment A pointer
  199.   unsigned char *Flash_ptrB;                // Segment B pointer
  200.   unsigned int i;
  201.   Flash_CopyA2B();                          //Flash內的數據先保存起來
  202.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;// Initialize Flash segment A pointer
  203.   Flash_ptrB = (unsigned char *) FLASH_COPYADDR;// Initialize Flash segment B pointer
  204.   Flash_Erase(FLASH_SAVEADDR);
  205.   FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
  206.   FCTL3 = FWKEY;                            // Clear Lock bit
  207.   for (i=0; i<MAXNUM; i++)
  208.   {
  209.     DISABLE_INT;
  210.     if(i==Addr)
  211.     {
  212.      *Flash_ptrA++ =Data/256;                    // Save Data
  213.      Flash_Busy();                                //Busy
  214.      *Flash_ptrA++ =Data%256;                    // Save Data     
  215.      Flash_Busy();                                //Busy
  216.      Flash_ptrB+=2;
  217.     }
  218.     else
  219.     {
  220.      *Flash_ptrA++ = *Flash_ptrB++;            // 恢復Flash內的其他數據
  221.      Flash_Busy();                              //Busy
  222.     }
  223.     RESTORE_INT;
  224.   }
  225.   FCTL1 = FWKEY;                            // Clear WRT bit
  226.   FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
  227. }
  228. /****************************************************************************
  229. * 名    稱:Flash_ReadWord()
  230. * 功    能:從FlashROM讀回一個整型變量
  231. * 入口參數:Addr:待讀出變量FlashROM單元的起始地址(存入的地址)
  232. * 出口參數:讀回的整型變量值
  233. ****************************************************************************/
  234. unsigned int Flash_ReadWord (unsigned int Addr)
  235. { unsigned int Data;
  236.   unsigned char *Flash_ptrA;                    // Segment A pointer
  237.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;// Initialize Flash segment A pointer
  238.   Data=*(Flash_ptrA+Addr)*256+*(Flash_ptrA+Addr+1);
  239.   return(Data);
  240. }
  241. /****************************************************************************
  242. * 名    稱:Flash_WriteLong()
  243. * 功    能:向FlashROM寫入一個長整型變量
  244. * 入口參數:Addr:被寫入FlashROM單元的地址
  245.             Data:待寫入的長整型變量(4字節數據)
  246. * 出口參數:無
  247. * 說    明: 該函數保存數據將占用Addr到Addr+3 共4個存儲單元
  248. * 范    例:Flash_WriteLong(7,123456);將長整型數123456寫入7~10單元
  249.             Flash_WriteLong(11,a);將長整型變量a寫入11~14單元
  250. ****************************************************************************/
  251. void Flash_WriteLong (unsigned int Addr,unsigned long int Data)
  252. {
  253.   union LongChar LData;
  254.   unsigned char *Flash_ptrA;                         // Segment A pointer
  255.   unsigned char *Flash_ptrB;                         // Segment B pointer
  256.   unsigned int i;
  257.   LData.Long=Data;
  258.   Flash_CopyA2B();                          //Flash內的數據先保存起來
  259.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;// Initialize Flash segment A pointer
  260.   Flash_ptrB = (unsigned char *) FLASH_COPYADDR;// Initialize Flash segment B pointer
  261.   Flash_Erase(FLASH_SAVEADDR);
  262.   FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
  263.   FCTL3 = FWKEY;                            // Clear Lock bit
  264.   for (i=0; i<MAXNUM; i++)
  265.   {
  266.     DISABLE_INT;
  267.     if(i==Addr)
  268.     {
  269.      *Flash_ptrA++ =LData.Bytes.BHH;            // Save Data
  270.      Flash_Busy();                              //Busy
  271.      *Flash_ptrA++ =LData.Bytes.BHL;            // Save Data   
  272.      Flash_Busy();                              //Busy
  273.      *Flash_ptrA++ =LData.Bytes.BLH;            // Save Data
  274.      Flash_Busy();                              //Busy
  275.      *Flash_ptrA++ =LData.Bytes.BLL;            // Save Data     
  276.      Flash_Busy();                              //Busy
  277.      Flash_ptrB+=4;
  278.      }
  279.     else
  280.     {
  281.      *Flash_ptrA++ = *Flash_ptrB++;           // 恢復Flash內的其他數據
  282.      Flash_Busy();                              //Busy
  283.     }
  284.     RESTORE_INT;   
  285.   }
  286.   FCTL1 = FWKEY;                            // Clear WRT bit
  287.   FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
  288. }
  289. /****************************************************************************
  290. * 名    稱:Flash_ReadLong()
  291. * 功    能:從FlashROM讀回一個長整型變量
  292. * 入口參數:Addr:待讀出變量所在FlashROM單元的起始地址(存入的地址)
  293. * 出口參數:讀回的長整型變量值
  294. ****************************************************************************/
  295. unsigned long int Flash_ReadLong (unsigned int Addr)
  296. {
  297.   unsigned char *Flash_ptrA;                    // Segment A pointer
  298.   union LongChar Data;
  299.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;// Initialize Flash segment A pointer
  300.   Flash_ptrA+=Addr;
  301.   Data.Bytes.BHH=*Flash_ptrA++;
  302.   Data.Bytes.BHL=*Flash_ptrA++;
  303.   Data.Bytes.BLH=*Flash_ptrA++;
  304.   Data.Bytes.BLL=*Flash_ptrA++;     
  305.   return(Data.Long);
  306. }
  307. /****************************************************************************
  308. * 名    稱:Flash_WriteFloat()
  309. * 功    能:向FlashROM寫入一個浮點型變量
  310. * 入口參數:Addr:被寫入FlashROM單元的地址
  311.             Data:待寫入的浮點型變量(4字節數據)
  312. * 出口參數:無
  313. * 說    明: 該函數保存數據將占用Addr到Addr+3 共4個存儲單元
  314. * 范    例:Flash_WriteFloat(15,3.14159);將浮點數3.14159寫入15~18單元
  315.             Flash_WriteFloat(19,a);將浮點變量a寫入19~22單元
  316. ****************************************************************************/
  317. void Flash_WriteFloat (unsigned int Addr,float Data)
  318. {
  319.   union FloatChar FData;
  320.   unsigned char *Flash_ptrA;                // Segment A pointer
  321.   unsigned char *Flash_ptrB;                // Segment B pointer
  322.   unsigned int i;
  323.   FData.Float=Data;
  324.   Flash_CopyA2B();                          //Flash內的數據先保存起來
  325.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;// Initialize Flash segment A pointer
  326.   Flash_ptrB = (unsigned char *) FLASH_COPYADDR;// Initialize Flash segment B pointer
  327.   Flash_Erase(FLASH_SAVEADDR);
  328.   FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
  329.   FCTL3 = FWKEY;                            // Clear Lock bit
  330.   for (i=0; i<MAXNUM; i++)
  331.   {
  332.     DISABLE_INT;
  333.     if(i==Addr)
  334.     {
  335.      *Flash_ptrA++ =FData.Bytes.BHH;            // Save Data
  336.      Flash_Busy();                              //Busy
  337.      *Flash_ptrA++ =FData.Bytes.BHL;            // Save Data   
  338.      Flash_Busy();                              //Busy
  339.      *Flash_ptrA++ =FData.Bytes.BLH;            // Save Data
  340.      Flash_Busy();                              //Busy
  341.      *Flash_ptrA++ =FData.Bytes.BLL;            // Save Data     
  342.      Flash_Busy();                              //Busy
  343.      Flash_ptrB+=4;
  344.     }
  345.     else
  346.     {
  347.      *Flash_ptrA++ = *Flash_ptrB++;           // 恢復Flash內的其他數據
  348.      Flash_Busy();                              //Busy
  349.     }
  350.     RESTORE_INT;
  351.   }
  352.   FCTL1 = FWKEY;                            // Clear WRT bit
  353.   FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
  354. }
  355. /****************************************************************************
  356. * 名    稱:Flash_ReadFloat()
  357. * 功    能:從FlashROM讀回一個浮點型變量
  358. * 入口參數:Addr:待讀出變量所在FlashROM單元的起始地址(存入的地址)
  359. * 出口參數:讀回的浮點型變量值
  360. ****************************************************************************/
  361. float Flash_ReadFloat (unsigned int Addr)
  362. {
  363.   unsigned char *Flash_ptrA;                   // Segment A pointer
  364.   union FloatChar Data;
  365.   Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;// Initialize Flash segment A pointer
  366.   Flash_ptrA+=Addr;
  367.   Data.Bytes.BHH=*Flash_ptrA++;
  368.   Data.Bytes.BHL=*Flash_ptrA++;
  369.   Data.Bytes.BLH=*Flash_ptrA++;
  370.   Data.Bytes.BLL=*Flash_ptrA++;     
  371.   return(Data.Float);
  372. }
  373. //==============================================================================================
復制代碼

Flash.h文件:
  1. extern void          Flash_Init  (void);
  2. extern void          Flash_WriteChar  (unsigned int Addr,unsigned char Data);
  3. extern unsigned char Flash_ReadChar   (unsigned int Addr);
  4. extern void          Flash_WriteWord  (unsigned int Addr,unsigned int  Data);
  5. extern unsigned int  Flash_ReadWord   (unsigned int Addr);
  6. extern void          Flash_WriteLong  (unsigned int Addr,unsigned long Data);
  7. extern unsigned long Flash_ReadLong   (unsigned int Addr);
  8. extern void          Flash_WriteFloat (unsigned int Addr,float         Data);
  9. extern float         Flash_ReadFloat  (unsigned int Addr);
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:570616 發表于 2019-6-24 18:14 | 只看該作者
求大神指點一下,我往信息存儲器中寫數據可以按我設定的地址中寫,但是我往主存儲器中寫數據時,我設置的起始地址時bank3的首地址038000H,為啥調試的時候顯示的寫在了08000H為首地址的Bank0區中呢?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
精品三级在线| 国产精品不卡一区| 四虎成人在线视频| 国产wwwwwww| 免费a级黄色片| 青青青青在线视频| 亚洲va国产va天堂va久久| 日韩精品一区二区三区视频| 国产精品久久久久久久久免费丝袜| 亚洲精品护士| 成人h动漫免费观看网站| 新版中文在线官网| 一级黄色在线| 蜜桃传媒入口| 污视频软件在线观看| www成人在线| youjizz.com国产| 一区二区三区四区免费观看| 国产综合在线观看视频| 久久国产精品久久国产精品| 国产一区亚洲| 四虎永久精品在线| free性护士videos欧美| 在线观影网站| 美女视频黄是免费| 高h放荡受浪受bl| 尤物视频在线观看国产| 久久久国产一级片| 成年女人免费视频| 精品久久久久久中文字幕2017| 欧美一级爽aaaaa大片| 国产精品色悠悠| 欧美激情免费观看| 欧美福利视频一区| 欧美特级www| 亚洲欧美激情一区二区| 久久亚洲精精品中文字幕早川悠里| 久久一区中文字幕| 亚洲精品一二三区区别| 丁香六月色婷婷| 看片网站在线观看| 国产不卡一二三| 国产九九在线观看| 无人在线观看的免费高清视频| 国产午夜精品视频一区二区三区| 欧美12av| 国内一区二区三区在线视频| 国产精品一区二区三区久久久| 欧美激情一区二区三区成人 | 日本一线产区和二线产区| 免费黄色av片| 噼里啪啦国语在线观看免费版高清版| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 久久久久北条麻妃免费看| 欧美一区二区三区在线观看| 色94色欧美sute亚洲线路二| 亚洲黄色免费网站| 亚洲日本韩国一区| 国产精品欧美久久久久无广告| 日本欧美一区二区在线观看| 香蕉av777xxx色综合一区| 小明成人免费视频一区| 91制片在线观看| 免费在线观看av| www.av在线播放| jizz在线观看| 麻豆传媒在线观看| 一级毛片视频在线观看| 91高清在线| 国产福利小视频在线| 成人午夜影视| 91在线中字| 美女的胸无遮挡在线观看| 制服丝袜在线播放| 色婷婷av在线| 羞羞的网站在线观看| 1区2区在线观看| 擼擼色在线看观看免费| 99只有精品| 欧美影院在线| 超碰97久久| 揉丰满老妇老女人的毛片| 毛茸茸多毛bbb毛多视频| 国产精品最新在线观看| 川上优av一区二区线观看| 国产精品男人的天堂| 91在线观看免费| 久久精品国产理论片免费| 欧美一二三区| 日韩国产小视频| 欧美少妇在线观看| 久久久精品三级| 国产精品嫩草av| 丰满少妇一区二区| 黄色一级视频在线观看| 亚洲午夜无码久久久久| 日韩中文字幕免费观看| 国产精品久久久久久久牛牛| 在线看av网址| 韩国免费在线视频| 蜜桃传媒在线观看免费进入 | 狠狠干五月天| 1区2区3区在线观看| 九色porny自拍视频在线播放| www.成人| 天天影视欧美综合在线观看| 日韩av电影天堂| 91蝌蚪porny九色| 亚洲综合免费观看高清完整版在线 | 国产视频一二三四区| 2018中文字幕在线| 悠悠资源av网站| 国产乱理伦片a级在线观看| sqte在线播放| 日韩成人综合网站| 欧美综合另类| 日本美女一区二区| 国产喷白浆一区二区三区| 亚洲va国产天堂va久久en| 欧美一区二区三区成人| 日韩在线中文视频| 成人精品久久久| 91免费视频黄| 中文字幕一区二区三区乱码不卡| 国产亚洲小视频| 亚洲精品综合网| 一二三四视频免费观看在线看| 奇米四色7777| jizz性欧美| gogo久久日韩裸体艺术| 综合五月婷婷| 91色婷婷久久久久合中文| 亚洲在线一区二区三区| 欧美精品色综合| 欧美成人精品激情在线观看| 91日本视频在线| 国产一区二区三区小说| a级大片免费看| 麻豆国产尤物av尤物在线观看| 国产视频www| 天天草天天爽| 69久久夜色| 久久av网站| 久久永久免费| 一区二区成人在线视频 | 国产精品狼人久久影院观看方式| 欧美日韩一区二区三区四区| 久久99精品国产99久久6尤物| 精品视频免费观看| 欧美大片久久久| 日本高清www免费视频| 欧美jizzhd精品欧美满| 国产中文字幕在线视频| 亚洲一区二区三区在线免费| 日韩av一级电影| 午夜精品福利在线| 美女av一区二区三区 | 久久久精品日本| 久久这里精品国产99丫e6| 九一精品久久久| 日韩成人高清视频| 深夜福利网站| 大片免费在线观看| 国产一区二区三区四区五区传媒| 久久精品国产久精国产| 亚洲成年人网站在线观看| 国产一区二区三区在线观看视频 | 超碰中文在线| 99久久精品费精品国产| 91在线porny国产在线看| 欧美精品在线观看播放| 国产精品一区专区欧美日韩| 成人一区二区免费视频| 久久久久人妻一区精品色欧美| 亚洲美女色视频| av在线资源网| 日韩av二区| 国产精品传媒入口麻豆| 久久手机精品视频| www.亚洲成人网| 久久久久久久福利| 日本一区精品久久久久影院| 91xxx在线观看| 欧美wwwww| 欧美一区二区| 久久综合成人精品亚洲另类欧美| 亚洲第一页在线| 国产欧美日韩免费看aⅴ视频| 日本成人中文字幕在线| 在线免费一级片| 天堂资源中文在线| 日韩精品首页| 亚洲妇熟xx妇色黄| 日韩免费中文字幕| 久久久精品中文字幕| 日韩久久久久久久| 成人免费精品动漫网站| 国产成人精品视频一区| 爱啪视频在线观看视频免费| 老司机午夜精品视频| 欧美午夜精品一区二区蜜桃| 亚洲精品国产精品乱码不99按摩| 精品视频第一区| 五月激情四射婷婷| 91九色蝌蚪| 国产精品一区二区三区四区在线观看| 国产乱人伦偷精品视频免下载| 亚洲第一区第二区| 日韩一区二区在线看| 欧美h视频在线| 99热精品免费| 激情乱色小说视频| 成久久久网站| 日韩欧美亚洲范冰冰与中字| 懂色av一区二区三区在线播放| 丰满少妇高潮一区二区| 爽爽影院免费观看视频| 精品国产午夜肉伦伦影院| 国产精品久久久久国产精品日日| 91av中文字幕| 免费日本黄色网址| 免费观看的黄色网址| swag国产精品一区二区| 国产精品每日更新| 国产精品免费一区| 在线观看免费小视频| 91传媒在线观看| 999成人网| 欧美肥胖老妇做爰| 超碰免费在线公开| 国产精品久久777777换脸| 手机av免费在线| 国产中文字幕精品| 欧美精品一二区| 国产ts在线观看| 免费的黄色片| 成人在线国产| 欧美精品乱码久久久久久按摩| 欧美一区二区视频在线| 国产精品尤物视频| 超碰97国产精品人人cao| 99精品视频免费在线观看| 97人人做人人爱| 美女被到爽高潮视频| 69ww免费视频播放器| 一个色综合网| 欧美精品一区在线观看| 国产91xxx| 最近免费中文字幕在线第一页 | 在线国产中文字幕| 国产精品资源| 日韩在线资源网| 国产亚洲精品成人a| 美女网站黄页| 综合视频在线| 亚洲欧美日韩高清| av污在线观看| 你懂的网站在线观看| 成人激情诱惑| 欧美精品一区二区三区久久久| 已婚少妇美妙人妻系列| 日本三级电影在线看| 欧美1级日本1级| 中文字幕免费精品一区高清| avtt中文字幕| 理论片在线观看理伦片| 青青草97国产精品免费观看| 欧美交受高潮1| jizz日本在线播放| 日本免费中文字幕在线| 99精品久久只有精品| 2019国产精品视频| 国产情侣呻吟对白高潮| 日韩新的三级电影| 亚洲成人一区二区| 亚洲区成人777777精品| 欧美大交乱xxxxxbbb| 性欧美1819sex性高清大胸| 久久午夜羞羞影院免费观看| 不卡的av一区| 91片黄在线观看喷潮| 国产成人精品一区二区三区在线 | 成人欧美一区二区三区在线观看| 中文字幕在线观看视频免费| 国产日韩电影| 性做久久久久久| 中文字幕欧美日韩一区二区三区| 网曝门事件国产精品二区| 水蜜桃精品av一区二区| 亚洲第一精品久久忘忧草社区| 国产成人精品一区二区在线小狼| 亚洲成av人影片在线观看| 国产一区日韩二区欧美三区| 国产国语刺激对白av不卡| 久久久久久国产精品免费播放| 福利小视频在线| 亚洲柠檬福利资源导航| 日本美女爱爱视频| 日本夜夜草视频网站| 欧美亚洲专区| 国语自产在线不卡| 久草视频在线资源站| 二区三区不卡不卡视频| 麻豆精品国产| 亚洲第一福利在线观看| 亚洲午夜久久久久久久久红桃| 国产大学生校花援交在线播放| 国产精品美日韩| 国产人妻互换一区二区| 成年人在线免费| 国产一区二区三区观看| 国产99在线免费| 四虎a级欧美在线观看| 影音先锋日韩资源| 国产精彩精品视频| 国产乱码久久久久| 成人午夜av| 午夜精品在线视频| 五月激情丁香网| 国产日韩欧美一区二区三区| 最新日韩中文字幕| 国产精品自拍99| 欧美一区二区三区久久| 一本大道久久加勒比香蕉| 久草成人在线视频| 丁香婷婷成人| 日韩中文字幕免费看| 中文字幕69页| 特黄特色欧美大片| 欧美大学生性色视频| 中文字幕人妻一区二区在线视频| 久操精品在线| 久久久视频在线| 97人妻精品一区二区三区动漫| 日韩高清欧美| 国产成人短视频| www.一区二区三区.com| 日韩精品欧美精品| 欧美日韩一区综合| 成年网在线观看免费观看网址| av不卡在线观看| 男人天堂手机在线视频| 污污软件在线观看| 调教+趴+乳夹+国产+精品| www.555国产精品免费| 天堂电影一区| 亚洲精品中文字幕有码专区| 九九九国产视频| 亚洲精品国产动漫| 午夜免费日韩视频| 日本高清视频www| 视频一区欧美精品| 日韩精品一区二区三区外面| 很很鲁在线视频播放影院| 99久久综合狠狠综合久久| 亚洲不卡中文字幕无码| 日韩亚洲视频在线观看| 欧美性生活大片免费观看网址| 欧美肉大捧一进一出免费视频 | 国产精品av免费观看| 最美情侣韩剧在线播放| 无码av免费一区二区三区试看| 秘密基地免费观看完整版中文| 日韩一区二区三区免费视频| 宅男66日本亚洲欧美视频| 在线视频你懂得| 免费日韩视频| 奇米888一区二区三区| 影院免费视频| 91高清视频在线| 国产在线免费看| 无码少妇一区二区三区| 国产欧美亚洲视频| 福利电影在线| 亚洲午夜国产一区99re久久| 亚洲专区区免费| 精品国产一区二区三区成人影院| 国产激情久久久久| 在线免费观看h视频| 久久久午夜精品| 91女神在线观看| 欧美男体视频| 久久精品国产亚洲一区二区| 丁香六月天婷婷| 国产在线视频一区二区| 国产美女在线一区| 黄色片免费在线观看| 日韩午夜在线播放| 一区二区视频播放| 校园激情久久| 波多野结衣av一区二区全免费观看 | 日韩在线欧美在线| 人妻偷人精品一区二区三区| 日韩av电影天堂| 青青草国产精品视频| 僵尸再翻生在线观看| 欧美成人精品一区二区| 免费精品国产自产拍观看| 1000部国产精品成人观看| 精品人妻一区二区三区蜜桃视频|