久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4988|回復(fù): 34
打印 上一主題 下一主題
收起左側(cè)

STC單片機(jī)EEPROM扇區(qū)操作問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:322939 發(fā)表于 2021-12-14 15:48 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大佬,關(guān)于STC這芯片的EEPROM在進(jìn)行操作時,如果不按照扇區(qū)順序操作控擦寫,能不能有效存入數(shù)據(jù)?例如:開機(jī)初始化時使用第二扇區(qū)進(jìn)行擦寫,后面需要設(shè)置時使用第一扇區(qū)擦寫存數(shù)據(jù),我經(jīng)過測試發(fā)現(xiàn)第二扇區(qū)不能存數(shù)據(jù),如下:
void main(void)
{

IO_Init();
Delay(100);

TempSum=IapRead(0x0001);//讀第一扇區(qū)
TempSum=TempSum<<8|IapRead(0x0002);
ADsodo_flag=IapRead(0x0203);//讀第二扇區(qū)
camp_dataFlag=ADsodo_flag;
TESample=IapRead(0x0404);//讀第三扇區(qū)
  TESample=camp_data<<8|IapRead(0x0405);
Delay(500);
Timer0_Init();


  while(1)
{
   
  
  if(AD_cmaxizuFlag_1)
  {
   TESample=tertpe-Set_temp;

   AD_cmaxizuFlag_1=0;
   }
  else
    if(AD_cmaxizuFlag_2)
    {
      TESample=Set_temp-tertpe;
   
      AD_cmaxizuFlag_2=0;
    }
   
  if(EepromFlag_1==2)
  {
    IapErase(0x0000);//擦除第一扇區(qū)
    IapProgram(0x0001,TempSum>>8);//寫入第一扇區(qū)
   IapProgram(0x0002,TempSum);
   EepromFlag_1=0;
     }
  
  if(EepromFlag_2==2)
  {

    IapErase(0x0200);//擦除第二扇區(qū)
    IapProgram(0x0203,ADsodo_flag);//寫入第二扇區(qū)
    IapErase(0x0400);//擦除第三扇區(qū)
    IapProgram(0x0404,TESample>>8);//寫入第三扇區(qū)
   IapProgram(0x0405,TESample);
    EepromFlag_2=0;
   }
if(Eepromflag_A)//開機(jī)按鍵初始化第一次寫入
{
  IapErase(0x0200);//擦除第二扇區(qū)
    IapProgram(0x0203,ADsodo_flag);//寫入第二扇區(qū)
Eepromflag_A=0;
}
}
}

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

使用道具 舉報

沙發(fā)
ID:322939 發(fā)表于 2021-12-14 15:50 | 只看該作者
還有就是第一扇區(qū)可以保存讀出,但第二和第三扇區(qū)卻不能保存
回復(fù)

使用道具 舉報

板凳
ID:624769 發(fā)表于 2021-12-14 16:43 | 只看該作者
任何扇區(qū) 都能擦,寫, 讀。

但是,前提是,這些扇區(qū)真實存在, 如果你的Eeprom 只有 512字節(jié) 是只有 一個扇區(qū)的。

不清楚你的芯片型號,不清楚你的設(shè)置,看不到你擦,寫,讀 操作的代碼, 也看不到Eeprom 初始化代碼, 說什么都是猜。
回復(fù)

使用道具 舉報

地板
ID:213173 發(fā)表于 2021-12-14 16:57 | 只看該作者
不必按照扇區(qū)順序操作,可以選擇在有效扇區(qū)范圍內(nèi)任意扇區(qū)的任意地址讀寫。一般從0開始讀寫,不易人為出錯。每個扇區(qū)512字節(jié)。
回復(fù)

使用道具 舉報

5#
ID:322939 發(fā)表于 2021-12-14 17:59 | 只看該作者
wulin 發(fā)表于 2021-12-14 16:57
不必按照扇區(qū)順序操作,可以選擇在有效扇區(qū)范圍內(nèi)任意扇區(qū)的任意地址讀寫。一般從0開始讀寫,不易人為出錯 ...

