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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

合泰單片機Holtek C Compiler V3編譯器使用手冊與FAQ資料下載

[復制鏈接]
跳轉到指定樓層
樓主
合泰單片機編譯器和Touch MCU Workshop v3.0使用手冊資料分享給大家學習

本手冊主要講述了 C語言的基礎語言,再以此為基礎,進而講述 C compiler V3的語法結構和其優化功能,幫助程序員快速使用 C compiler V3 開發應用程序。C compiler V3 是由 GCC 4.6.2 以上版本移植過來的,除后端輸出,其余部份都可參考GCC 與機器無關的相關使用手冊。
這里假定讀者已具備如下基本素質:
  ● 知道如何編寫 C 程序
  ● 已經閱讀并理解所使用單片機的數據手冊

第一章 C 語言基礎知識
本章將由淺到深的概括 C 語言的基礎語法及結構特點,方便后面學習 C compiler V3,由于受限于單片機的硬件結構,因此本章的描述基于標準 C 語言( 這里指 C99 標準 ),兼容 C compiler V3 之語法。
主要包含如下內容:
  ● 數據類型、運算符與表達式
  ● 函數
  ● 數組與指針
  ● 結構體、聯合體與枚舉
  ● 預處理
  ● 流程控制
  ● 作用域
1.1 數據類型、運算符與表達式
1.1.1 C的數據類型
數據類型確定了變量在內存中占用的存儲單元,所以在聲明變量時首先必須要確定變量的類型,數據類型可以分為基本數據類型、構造數據類型、指針類型(Pointer) 和空類型 (void),基本數據類型有整型、字符型、浮點型,構造類型則有數組、結構體、共享體和枚舉,利用這些構造類型可以構造出所需要的數據結構。
列舉基本數據類型 (C compiler V3) 如表 1-1-1:


1.1.2.2 變量及其定義
變量是在程序運行時,其值可以變化的,每個變量都應該有一個名字,以便被引用,并區分大小寫,C 語言規定,所有的變量都必須先宣告,后使用,變量在定義時必指定數據類型,這樣編譯時才可為其分配對應的存儲單元。如int a;。標識符是用來標識變量、常量、函數、類型等的字符系列,C 語言規定標識符只能由字母、數字、下劃線構成,且必須以字母和下劃線作為起始符。
1.1.2.3 變量的存儲方式
在 C 語言中每個變量和函數都有兩個屬性:數據類型和數據的存儲方式,存儲方式可分為 2 種,靜態存儲和動態存儲,具體又包含 4 種,自動的 (auto)、靜態的(static)、寄存器的(register)、外部的(extern)。
1、auto:函數中的局部變量,如果不專門聲明為 static 的存儲方式,則默認為auto,所以在函數內 auto char a與 char a是等價的。
2、static:可分為全局靜態存儲和局部靜態存儲,全局變量加了 static 后,變量只能在本文件中引用,局部靜態存儲則是局部變量的值在函數調用結束后不消失而保留原值,在下一次調用該函數時,該變量已經有值了。
3、register:上述兩種變量是存放在內存中的,而 register 則是把變量存放在寄存器中,基于單片機的特殊情況,這里不展開敘述。
4、extern:使用另一個檔中定義的變量,表示該變量是一個已經在外部定義過的變量,只要加上extern 就可以使用該變量了,后面有專門的講述。

5、volatile:一個類型修飾符 (type specifier)。它是被設計用來修飾被不同程序
訪問和修改的變量,使用 volatile 修飾的變量,不會因編譯程序的優化而被省去。
建議定義成 volatile 的變量:特殊寄存器,中斷函數使用到的變量,為某些特殊用途的代碼定義的變量 ( 比如 delay 功能 )。
其它一般變量不建議定義成volatile,這樣會大大降低編譯程序的優化功能。

1.1.3 C語言運算簡介
C 語言的運算十分豐富,主要包括算術運算,邏輯運算、位運算、賦值運算、條件運算、逗號運算等,各種運算及其之間的優先級見附錄 B。
1.1.3.1 類型轉換
類型轉換規則:
  ● 混合類型的算術運算
  ♦ 小于int類型的轉換為 int 類型
  ♦ 小類型向大類型轉換(轉換過程見圖 2_1_1)
  ● 不同類型之間的賦值
  ♦ 以賦值語句左邊的類型為轉換后類型
  ● 函數參數 / 返回值的傳遞
  ♦ 以參數/ 返回值的類型為轉換后類型


FAQ目錄:
目錄

Part I V3 基本介紹  5
11 V3 的版本歷程 ? 5
12 新版改進的功能  5
13 V3 的使用手冊有哪些 ? 6
14 V3 不支持的 MCU 有哪些 ?  6
15 什么是長指令架構 MCU?  7
Part II V3 與 V2 的不同  8
21 V3 與 V2 語法有何不同 ? 與 V1, V2,標準 C 的比較 ? 8
22 V3 對 V2 改進的功能  8
23 將 V2 程序改至 V3 常見的錯誤  8
231 ISR warning  8
232 內嵌匯編 error  9
233 bit 變數 error  9
234 標志位 error  9
235 內部函數 error  9
236 絕對地址變數 error  10
237 函式指標 error  10
Part III V3 的特殊語法及用法  11
31 如何將一個變量定義于指定 bank? 11
32 如何將函數定義于指定地址 ?  11
33 如何在 V3 中使用混合語言 (mixed language)?  11
34 V3 代碼生成器  11
Part IV V3 常見的 error, warning 及其解決方式 13
41 error“multi-ram-bank should be equipped with mp1” 13
42 error“internal compiler error:xxxx”  13
43 error (L1038)“RAM (bank0) overflow, memory allocation fails for section …” 13
44 error (L1038)“ROM/RAM (bank*) overflow, memory allocation fails for section …”
13
45 warning (L3010) (absolute address: xxh, length: x) is overlay with (absolute address: xxh, length: x) 13
46 warning (L3009): Same sub function exists between ISR(04H) CMG and MAIN CMG:
_func  13
Part V V3 常見的問題及其解決方式  14
51 如何在 V3 使用 bit 變量 ?  14
52 如何在 V3 使用外部定義 bit 變量 ?  14
53 程序 reset 后,變量被清 0 的解決方式 ?  14
54 指定地址的變量,其他文件如何引用 ?  15
55 對于寫 EEPROM 有限制的 MCU( 需連續 set wren, wr, flag),如何使用 V3 寫
EEPROM?  15
56 使用 V3 給 bit flag 賦值變量的注意事項  17
57 在 V3 使用 ROM BP 的注意事項  18



58 混合語言使用 ROM BP 的注意事項  18
59 如何使用 CMD 命令編譯 C 工程?  19
510  混合語言工程在 asm 文件中使用 table read 的注意事項  19
511  中斷函數中使用 inline assembly 注意事項  19
512 用其它方式修改 const 變量值 ( 比如燒錄時修改 ROM),compiler 執行結果不變, 如何解決 ?  20
513 使用內嵌匯編語言的注意事項  20
Part VI V3 常見的優化問題 21
61 使用 V3 優化參數后,在 watch window 上看不到某些變數的 debug 信息 ?  21
62 中斷與一般函數訪問同一個全局變量,此全局變量的相關語句被優化掉 ?  21
63 V3 的優化功能及其對 debug 的影響 ?  21
64 使用 V3 compiler, debug 時行號出錯 ? 21
65 使用 V3 compiler,用于延時的循環代碼被優化,怎么解決 ?  22
66 使用內嵌匯編,被優化掉 ?  23
67 選擇優化參數后,延時函數時間發生變化。  23

1.5 什么是長指令架構 MCU?
A:具有 LMOV,LSET 等長指令(長度為 2word)的 MCU,如 HT66F70A,一顆 MCU 是否有長指令,可以查看它的 datasheet,是否有 LMOV 等長指令,每條 長指令比對應的普通指令增加 1 個指令周期。

2.3 將 V2 程序改至 V3 常見的錯誤

2.3.1 ISR warning
e.g.
#pragma vector Int_isr @ 0x04 void Int_isr() {}
warning: ignoring #pragma vector Int_isr [-Wunknown-pragmas]
解決方式:
使用正確的中斷函式語法:void    attribute((interrupt(0x04))) Int_isr() {}
詳見《C Compiler V3 使用手冊》2.2.1 節
注意:
i:因為是 warning,如果不修改也可以編譯通過,只是編譯程序會將它當一般 函式處理,而不是中斷函式
ii:#pragma 的其他關鍵詞 rambank/function 等,也會報此 warning,表示在 V3
版此功能無效。

2.3.2 內嵌匯編 error
e.g.
#asm nop
#endasm
error: invalid preprocessing directive #asm error: invalid preprocessing directive #endasm 解決方式:
選擇參數“兼容 Holtek C V2 內嵌匯編語言”
詳見語法書《 C Compiler V3 使用手冊》2.2.5 節
2.3.3 bit 變數 error
e.g.bit a;
error: unknown type name 'bit'
解決方式:使用 HT-IDE3000 V7.93 以上版本
2.3.4 標志位 error
e.g. _40_1 = 1;
error: '_40_1' undeclared (first use in this function)
解決方式:
1. 用結構體位域定義 bit flag:
bit_type bit_var  attribute  ((at(0x40)));
#define _40_1 bit_var.bit1
詳見《C Compiler V3 使用手冊》2.2.3 節
2. 使用 bit 定義:
static volatile bit flag1  attribute  ((at(0x40),bitoffset(1)));
詳見《C Compiler V3 使用手冊》2.2.11 節
2.3.5 內部函數 error
e.g. _delay(2);
Error(L2001): Unresolved external symbol '    delay' in file
解決方式:
改成:
#include “ht66f50.h”
GCC_DELAY(2);
詳見《C Compiler V3 使用手冊》2.2.3 節