但實際上卻不能存入數(shù)據(jù),沒作用,只有第一扇區(qū)有作用,不知道那里出錯了
回復(fù)

使用道具 舉報

6#
ID:213173 發(fā)表于 2021-12-14 20:25 | 只看該作者
LAW1100 發(fā)表于 2021-12-14 17:59
但實際上卻不能存入數(shù)據(jù),沒作用,只有第一扇區(qū)有作用,不知道那里出錯了

代碼不全,神仙也不知道那里出錯了。
回復(fù)

使用道具 舉報

7#
ID:322939 發(fā)表于 2021-12-15 08:06 | 只看該作者
wulin 發(fā)表于 2021-12-14 20:25
代碼不全,神仙也不知道那里出錯了。

代碼是模塊化的,太多了,上傳這里你們看了要花大量時間理解,用的芯片是STC8H1K08這款的
回復(fù)

使用道具 舉報

8#
ID:322939 發(fā)表于 2021-12-15 09:44 | 只看該作者
如果將數(shù)據(jù)全部放在第一扇區(qū),也是只有第一個數(shù)據(jù)能讀出來,其它數(shù)據(jù)很大(FFH)不是原來數(shù)據(jù),存不了
回復(fù)

使用道具 舉報

9#
ID:322939 發(fā)表于 2021-12-15 09:49 | 只看該作者
void main(void)
{

        IO_Init();
        Delay(1000);
       
        TempSum=IapRead(0x0001);//讀出第一扇區(qū)1和2地址數(shù)據(jù)
        TempSum=TempSum<<8|IapRead(0x0002);
        ADsodo_flag=IapRead(0x0003);//第3地址數(shù)據(jù)
        camp_dataFlag=ADsodo_flag;
        TESample=IapRead(0x0004);//第4和5地址數(shù)據(jù)
        TESample=camp_data<<8|IapRead(0x0005);
        Delay(500);

        Timer0_Init();
while(1)
        {
if(EepromFlag_1==2)
         {
                  IapErase(0x0000);//擦除第一扇區(qū)
                  IapProgram(0x0001,TempSum>>8);//寫入數(shù)據(jù)
                        IapProgram(0x0002,TempSum);
                        IapProgram(0x0003,ADsodo_flag);//寫入
                         IapProgram(0x0004,TESample>>8);//寫入
                        IapProgram(0x0005,TESample);
                        EepromFlag_1=0;
                   }
           if(EepromFlag_2==2)
         {
              IapErase(0x0000);//擦除第一扇區(qū)
                  IapProgram(0x0001,TempSum>>8);//寫入數(shù)據(jù)
                        IapProgram(0x0002,TempSum);
                        IapProgram(0x0003,ADsodo_flag);//寫入
                         IapProgram(0x0004,TESample>>8);//寫入
                        IapProgram(0x0005,TESample);
                       EepromFlag_2=0;
                   }
}

回復(fù)

使用道具 舉報

10#
ID:213173 發(fā)表于 2021-12-15 11:40 | 只看該作者
LAW1100 發(fā)表于 2021-12-15 08:06
代碼是模塊化的,太多了,上傳這里你們看了要花大量時間理解,用的芯片是STC8H1K08這款的

不能正常讀寫eeprom的常見原因是受中斷干擾或VCC電壓不穩(wěn)且過低。
回復(fù)

使用道具 舉報

11#
ID:322939 發(fā)表于 2021-12-15 13:49 | 只看該作者
wulin 發(fā)表于 2021-12-15 11:40
不能正常讀寫eeprom的常見原因是受中斷干擾或VCC電壓不穩(wěn)且過低。

為何第一扇區(qū)的第1和2地址能正常讀寫,其它數(shù)據(jù)卻不能正常讀寫呢?何況在進(jìn)行EPROM操作時試過將中斷關(guān)閉寫入后再開中斷也不行,供電電壓是3.3V,
回復(fù)

使用道具 舉報

12#
ID:624769 發(fā)表于 2021-12-15 14:11 | 只看該作者
LAW1100 發(fā)表于 2021-12-15 08:06
代碼是模塊化的,太多了,上傳這里你們看了要花大量時間理解,用的芯片是STC8H1K08這款的

所以說, 一直強(qiáng)調(diào),要先說芯片型號, 就是沒人聽。

進(jìn)入 Main 以后  一定要寫一句:

IAP_TPS = 24;     // 這里具體數(shù)值 取決于你的晶振速度 多少  MHz  四舍五入原則  24MHz  就寫24,22.1184MHz 就寫 22
回復(fù)

使用道具 舉報

13#
ID:322939 發(fā)表于 2021-12-15 14:31 | 只看該作者
188610329 發(fā)表于 2021-12-15 14:11
所以說, 一直強(qiáng)調(diào),要先說芯片型號, 就是沒人聽。

進(jìn)入 Main 以后  一定要寫一句:

這位大佬,這一句為什么要特別加在Main里呢,例程和手冊也沒說明。我在另一模塊設(shè)置里也有這句.
/***********初始化*************/
void IapIdle()
{
    IAP_CONTR =0;                           
    IAP_CMD =0;                                
    IAP_TRIG =0;                              
    IAP_ADDRH =0x80;                           
    IAP_ADDRL =0;
}
/************讀數(shù)據(jù)************/
u8 IapRead(u16 addr_c)
{
     char dat;
     u8 q;
    IAP_CONTR=0x80;                        
    IAP_TPS=24;                  //頻率設(shè)置24MHZ
    IAP_CMD=1;                                
    IAP_ADDRL=addr_c;                           
    IAP_ADDRH=addr_c>>8;                     
    IAP_TRIG=0x5a;                           
    IAP_TRIG=0xa5;                           
    for(q=0;q<3;q++);
    dat=IAP_DATA;                             
    IapIdle();                                 

    return dat;
}
/*************寫數(shù)據(jù)***********/
void IapProgram(u16 addr, u16 dat)
{
     u8 v;
    IAP_CONTR=0x80;                        
    IAP_TPS=24;                                //24MHZ
    IAP_CMD=2;                                
    IAP_ADDRL=addr;                           
    IAP_ADDRH=addr>>8;                     
    IAP_DATA=dat;                           
    IAP_TRIG=0x5a;                           
    IAP_TRIG=0xa5;                           
   for(v=0;v<3;v++);
    IapIdle();                                 
   
}
/***************擦除************/
void IapErase(u16 addr_a)
{
    u8 u;
    IAP_CONTR=0x80;                        
          IAP_TPS=24;                                //24MHz
    IAP_CMD=3;                                
    IAP_ADDRL=addr_a;                        
    IAP_ADDRH=addr_a>>8;                  
    IAP_TRIG=0x5a;                           
    IAP_TRIG=0xa5;                           
    for(u=0;u<3;u++);                                    
    IapIdle();                                
  
}
回復(fù)

使用道具 舉報

14#
ID:322939 發(fā)表于 2021-12-15 15:27 | 只看該作者
IAP_TPS=24;這句我加在main的開頭或者后面(while里)也是不行,只有第一扇區(qū)的數(shù)據(jù)能讀寫,其它讀寫不了
回復(fù)

使用道具 舉報

15#
ID:226055 發(fā)表于 2021-12-15 16:53 | 只看該作者
   STC8H系列的在對片內(nèi)E2PROM操作時(片內(nèi)FLASH亦然),多了個IAP_TPS寄存器,這是對以前單片機(jī)(比如STC15系列)的優(yōu)化。這樣對E2PROM的操作所需時間硬件自動控制,用戶只需根系統(tǒng)工作頻率配置
IAP_TPS寄存器即可。手頭有艾克姆科技STC8H3K64S4開發(fā)板的源碼,已測試,好用。附件附上。

    1、上個圖片,實驗是通過串口調(diào)試助手來操作片內(nèi)FLASH的。



    2、片內(nèi)FLASH操作是需要下載時分配一下E2PROM空間的,如果單片機(jī)本身有E2PROM則無需分配。

    3、在對分配了的E2PROM操作時,地址空間不需要加偏移量,即依然從0x0000來操作。這和之前對STC15系列片內(nèi)FLASH操作不一樣,請知悉。

    4、源碼見附件,同為STC8H,寄存器基本一致,具有很高的參考價值。













實驗2-16-1:片內(nèi)FLASH讀寫 - 單個字節(jié)(STC8H3K64S4).rar

1.16 MB, 下載次數(shù): 27

回復(fù)

使用道具 舉報

16#
ID:213173 發(fā)表于 2021-12-15 17:40 | 只看該作者
LAW1100 發(fā)表于 2021-12-15 14:31
這位大佬,這一句為什么要特別加在Main里呢,例程和手冊也沒說明。我在另一模塊設(shè)置里也有這句.
/****** ...

void IapProgram(u16 addr, u16 dat)   這樣寫形參 u16 dat 的依據(jù)是什么?
回復(fù)

使用道具 舉報

17#
ID:322939 發(fā)表于 2021-12-15 17:44 | 只看該作者
wulin 發(fā)表于 2021-12-15 17:40
void IapProgram(u16 addr, u16 dat)   這樣寫形參 u16 dat 的依據(jù)是什么?

u16這是在另一模塊宏定義無符號變量的縮略
回復(fù)

使用道具 舉報

18#
ID:624769 發(fā)表于 2021-12-15 18:47 | 只看該作者
先說 你 main() 函數(shù)里的問題
TempSum=IapRead(0x0001);//讀第一扇區(qū)
TempSum=TempSum<<8|IapRead(0x0002);


上面這兩句代碼,我能理解, 把 0x0001 0x0002 的內(nèi)容讀出來,然后,合并。

TESample=IapRead(0x0404);//讀第三扇區(qū)
  TESample=camp_data<<8|IapRead(0x0405);

但是,這兩句代碼,我無法理解,你能解釋一下么??? 包括哪個 camp_data 是從哪里來的?


然后,你的寫Eeprom 子函數(shù) 的 u16 dat  也是有問題的。 不過等上面的問題你解答后,我們再討論后續(xù)問題。
回復(fù)

使用道具 舉報

19#
ID:213173 發(fā)表于 2021-12-15 20:07 | 只看該作者
LAW1100 發(fā)表于 2021-12-15 17:44
u16這是在另一模塊宏定義無符號變量的縮略

就從你的答復(fù)看,你根本沒有理解我為什么這么問。難道你把無符號字符型數(shù)據(jù)宏定義為u16?由此推斷你的程序中類似問題不會少。出現(xiàn)異常就不足為奇了。
回復(fù)

使用道具 舉報

20#
ID:57657 發(fā)表于 2021-12-15 21:49 | 只看該作者
LAW1100 發(fā)表于 2021-12-15 09:44
如果將數(shù)據(jù)全部放在第一扇區(qū),也是只有第一個數(shù)據(jù)能讀出來,其它數(shù)據(jù)很大(FFH)不是原來數(shù)據(jù),存不了

你定義的都是全局變量,也不知道是什么中斷修改了變量的值。

單片機(jī)內(nèi)置EEPROM 不是真正的EEPROM,而是Flash閃存。
只有字節(jié)讀、字節(jié)寫、扇區(qū)擦除,沒有字節(jié)擦除,二進(jìn)制1寫0不可逆,只有擦除才可以全部恢復(fù)為1,一擦一扇區(qū)(512字節(jié))。
回復(fù)

使用道具 舉報

21#
ID:47286 發(fā)表于 2021-12-16 00:07 | 只看該作者
wulin 發(fā)表于 2021-12-15 20:07
就從你的答復(fù)看,你根本沒有理解我為什么這么問。難道你把無符號字符型數(shù)據(jù)宏定義為u16?由此推斷你的程 ...

18 19樓兩位大佬 跟風(fēng)討論一下這句 void IapProgram(u16 addr, u16 dat)

第一個用u16沒問題 是地址 16位的 第二個是要寫入的數(shù)據(jù) 應(yīng)該是8位的 但我覺得寫u16也沒事吧 只有8位 就是說即便16位也只取低8位 高8位自動就扔了 如果賦值是16位的 那結(jié)果也是低8位 先不說結(jié)果對不對 應(yīng)該能正常執(zhí)行吧
回復(fù)

使用道具 舉報

22#
ID:322939 發(fā)表于 2021-12-16 08:12 | 只看該作者
188610329 發(fā)表于 2021-12-15 18:47
先說 你 main() 函數(shù)里的問題
TempSum=IapRead(0x0001);//讀第一扇區(qū)
TempSum=TempSum

(TESample)這個是AD值與設(shè)定值相加減后的數(shù)值,存入第三扇區(qū)第4和5的地址(因為是16位,所以拆分8位存入,然后讀出來合并的)。在形參里無符號變量不能這樣使用(u16 ...)???
回復(fù)

使用道具 舉報

23#
ID:322939 發(fā)表于 2021-12-16 08:14 | 只看該作者
wulin 發(fā)表于 2021-12-15 20:07
就從你的答復(fù)看,你根本沒有理解我為什么這么問。難道你把無符號字符型數(shù)據(jù)宏定義為u16?由此推斷你的程 ...

#define  u16  unsigned int  這樣定義沒問題呀
回復(fù)

使用道具 舉報

24#
ID:322939 發(fā)表于 2021-12-16 08:20 | 只看該作者
dzbj 發(fā)表于 2021-12-16 00:07
18 19樓兩位大佬 跟風(fēng)討論一下這句 void IapProgram(u16 addr, u16 dat)

第一個用u16沒問題 是地址 1 ...

第二扇區(qū)存入的是8位數(shù)據(jù),它的數(shù)值很小(要么是0,要么是1或2)用來區(qū)分讀取那個區(qū)塊功能,如:if(0==camp_dataFlag)
{
........
}
if(1===camp_dataFlag)
{
  ...........
}
回復(fù)

使用道具 舉報

25#
ID:322939 發(fā)表于 2021-12-16 08:21 | 只看該作者
dzbj 發(fā)表于 2021-12-16 00:07
18 19樓兩位大佬 跟風(fēng)討論一下這句 void IapProgram(u16 addr, u16 dat)

第一個用u16沒問題 是地址 1 ...

現(xiàn)在讀出來是255的數(shù)據(jù),根本存不了。
回復(fù)

使用道具 舉報

26#
ID:213173 發(fā)表于 2021-12-16 08:38 | 只看該作者
dzbj 發(fā)表于 2021-12-16 00:07
18 19樓兩位大佬 跟風(fēng)討論一下這句 void IapProgram(u16 addr, u16 dat)

第一個用u16沒問題 是地址 1 ...

不是說這樣寫一定會出錯,而是說寫代碼要嚴(yán)謹(jǐn),要養(yǎng)成好習(xí)慣。從這點(diǎn)推斷樓主的程序中類似問題可能還有。曾經(jīng)有人把無符號整型數(shù)據(jù)宏定義u8,無符號字符型數(shù)據(jù)宏定義u16。特別是使用他人不規(guī)范的模塊,結(jié)果出錯亂找,一會懷疑芯片,一會懷疑Keil,搞得焦頭爛額。
回復(fù)

使用道具 舉報

27#
ID:47286 發(fā)表于 2021-12-16 10:47 | 只看該作者
wulin 發(fā)表于 2021-12-16 08:38
不是說這樣寫一定會出錯,而是說寫代碼要嚴(yán)謹(jǐn),要養(yǎng)成好習(xí)慣。從這點(diǎn)推斷樓主的程序中類似問題可能還有。 ...

大佬說的是 好習(xí)慣很重要 可用避免很多麻煩
回復(fù)

使用道具 舉報

28#
ID:47286 發(fā)表于 2021-12-16 10:58 | 只看該作者
LAW1100 發(fā)表于 2021-12-16 08:20
第二扇區(qū)存入的是8位數(shù)據(jù),它的數(shù)值很小(要么是0,要么是1或2)用來區(qū)分讀取那個區(qū)塊功能,如:if(0==ca ...

你的問題我?guī)筒簧?因為我自己水平就不怎么樣 僅建議 你試試不寫其它程序 只寫扇區(qū)讀寫函數(shù) 而且只寫0 1 2扇區(qū)第0位 如果能寫進(jìn)去 那就是你程序的事 再找毛病吧 不做最基本的測試 只問為什么別人也確實不知道怎么弄 畢竟程序是你寫的 別人不知道啊

STC的片子各系列我基本都用過 雖然操作上略有不同 但沒出現(xiàn)你說的問題 我自己用的扇區(qū)操作函數(shù)也是封裝的模塊 寫不同程序或者不同片子只是調(diào)用 也沒出過什么問題 就像聽說有人喝白開水得腳氣 貌似根本不可能的事 自己先就蒙b 還咋幫別人
回復(fù)

使用道具 舉報

29#
ID:322939 發(fā)表于 2021-12-17 08:56 | 只看該作者
已經(jīng)找到問題原因了,多謝各位熱心解答。
回復(fù)

使用道具 舉報

30#
ID:161164 發(fā)表于 2021-12-17 10:54 | 只看該作者
LAW1100 發(fā)表于 2021-12-17 08:56
已經(jīng)找到問題原因了,多謝各位熱心解答。

不說一下問題原因嗎?
讓后人遇到相同問題有一個解決的方向
回復(fù)

使用道具 舉報

31#
ID:879348 發(fā)表于 2021-12-17 11:13 | 只看該作者
lkc8210 發(fā)表于 2021-12-17 10:54
不說一下問題原因嗎?
讓后人遇到相同問題有一個解決的方向

那肯定是代碼問題
回復(fù)

使用道具 舉報

32#
ID:322939 發(fā)表于 2021-12-17 17:57 | 只看該作者
讀出來的數(shù)據(jù)被中斷打亂了,因為剛開機(jī)時顯示正常,但過了1秒后顯示跳變,正在查找是那里造成的。
回復(fù)

使用道具 舉報

33#
ID:624769 發(fā)表于 2021-12-17 19:44 | 只看該作者
LAW1100 發(fā)表于 2021-12-16 08:12
(TESample)這個是AD值與設(shè)定值相加減后的數(shù)值,存入第三扇區(qū)第4和5的地址(因為是16位,所以拆分8位存 ...

仔細(xì)看 在18樓問你的問題,

TESample=IapRead(0x0404);//讀第三扇區(qū)
  TESample=camp_data<<8|IapRead(0x0405);

紅字部分 到底什么 鬼??
回復(fù)

使用道具 舉報

34#
ID:960619 發(fā)表于 2021-12-17 22:30 來自手機(jī) | 只看該作者
Stc8h1k08用官方例程,今天剛用過
回復(fù)

使用道具 舉報

35#
ID:322939 發(fā)表于 2021-12-18 08:50 | 只看該作者
188610329 發(fā)表于 2021-12-17 19:44
仔細(xì)看 在18樓問你的問題,

TESample=IapRead(0x0404);//讀第三扇區(qū)

我在這里輸入代碼時輸錯了,忘了改過來。抱歉
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区不卡视频 | 日韩欧美在线视频观看 | 久久久91精品国产一区二区三区 | 羞羞涩涩在线观看 | 亚洲视频国产视频 | 韩日精品视频 | 成年人网站免费视频 | 成人在线一区二区三区 | 黄视频网站免费观看 | 亚洲欧美一区二区三区国产精品 | 亚洲国产一 | 亚洲一区二区在线 | 精品一区二区不卡 | 国产农村妇女毛片精品久久麻豆 | 日日噜| 超碰人人人人 | 亚洲激精日韩激精欧美精品 | 日本免费一区二区三区视频 | 国产目拍亚洲精品99久久精品 | 天天玩天天干天天操 | 亚洲 精品 综合 精品 自拍 | www.五月天婷婷.com | 九九视频网 | 国产精品视频久久久 | 99视频在线播放 | 欧洲一区在线观看 | 亚洲一区二区 | 精品国产乱码久久久久久中文 | 欧美一区二区三区在线看 | 久久99成人| 久久精品久久精品久久精品 | 欧美午夜精品 | 亚洲免费av一区 | 日韩一区二区精品 | 成人精品国产一区二区4080 | 99热精品国产 | 一区二区在线 | 97在线观看 | 中文在线а√在线8 | 久久久久国产精品 | 日韩精品一区二区三区在线观看 |