2.3.6 絕對地址變數 error
e.g.
unsigned char a @ 0x40;
error: stray '@' in program
error: expected '=', ',', ';', 'asm' or '    attribute   ' before numeric constant
解決方式:
改成以下語法:
volatile static unsigned char var_name  attribute  ((at(0x40)));
詳見《C Compiler V3 使用手冊》2.2.2 節
2.3.7 函式指標 error
e.g.
void FileFunc(){} void EditFunc(){} void main()
{
typedef void (*funcp)(void);
funcp pfun= FileFunc;
pfun();
pfun = EditFunc;
pfun();
}
error: incompatible types when initializing type 'funcp' using type 'void()' error: incompatible types when assigning to type 'funcp' from type 'void()' 解決方式:目前 V3 尚不支持 function pointer

Part III V3 的特殊語法及用法
3.1 如何將一個變量定義于指定 bank?
A:若是無長指令架構的 MCU,只能將變量定義在指定地址,如:
volatile static unsigned char var_name    attribute    ((at(0x140)));
詳見《C Compiler V3 使用手冊》2.2.2 節
若 是 長 指 令 架 構 的 MCU, 無 需 特 別 指 定,linker 會 自 動 分 配 變 量 到 任 意
bank。
3.2 如何將函數定義于指定地址 ?
A:IDE 7.8 以上版本才支持此功能,語法:
char  attribute ((at(0x373))) foo (char parm)
{}
表示將函數 foo 指定在地址 0x373. 詳見《C Compiler V3 使用手冊》2.2.6 節
3.3 如何在 V3 中使用混合語言 (mixed language)?
A:參考《C Compiler V3 使用手冊》第 2.5 節
3.4 V3 代碼生成器
為協助用戶更好的使用 V3 專用語法,IDE3000 7.83 以上版本增加工具“V3 代 碼生成器”,位于菜單欄 → 工具 → V3 代碼生成器。它可以成生 bit 變量,中 斷語法,絕對地址變量,內嵌匯編,delay 函數及指定其它 bank 的變量等語法, 具體可查看 HT-IDE3000 使用手冊第三章“V3 代碼生成器”部份。


Part IV V3 常見的 error, warning 及其解決方式
4.1 error“multi-ram-bank should be equipped with mp1”
A:請確認 MCU 是否為長指令架構,若是,請使用 IDE7.8 以上版本
4.2 error“internal compiler error:xxxx”
A:compiler 內部錯誤,請與 Holtek 公司返饋

4.3 error (L1038)“RAM (bank0) overflow, memory allocation fails for section ….”
A:對于短指令架構的 MCU,C Compiler 會默認把變量配置到 RAM bank0( 長指 令的 MCU 可以自動配置到任意 bank),當 bank0 滿了之后,會報 RAM bank 0 overflow 出現此信息后,做法如下:
● 確認 unsigned int/long 類型的大小 ( 特別是從 V1 C Compiler 移植過來的程序 )
● 若為 multi RAM bank MCU,可手動將全局變量調到其它 bank,參考 3.1

4.4 error (L1038)“ROM/RAM (bank*) overflow, memory allocation fails for section ….”
A:ROM 或 RAM 空間不夠出現此信息后,做法如下:
● 檢查是否打開優化參數 -Os,參考《C Compiler V3 使用手冊》2.1.4 節
● 刪減不必要的程序

4.5 warning (L3010) (absolute address: xxh, length: x) is overlay with (absolute address: xxh, length: x)
A:出現此 warning 的情況:
不同變量定義的地址重迭,如下,_b 與 _a 地址重迭,需將 _b 定義在 0x0142
DEFINE_SFR(unsigned int _a, 0x0140); DEFINE_SFR(unsigned char _b, 0x0141);    //error

4.6 warning (L3009): Same sub function exists between ISR(04H) CMG and
MAIN CMG: _func
A:中斷服務程序(04H)與主函數共同調用子函數 func,解決方式:
● 避免共同調用
詳見《C Compiler V3 使用手冊》2.2.1 節

Part V V3 常見的問題及其解決方式
5.1 如何在 V3 使用 bit 變量 ?
A:bit flag1; 詳見《C Compiler V3 使用手冊》2.2.11 節。
5.2 如何在 V3 使用外部定義 bit 變量 ?
A:extern bit flag1;
5.3 程序 reset 后,變量被清 0 的解決方式 ?
A:IDE7.8 版本將提供選擇不初始化的方式:不選擇下面選項“將未初始化的…”
即可。


5.4 指定地址的變量,其他文件如何引用 ?
A:因指定地址的變量 ( 非 const) 需定義成 static,其它作用域只在本文件,所以可 以將其定義在頭文件里面,若有其它文件需要用到,直接 include 這個頭文件 即可,例:
//Define_var.h
static volatile unsigned var1  attribute  ((at(0x180)));
//test1.c
#include “Define_var.h”
void foo1()
{


}
//test2.c

var1 = 1;

#include “Define_var.h”
void foo2()
{
var1 = 2;
}
注:若是 const 變量,不需要定義成 static,用 extern 即可,例:
//test1.c
const int  attribute ((at(0x3400))) bb[3]={1,2,3};
//test2.c
extern const int bb[3];
int b;
void fun()
{
b=bb[2];
}
5.5 對于寫 EEPROM 有限制的 MCU( 需連續 set wren, wr, flag),如何使用
V3 寫 EEPROM?
A:
i:在 V3 中,因為 _rden 與 _rd 是在 bank1,使用長指令,與 datasheet 所規定的 指定不同。
ii:這種對指令有嚴格要求的功能,建議使用內嵌匯編達成,因為 C 不敢保證 按特定的方式翻譯。
iii:若要產出與 datasheet 中的連續指令,V3 需改成如下寫法:


5.6 使用 V3 給 bit flag 賦值變量的注意事項
范例:
unsigned char flag;
_pa2=flag;

說明:
編譯程序只關心計算的結果,而不管計算過程,為減少 CODE 的指令輸出,編 譯程序會翻譯左邊的指令。
C 語言與匯編不同的是,一條語句不只翻譯出一條指令,所以在語句執行結束 前,計算未完成。
影響:
不管 flag 值為多少,PA2 都會被先 CLR,如果在此時進入中斷,而中斷中有用 到 PA,則會影響到執行結果。
解決方式:
● 在 bit 賦值前先把中斷關掉,等計算完后再打開 總結: 多字節變量的計算,如果中斷中有判斷此變量,在計算未完成前,都不可進入
中斷。

5.7 在 V3 使用 ROM BP 的注意事項
對于多 ROM BANK MCU,若整個工程都用 C 語言寫,那么,任何時候,用戶 都不需要設定 ROM BP,Linker 會自動設置 ROM BP,特別注意,若用戶在程 序中改動到 ROM BP,那么程序將有可能跑飛,用戶需特別小心,在設置 RAM BP 時,也應注意不要用到 ROM BP。若工程使用混合語言編程,用 C 函數 call 匯編 section 時,應使用 C 語言或 fcall,在匯編 section call C 函數時,需在 CALL 前設 BP,前在 CALL 之后恢復 BP。
范例:
;;Test1.asm
extern _fun2:near public _fun1
_fun1 .section ‘code’
_fun1 proc
mov a, bank _fun2
mov [04H],a ;; 假設 ROM BP 在 04h
call _fun2
mov a,bank_fun1 mov [04H],a
_fun1 endp
//Test2.c
extern void FUN1();
// 或者 asm(“extern _FUN1:near”);
void main()
{
FUN1();
// 或者 asm(“fcall _FUN1”);
}
void fun2()
{}
5.8 混合語言使用 ROM BP 的注意事項
參考 5.7 節
5.9 如何使用 CMD 命令編譯 C 工程?
compiler,assembler,linker 的參數詳見《V3 C Compiler 使用手冊》附錄 C
例:
a. 設置環境變量:
set HTCFG=C:\Program Files\Holtek MCU Development Tools\HT-IDE3000V7.x\MCU set HTBIN=C:\Program Files\Holtek MCU Development Tools\HT-IDE3000V7.x\BIN set HTINCLUDE=C:\Program Files\Holtek MCU Development Tools\HT-IDE3000V7. x\INCLUDE_V3
set HTLIB=C:\Program Files\Holtek MCU Development Tools\HT-IDE3000V7.x\LIB

b. 編譯 .c 文件
…\hgcc32.exe  t1.c –g –Os –I “%HTINCLUDE%” -o t1.asm
…\hgcc32.exe  t2.c –g –Os –I “%HTINCLUDE%” –o t2.asm

c. 編譯 .asm 文件
…\hasmgcc32.exe /hide=12345678 /chip=HT66F50 /case /z “t1.asm”
…\hasmgcc32.exe /hide=12345678 /chip=HT66F50 /case /z “t2.asm”

d. link 所有 obj,lib 產生 .tsk 文件
…\hlinker32.exe /MCU=HT66F50 @ “C:\link-test.bat”
link-test.bat 內容:
“t1.obj”+ “t2.obj”, “test.tsk”, “test.map”, “test.dbg”, “libholtekgcc.lib”;

5.10  混合語言工程在 asm 文件中使用 table read 的注意事項 如果一個工程即有 .c 又有 .asm 文件,那么在 .asm 文件中使用 table read 應注意 , 先將中斷關掉,執行完后再打開。比如:
clr emi tabrd r0 inc tblp mov a,tblh

set emi

5.11  中斷函數中使用 inline assembly 注意事項 在中斷及其調用的函數中如果有使用 inline assembly,且 inline assembly 有使用 到特殊寄存器 ( 如 MP, TBLP, TBHP, TBLH 等 ),則用戶需要自己保存這些寄存
器,如下語句:
DEFINE_ISR(isr04,0x04)
{
asm(“mov a,[01h]”); // mp0 = [01h]
asm(“mov temp_mp0,a”); asm(“mov a,80h”); asm(“mov [01h],a ”); asm(“mov a,[00h]”); asm(“mov a,temp_mp0”); asm(“mov [01h],a”);
}

5.12 用其它方式修改 const 變量值 ( 比如燒錄時修改 ROM),compiler 執行 結果不變,如何解決 ?
比如:定義
  attribut ((at(0x400)))
const unsigned char array[] = {0,1,2,3,4,5,6,7};
燒錄時把 ROM 的 400H~410H 清 0,執行 temp = array[7]; 時,temp 值仍為 7。
解決方式:
把 array[] 定義在與 temp = array[7]; 不同的 C 文件。
5.13 使用內嵌匯編語言的注意事項
匯編語言中使用到的變量、函數名、寄存器、標志位應遵循匯編語言的定義。
1. 如果全局變量 / 函數本文件只在內嵌匯編語言中使用,應增加匯編語言聲明, 比如:
asm(“extern _a:byte”); asm(“extern _func:near”); void main()
{
asm(“clr _a”);
asm(“call _func”);
}
2. 寄存器 / 標志位應先定義后使用,可 include INC 文件,比如:
asm(“#include HT66F60.INC”)
void main()
{
asm(“CLR ACC”); asm(“MOV TBHP,A”); asm(“CLR C”);
}
3. 匯編語言中的名字要區分大小寫。
Part VI V3 常見的優化問題
6.1 使用 V3 優化參數后,在 watch window 上看不到某些變數的 debug 信息 ?
A:因啟用優化參數,變量有可能被優化刪除,故沒有 debug 信息,若要在 debug
時觀察變量值,可以將此變量暫時定義為 volatile,debug 結束后再刪去,比如:
volatile int i, j, k;
6.2 中斷與一般函數訪問同一個全局變量,此全局變量的相關語句被優化掉 ?
A:一般函數與中斷沒有調用關系,compiler 不知中斷何時發生,會影響到一般函 數中的變量,因此,建議將此變量用 volatile 修飾,比如:
flag 在中斷 ISR_INT0 中使用到,又在 main 函數中用到,則應定義成 volatile:
volatile unsigned char flag;

說明:volatile:一個類型修飾符(type specifier)。它是被設計用來修飾被不同 函數訪問和修改的變數,使用 volatile 修飾的變量,不會因編譯程序的優 化而被省去。
建議定義成 volatile 的變量:特殊寄存器,中斷函式使用到的變量,為某些特殊 用途的代碼定義的變量 ( 比如 delay 功能 )。
6.3 V3 的優化功能及其對 debug 的影響 ?
A:詳見《C Compiler V3 使用手冊》第 3 章
6.4 使用 V3 compiler, debug 時行號出錯 ?
A:可能出現的情況:
a. 某些語句被優化掉而不譯出 code,自然也沒有 debug 信息。

b. 幾條語句翻譯出同一堆的 code,只顯示一條 line number。

這些情況會可能會影響 debug,但執行結果不會出錯,若不是這兩種情況,請回報。


6.5 使用 V3 compiler,用于延時的循環代碼被優化,怎么解決 ?
A:如下:

解決方法:將變量定義為 volatile,如下:

6.6 使用內嵌匯編,被優化掉 ?
如下:
asm(“mov %0,a”:”=m”(i));// 表示把 ACC 的值賦給 i,
因為之后變量 i 沒有被用到,所以這條語句被編譯程序優化掉,

如果要保留,可以改成:
asm volatile (“mov %0,a”:”=m”(i));
防止被優化

6.7 選擇優化參數后,延時函數時間發生變化。
A:延時函數的延時時間通常依賴于執行的指令數,選擇優化參數后,compiler 編 譯出的指令更精簡,從而影響延時時間,程序開發者應注意這點,在選擇優化 參數后,調整延時函數或使用 compiler 自帶的延時函數 GCC_DELAY(n)。

全部資料51hei下載地址:
合泰.pdf (2.21 MB, 下載次數: 81)
合泰2.pdf (7.59 MB, 下載次數: 55)
合泰3.pdf (6.46 MB, 下載次數: 53)

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

使用道具 舉報

沙發
ID:17771 發表于 2019-5-10 15:29 | 只看該作者
剛想用HT單片機,請幫助
回復

使用道具 舉報

板凳
ID:529540 發表于 2019-5-11 11:44 | 只看該作者
ysy6450 發表于 2019-5-10 15:29
剛想用HT單片機,請幫助

同樣在學習
回復

使用道具 舉報

地板
ID:342848 發表于 2019-8-28 11:05 | 只看該作者
合泰單片機性價比高,學習中
回復

使用道具 舉報

5#
ID:342848 發表于 2019-8-28 11:07 | 只看該作者
正在學習合泰觸摸單片機
回復

使用道具 舉報

6#
ID:721169 發表于 2020-4-3 12:48 來自觸屏版 | 只看該作者
謝謝分享
回復

使用道具 舉報

7#
ID:465596 發表于 2023-9-22 17:32 | 只看該作者
下載文件是 Touch MCU Workshop v3.0
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
久久精品亚洲| 在线永久看片免费的视频| 欧美特级黄色片| 一个人免费观看在线视频www| 国产精品国产三级国产aⅴ| 一级做a爰片性色毛片视频| 色的视频在线免费看| 日韩超碰人人爽人人做人人添| 久久成人久久鬼色| 欧美视频日韩视频在线观看| 国产精品扒开腿做爽爽爽视频| 国产一二三在线视频| avove在线播放| 91九色91蝌蚪| 美女在线视频免费| 午夜亚洲视频| 欧美最新大片在线看| 日本成人精品在线| 色一情一乱一伦一区二区三区日本 | 精品人妻无码一区二区三区| 色欲av永久无码精品无码蜜桃| 免费看男男www网站入口在线| 日韩伦理一区二区三区| 国产午夜精品久久久久久免费视| 亚洲天堂网在线观看| 日本一区二区在线视频| 亚洲天堂av中文字幕| 国产精品入口麻豆完整版| 亚洲美女尤物影院| 蜜桃传媒麻豆第一区在线观看| 欧美日韩国产首页在线观看| 91久久国产自产拍夜夜嗨| 国产一级免费大片| 蜜桃91麻豆精品一二三区| 久久国产精品高清一区二区三区| 精品久久不卡| 亚洲精品第1页| 欧美在线亚洲在线| 性欧美在线视频| 亚洲精品无码久久久| 69视频在线观看| 韩日欧美一区| 欧美日韩和欧美的一区二区| 国产精品伊人日日| 蜜桃av免费在线观看| eeuss第一页| 农村少妇一区二区三区四区五区| 亚洲国产精品成人久久综合一区| 欧美二区在线播放| 超碰在线公开97| 亚洲人成电影在线观看网| av资源网在线播放| 国产一区二区精品久久99| 亚洲美女动态图120秒| 国产精品一二三在线观看| 国产性生活视频| 玖玖综合伊人| av人人综合网| 乱人伦精品视频在线观看| 欧美精选在线播放| 欧美日韩在线精品一区二区三区| 欧美日韩在线观看成人| 日本免费视频www| 欧美大片aaaa| 色综合久久中文字幕综合网| 成人综合av网| 午夜69成人做爰视频| 国产男小鲜肉同志免费| 清纯唯美综合亚洲| 91福利视频久久久久| 国产精品久久久久久久小唯西川 | 999精品视频在线观看播放| 6080午夜| 欧洲乱码伦视频免费| 欧美天堂在线观看| 久久久久久99| 久久艹免费视频| 91精品大全| 久久99精品久久久久久国产越南| 亚洲最新在线视频| 亚洲熟妇国产熟妇肥婆| 蜜桃在线一区二区| 在线免费三级电影网站| 91女厕偷拍女厕偷拍高清| 91精品国产一区| av网站有哪些| 啊啊啊好爽视频| 欧美 日韩 国产精品免费观看| 欧美精品丝袜中出| 国产女人18毛片| 免费看黄网站在线观看| 国产经典一区| 1024成人网| y111111国产精品久久婷婷| 欧美成人精品一区二区免费看片 | 免费一级欧美在线观看视频| 国产清纯美女被跳蛋高潮一区二区久久w | 午夜激情av在线| 国产亚洲精品一区二区在线观看| 视频精品国内| 懂色av影视一区二区三区| 好吊色欧美一区二区三区四区 | 亚洲国产一区二区三区网站| 亚洲一二三区视频在线观看| 好吊妞www.84com只有这里才有精品| 日韩xxxx视频| 亚洲国产综合网| 欧美视频免费看| 亚洲综合激情另类小说区| 噜噜噜噜噜久久久久久91| 国产精品高潮呻吟av| 中文字幕av一区二区三区佐山爱| 国产精品电影院| 高清视频一区二区三区| 成人免费视频国产免费| 午夜影院在线播放| 亚洲免费在线观看| 欧美综合77777色婷婷| 一级黄色片免费| 成人18视频在线观看| 亚洲国产一区二区三区| 亚洲精品一卡二卡三卡四卡| 色wwwwww| 亚洲精品**不卡在线播he| 欧美精品久久天天躁| 黄在线观看网站| 色偷偷网站视频| 亚洲精品成人影院| 国产亚洲精品久久久久动| 亚洲天堂2024| 最新亚洲伊人网| 国产在线播放一区| 国产aaa精品| 国产成人免费观看视频| 亚洲一区站长工具| 精品久久久一区| 免费人成自慰网站| 日本色七七影院| 亚洲毛片av| 欧美激情区在线播放| 777777国产7777777| 国产秀色在线www免费观看| 久久综合九色综合97婷婷| 国产视频精品网| 蜜臀av免费在线观看| 久久93精品国产91久久综合| 日韩h在线观看| 亚洲观看黄色网| av网站在线免费观看| 国产婷婷色一区二区三区四区| 精品伦精品一区二区三区视频 | 四虎最新网站| 蜜臀av一区二区在线免费观看| 欧美亚洲国产视频| 天码人妻一区二区三区在线看 | 美女免费视频网站| 久久久人人人| 国产精品久久久久久av下载红粉| 五月婷婷开心网| 国产福利电影网| 日韩av在线发布| 国产精自产拍久久久久久| 自拍偷拍福利视频| 亚洲福利合集| 亚洲精品在线免费观看视频| 久久久老熟女一区二区三区91| 奇米影视888狠狠狠777不卡| 久久久久国产精品人| 日韩欧美一区二区三区久久婷婷| 自拍偷拍国产| 亚洲无线视频| 国产不卡视频在线| 一区二区三区日| 麻豆精品av| 一区二区三区四区视频| 精品无码一区二区三区蜜臀| 综合久久2023| 69久久夜色精品国产69蝌蚪网| 91视频福利网| 日韩在线观看www| 亚洲高清免费观看| 国产aaaaa毛片| 男人的天堂在线| 亚洲欧美国产三级| 黄在线观看网站| 亚洲mv在线| 亚洲丝袜自拍清纯另类| 国产视频九色蝌蚪| 在线看片你懂得| 中文字幕日韩精品一区 | 极品蜜桃臀肥臀-x88av| 筱崎爱全乳无删减在线观看| 8v天堂国产在线一区二区| 怡红院一区二区| gogo久久| 91精品国产福利在线观看| 特级西西人体wwwww| 波多野结衣视频一区二区| 777xxx欧美| 免费看黄色av| 欧洲一级精品| 亚洲成人免费网站| 久久久久久久久久久久久女过产乱| 中文字幕日本一区二区| 亚洲аv电影天堂网| www深夜成人a√在线| 国产精品成人**免费视频| 国产一区二区三区毛片| 精品无码av在线| 粉嫩av一区二区| 欧美激情乱人伦| 国产99对白在线播放| 欧美午夜一区| 97久久精品午夜一区二区| 国产精品久久久亚洲第一牛牛| 国内精品不卡在线| 亚洲国产日韩美| 成人性生交大片免费看视频r| 国产日产欧美一区| www黄色在线| 成人免费网址| 日韩欧美精品三级| 久久久久久久黄色| 免费观看不卡av| 国产精品福利网| 中文字幕你懂得| 国内精品久久久久影院一蜜桃| 亚洲一卡二卡三卡| 色黄视频在线| 狠狠久久五月精品中文字幕| 男男做爰猛烈叫床爽爽小说| 日韩一区二区三区免费| 一区二区三区国产视频| 亚洲综合网av| 国产情侣久久| 免费h精品视频在线播放| 1234区在线观看视频免费| 亚洲品质自拍视频| 色偷偷中文字幕| 视频精品导航| 麻豆成人在线看| 亚洲精品久久久狠狠狠爱| 日本亚洲免费观看| 一本一道久久a久久精品综合| 蜜桃tv在线播放| 日本二三区不卡| 小泽玛利亚一区二区免费| 日韩动漫一区| 国产日韩av在线播放| 丝袜美腿小色网| 欧美日韩一本| 国产97在线播放| 国产9色视频| 国产精品久久久久一区二区三区共| 五月天激情播播| 三级成人黄色影院| 欧美成人在线影院| 中文字幕高清av| 91日韩在线专区| 日本中文字幕有码| 91精品国产一区二区在线观看| 欧美激情第6页| 久久精品亚洲7777影院| 久久久久9999亚洲精品| 东京热av一区| 久久综合五月婷婷| 成人乱人伦精品视频在线观看| 美女桃色网站| 亚洲国产精品一区二区尤物区| 99精品欧美一区二区| 国产中文字幕一区二区三区| 99热国产免费| 久草在线官网| 91精品国产色综合久久ai换脸 | 久久婷婷蜜乳一本欲蜜臀| 国产伦精品一区| 三上悠亚在线观看| 日韩亚洲欧美成人一区| 成人黄色三级视频| 久久99日本精品| www.激情小说.com| 色婷婷成人网| 国产精品成人观看视频国产奇米| 全彩无遮挡全彩口工漫画h#| 亚洲一区二区三区视频在线| 少妇高潮在线观看| 国产精品黄色| 日韩专区第三页| 国产精品13p| 午夜精品在线视频| 黄色网址网站在线观看| 欧美小视频在线| 欧美日韩综合在线观看| 日韩二区三区四区| 久草在在线视频| 高清久久一区| 亚洲www在线| 神马久久精品| 亚洲精品在线观看www| 天天爽夜夜爽夜夜爽| 久久久久久久国产精品影院| www.超碰97| 国产精品久久久久久麻豆一区软件 | 国产福利拍拍拍| 日本午夜一本久久久综合| 九九视频精品在线观看| 亚洲一二av| 狠狠综合久久av| 麻豆传媒视频在线观看免费| 日韩最新在线视频| 无遮挡h肉3d动漫在线观看| 精品美女久久久久久免费| 国产精品久久久久久99| 精品午夜一区二区三区在线观看| 91视频这里只有精品| 亚洲美女久久| 在线观看成人av| 在线看的毛片| 国产在线98福利播放视频| 日本v片在线免费观看| 亚洲午夜精品久久久久久性色 | www.亚洲| 精品国产伦一区二区三区免费| 天天操天天舔天天干| 亚洲男人都懂的| 九一国产在线观看| 成人免费视频一区二区| 老牛影视av老牛影视av| 国产专区一区| 日日碰狠狠丁香久燥| 粉嫩一区二区三区四区公司1| 精品一区二区日本| 亚洲小说区图片| 日韩美女在线看| 午夜视频在线免费| 日韩在线播放一区| eeuss影院第1页在线| 日韩视频在线你懂得| 天堂在线www天堂中文在线| 亚洲网友自拍偷拍| 久久午夜鲁丝片| 中文字幕不卡在线| 日韩美女黄色片| 成人av一区二区三区| 久草福利资源在线| 久久精品久久99精品久久| 日韩免费高清一区二区| 狠狠色狠狠色综合日日tαg| 国产精品拍拍拍| 日韩不卡一区| 手机看片福利盒子久久| 狠狠做六月爱婷婷综合aⅴ| 精品国产一区二区三区无码| 丁香综合av| 91国在线高清视频| 国产精品国产| 视色,视色影院,视色影库,视色网| 欧美大片网站| 三区精品视频| 中文幕av一区二区三区佐山爱| 久久久久久国产精品mv| 日本不卡一二三| 久久天天狠狠| av成人在线播放| 日本一区二区三区四区高清视频| 久久久久黄色| 亚洲精品一区二区三区四区五区 | 岛国大片在线播放 | 国产日韩欧美91| 尤物视频在线看| 成人免费xxxxx在线观看| а天堂中文在线官网| 国产综合福利在线| 欧美巨大xxxx做受沙滩| 亚洲综合在线做性| 免费成人在线电影| 蜜桃传媒视频麻豆第一区免费观看| 婷婷综合六月| 无遮挡亚洲一区| 91久久偷偷做嫩草影院电| 欧美精品在欧美一区二区| 亚洲色图美女| www.99av.com| 最新成人av网站| 亚洲国产综合视频| 精品午夜一区二区三区在线观看| 中文字幕电影av| 91美女蜜桃在线| 亚洲男人天堂网址| 亚洲国产精品久久人人爱蜜臀 | 亚洲精品男人的天堂| 中文字幕中文字幕一区二区| 91精品中文字幕| 日本乱人伦一区| 国产乱人视频免费播放| 日韩精品在线私人| 在线影院自拍| 国产精品爱啪在线线免费观看| 男女在线观看视频| 日韩精品伦理第一区|