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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7270|回復: 28
收起左側(cè)

51單片機串口怎么接收數(shù)字(不是字符)?

  [復制鏈接]
回帖獎勵 25 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
ID:570093 發(fā)表于 2021-5-27 23:40 | 顯示全部樓層 |閱讀模式
我使用一個上位機通過串口發(fā)送數(shù)據(jù)給單片機,但是只能發(fā)送單個字符才能控制單片機。怎么發(fā)送字符串讓單片機接收后,把這個字符串轉(zhuǎn)為數(shù)字?網(wǎng)上找參考程序搞了一個晚上也弄不出來。void Uart_Isr() interrupt 4
{
                                                                    
        uchar receive_data;

        EA = 0;
          if(RI == 1)
        {
                    RI = 0;
                    receive_data = SBUF;
                if(receive_data=='0')
                {
                        LED=0;        
                }
                else if(receive_data=='1')
                {
                        LED=1;               
                }
                else
                {

                               //處理我發(fā)送的字符串數(shù)據(jù)
                   }         
        TI=0;   
        EA = 1;                                                                     
}

回復

使用道具 舉報

ID:213173 發(fā)表于 2021-5-28 06:15 | 顯示全部樓層
串口一次只能傳輸1個字節(jié),傳輸字符串就是連續(xù)傳輸若干字節(jié)。傳輸?shù)氖菙?shù)字或字符與串口功能本身無關(guān),是由通信協(xié)議確定的。一個最簡單的自定義通信協(xié)議通常由若干字節(jié)組成一幀數(shù)據(jù)。串口中斷函數(shù)只負責把收到的一幀數(shù)據(jù)按序保存在緩沖數(shù)組中,只發(fā)送接收完成標志,不對數(shù)據(jù)進行處理。在主函數(shù)中判斷接收完成后對收到的數(shù)據(jù)進行解析處理,執(zhí)行相關(guān)任務(wù)。

  1. void UARTInterrupt() interrupt 4
  2. {
  3.         static unsigned char num=0;        //靜態(tài)變量
  4.         RI=0;                                        //接收中斷請求標志位清0
  5.         rec_buf[num]=SBUF;                //保存SBUF接收到的數(shù)據(jù)
  6.         if(rec_buf[0]==0xaa)        //驗證數(shù)據(jù)頭,否則被下一個數(shù)據(jù)覆蓋
  7.         {
  8.                 num++;
  9.                 if(num>=x)                        //x=字符串長度
  10.                 {
  11.                         flag=1;                        //接收完成標志置1
  12.                         num=0;
  13.                 }
  14.         }
  15. }
復制代碼
回復

使用道具 舉報

ID:744327 發(fā)表于 2021-5-28 08:29 | 顯示全部樓層
串行通信一次只能傳輸1個字節(jié),若傳輸多個字節(jié)或傳輸字符串,需要連續(xù)傳輸若干字節(jié)。
回復

使用道具 舉報

ID:97350 發(fā)表于 2021-5-28 08:57 | 顯示全部樓層
#include<reg52.h>

//------------------串口通信的數(shù)據(jù)包協(xié)議-----------------//
/*
    此程序的串口字符串通信使用到下面的一個自定義協(xié)議,每次通信都是發(fā)送或接收一個數(shù)據(jù)包,數(shù)據(jù)包格式解釋如下(長度恒為15):
    例如:A01_fmq_01Off___#
    A--------數(shù)據(jù)包的開始標記(可以為A到Z,意味著數(shù)據(jù)包可以有26種)
    01-----設(shè)備代號
    fmq_01Off___--------指令(長度恒為10),指令的前4個人字符是指令頭部,指令的后6個字符是指令尾部
    #---------數(shù)據(jù)包的結(jié)束標記

    例如:A02_SenT010250#
    A--------數(shù)據(jù)包的開始標記(可以為A到Z,意味著數(shù)據(jù)包可以有26種)
    02-----設(shè)備代號
    SenT010250--------指令(長度恒為10),指令的前4個人字符是指令頭部,指令的后6個字符是指令尾部
    #---------數(shù)據(jù)包的結(jié)束標記
*/
char RecvString_buf[16];            //定義數(shù)據(jù)包長度為15個字符
#define deviceID_1Bit '0'                //用于串口通信時,定義本地設(shè)備ID的第1位
#define deviceID_2Bit '2'                //用于串口通信時,定義本地設(shè)備ID的第2位
#define datapackage_headflag 'A'        //用于串口通信時,定義數(shù)據(jù)包頭部的驗證標記

char DataPackage_DS18B20[16]={datapackage_headflag,deviceID_1Bit,deviceID_2Bit,'_','S','e','n','T','X','X','X','X','X','X','#'};    //這個是曾經(jīng)用來控制溫度傳感模塊(DS18B20)的數(shù)據(jù)包
char HeartBeat[16]={datapackage_headflag,deviceID_1Bit,deviceID_2Bit,'_','B','e','a','t','X','X','X','X','X','X','#'};            //我隨便定義了一個數(shù)據(jù)包用來做"心跳包",比如單片機系統(tǒng)向電腦每2秒發(fā)送一次該數(shù)據(jù)包,如果電腦沒有按時接收到,就認為單片機死掉了
//----------------------------------------------//
/*******************************
            串口通信
    MCU:89C52RC        11.0592MHz

//11.0592MHz 0xd0 1200bps
//12MHz 0xcc 1200bps
//11.0592MHz 0xfa 9600bps
//0xf4 11.0592MHz  0xf3 12MHz 4800bps
//均在SMOD=1的情況下(波特率倍增模式)
*******************************/
//串口發(fā)送函數(shù)
void PutString(unsigned char *TXStr)
{
    ES=0;
     while(*TXStr!=0)
    {
        SBUF=*TXStr;
        while(TI==0);
        TI=0;
        TXStr++;
    }
    ES=1;
}
//串口接收函數(shù)
bit ReceiveString()
{
    char * RecStr=RecvString_buf;
    char num=0;
    unsigned char count=0;
    loop:
    *RecStr=SBUF;
    count=0;
    RI=0;
    if(num<14)  //數(shù)據(jù)包長度為15個字符,嘗試連續(xù)接收15個字符
    {
        num++;
        RecStr++;
        while(!RI)
        {
            count++;
            if(count>130)return 0;    //接收數(shù)據(jù)等待延遲,等待時間太久會導致CPU運算閑置,太短會出現(xiàn)"數(shù)據(jù)包被分割",默認count=130
        }
        goto loop;
    }
    return 1;
}
//定時器1用作波特率發(fā)生器
void Init_USART()
{
    SCON=0x50;  //串口方式1,使能接收
    TMOD|=0x20;  //定時器1工作方式2(8位自動重裝初值)
    TMOD&=~0x10;
    TH1=0xfa;   //9600bps
    TL1=0xfa;
    PCON|=0x80;  //SMOD=1
    TR1=1;
    TI=0;
    RI=0;
    //PS=1;   //提高串口中斷優(yōu)先級
    ES=1;  //開啟串口中斷使能
}
//比較指令頭部
bit CompareCMD_head(char CMD_head[])
{
    unsigned char CharNum;
    for(CharNum=0;CharNum<4;CharNum++)  //指令長度為10個字符
    {
        if(!(RecvString_buf[CharNum+4]==CMD_head[CharNum]))
        {
            return 0;  //指令頭部匹配失敗
        }
    }
    return 1;        //指令頭部匹配成功
}
//比較指令尾部(start:從哪里開始比較,quality:比較多少個字符,CMD_tail[]:要比較的字符串)
bit CompareCMD_tail(unsigned char start,unsigned char quality,char CMD_tail[])
{
    unsigned char CharNum;
    for(CharNum=0;CharNum<quality;CharNum++)
    {
        if(!(RecvString_buf[start+CharNum]==CMD_tail[CharNum]))
        {
            return 0;
        }
    }
    return 1;
}
bit Deal_UART_RecData()   //處理串口接收數(shù)據(jù)包函數(shù)(成功處理數(shù)據(jù)包則返回1,否則返回0)
{
    //PutString(RecvString_buf);
    if(RecvString_buf[0]==datapackage_headflag&&buf_string[14]=='#')  //進行數(shù)據(jù)包頭尾標記驗證
    {
        switch(RecvString_buf[1])        //識別發(fā)送者設(shè)備ID的第1位數(shù)字
        {
            case '0':
                switch(RecvString_buf[2])        //識別發(fā)送者設(shè)備ID的第2位數(shù)字
                {
                    case '3':
                        if(CompareCMD_head("Ligt"))    //判斷指令頭部是否為"Ligt"
                        {
                            //下面是指令尾部分析
                            switch(RecvString_buf[8])
                            {
                                case '0':
                                    switch(RecvString_buf[9])
                                    {
                                        case '0':

                                            return 0;
                                        case '1':
                                            if(CompareCMD_tail(10,3,"Off"))   //判斷整個數(shù)據(jù)包是否為:A03_Ligt01Off_#
                                            {
                                                //如果是則執(zhí)行以下代碼
                                                return 1;
                                            }
                                            if(CompareCMD_tail(10,3,"On_"))    //判斷整個數(shù)據(jù)包是否為:A03_Ligt01On__#
                                            {
                                                //如果是則執(zhí)行以下代碼
                                                return 1;
                                            }
                                            return 0;
                                        default:
                                            return 0;
                                    }
                                default:
                                    return 0;
                            }
                        }
                        return 0;

                    default:
                        return 0;
                }
            default:
                return 0;
        }
    }
    return 0;
}
/************************
        中斷函數(shù)
************************/
//串口中斷服務(wù)函數(shù)-----------
void USART() interrupt 4   //標志位TI和RI需要手動復位,TI和RI置位共用一個中斷入口
{
    if(ReceiveString())
    {
        //數(shù)據(jù)包長度正確則執(zhí)行以下代碼
        Deal_UART_RecData();
    }
    else
    {
        //數(shù)據(jù)包長度錯誤則執(zhí)行以下代碼
        //LED1=~LED1;
    }
    RI=0;  //接收并處理一次數(shù)據(jù)后把接收中斷標志清除一下,拒絕響應(yīng)在中斷接收忙的時候發(fā)來的請求
}
/***************************
        主函數(shù)
***************************/
void main()
{
    EA=1;
    Init_USART();    //初始化串口中斷通信,當串口接受完數(shù)據(jù)包后,如果檢測到數(shù)據(jù)包包含有效指令,則自動執(zhí)行對應(yīng)的代碼,執(zhí)行完自動返回到主函數(shù),為了盡可能不影響主函數(shù)的時序,串口中斷函數(shù)的執(zhí)行代碼不要過復雜
    while(1)
    {
    //下面可以放要經(jīng)常運行的用戶代碼,使用PutString()函數(shù)來發(fā)送數(shù)據(jù)包,如PutString(HeartBeat);    注:空格的ASCLL碼是:0x20,回車是:0x0D


    }
}
回復

使用道具 舉報

ID:277550 發(fā)表于 2021-5-28 09:02 | 顯示全部樓層
先理解數(shù)據(jù)類型,和存儲方法

像int是2個byte、所以串口通訊要傳輸2個字節(jié),接收端收到后、再組合起來
回復

使用道具 舉報

ID:570093 發(fā)表于 2021-5-28 09:12 | 顯示全部樓層
wulin 發(fā)表于 2021-5-28 06:15
串口一次只能傳輸1個字節(jié),傳輸字符串就是連續(xù)傳輸若干字節(jié)。傳輸?shù)氖菙?shù)字或字符與串口功能本身無關(guān),是由 ...

那就是串口接收字符串后怎么轉(zhuǎn)為數(shù)字?比如發(fā)送“123”,接收到字符串怎么轉(zhuǎn)為整型數(shù)字123?
回復

使用道具 舉報

ID:213173 發(fā)表于 2021-5-28 15:27 | 顯示全部樓層
96317 發(fā)表于 2021-5-28 09:12
那就是串口接收字符串后怎么轉(zhuǎn)為數(shù)字?比如發(fā)送“123”,接收到字符串怎么轉(zhuǎn)為整型數(shù)字123?

0~9數(shù)字轉(zhuǎn)字符ASCII碼+48(0x30),同理0~9字符轉(zhuǎn)數(shù)字-48(0x30)。
無標題.jpg

回復

使用道具 舉報

ID:570093 發(fā)表于 2021-5-28 16:01 | 顯示全部樓層
wulin 發(fā)表于 2021-5-28 15:27
0~9數(shù)字轉(zhuǎn)字符ASCII碼+48(0x30),同理0~9字符轉(zhuǎn)數(shù)字-48(0x30)。

這個我知道,但是發(fā)送一串字符串的時候就得知道字符串長度,在keil中使用strlen()會報錯說缺少函數(shù)原型
回復

使用道具 舉報

ID:213173 發(fā)表于 2021-5-28 16:43 | 顯示全部樓層
96317 發(fā)表于 2021-5-28 16:01
這個我知道,但是發(fā)送一串字符串的時候就得知道字符串長度,在keil中使用strlen()會報錯說缺少函數(shù)原型

對于固定字節(jié)長度的字符串,這個問題很好處理。對于不固定字節(jié)長度的字符串,接收完成時就已知字節(jié)長度。如果程序無法知道什么時候接收完成就要開一個定時器中斷,每接收一個字節(jié)定時器復位,在達到設(shè)定時間沒有收到新的數(shù)據(jù)定時器中斷發(fā)生,就以此判斷為一幀數(shù)據(jù)接收完成。接收的字節(jié)長度當然就知道了。
回復

使用道具 舉報

ID:570093 發(fā)表于 2021-6-13 15:54 | 顯示全部樓層
參考了一個藍牙發(fā)送的程序,經(jīng)過測試可以用,比如串口發(fā)送“12”可以將其轉(zhuǎn)成整型數(shù)據(jù)12,發(fā)送字符串“12345”可以轉(zhuǎn)成整型數(shù)字12345。但是發(fā)現(xiàn)該程序跳出while()循環(huán)后想要使用發(fā)送過來的數(shù)據(jù)有點麻煩。
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include <stdio.h>

  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. #define ulong  unsigned long

  7. uchar uart_receive_buffer[30];  //從串口接收的數(shù)據(jù)
  8. uint uart_receive_number=0;    //指示串口接收個數(shù)
  9. uchar receive_length;                   //串口發(fā)送字符串長度
  10. ulong str_to_int=0,int_bit=1;  //字符串轉(zhuǎn)整型數(shù)值、int-bit用來做10的n次方
  11. sbit led=P2^0;

  12. void Delay_1ms(uint i)//1ms延時
  13. {
  14.   uchar x,j;
  15.   
  16.   for(j=0;j<i;j++)
  17.     for(x=0;x<=148;x++);
  18. }

  19. void Com_Int(void) interrupt 4
  20. {
  21.   EA = 0;
  22.   if(RI == 1)
  23.   {  //當硬件接收到一個數(shù)據(jù)時,RI會置位
  24.     RI = 0;
  25.     uart_receive_buffer[uart_receive_number] = SBUF;  //這里減去48是因為從電腦中發(fā)送過來的數(shù)據(jù)是ASCII碼。
  26.     uart_receive_number++;
  27.   }
  28.   EA = 1;
  29. }

  30. void Com_Init(void) {
  31.   TMOD = 0x20;
  32.   PCON = 0x80;          //波特率加倍
  33.   SCON = 0x50;                                                                  
  34.   TH1=0XF3;                                //計數(shù)器初始值設(shè)置,注意串口軟件波特率是4800的
  35.   TL1 = 0XF3;
  36.   TR1 = 1;  //啟動定時器1
  37.   ES = 1;  //開串口中斷
  38.   EA = 1;  //開總中斷
  39. }

  40. void PostChar(uchar character)  
  41. {     
  42.             SBUF=character;   //發(fā)送單個字符
  43.             while(!TI);           // 等待發(fā)送數(shù)據(jù)完成發(fā)送完成TI會置1
  44.                 TI=0;                     //發(fā)送完成標志
  45. }



  46. void Main()
  47. {
  48.   uchar uart_receive_number_old=0;
  49.   uchar i=0,j;
  50.   Com_Init();
  51.   
  52.   while(1)
  53.   {
  54.                                                                                                                 
  55.     if(uart_receive_number_old!=uart_receive_number)
  56.         {
  57.       uart_receive_number_old=uart_receive_number;
  58.     }
  59.    
  60.     //如果單片機接收來自HC-xx模塊不少于1字節(jié)的串口數(shù)據(jù),一定要加延時后再判斷是否
  61.     //還有串口數(shù)據(jù)在發(fā)送,這樣才能完整的接收一幀串口數(shù)據(jù)
  62.     Delay_1ms(20);
  63.    
  64.     //一段時間之后仍然相等,表示上位機發(fā)來的一串數(shù)據(jù)結(jié)束
  65.     if(uart_receive_number_old==uart_receive_number)
  66.         {
  67.       if(uart_receive_number)                 
  68.                 break;      
  69.     }
  70.   }
  71.   
  72. if(uart_receive_number)
  73. {
  74.         //led=~led;         //測試
  75.         receive_length=uart_receive_number;

  76.        
  77.         /*if(receive_length==6)         //////測試串口接收位數(shù),串口軟件如果發(fā)送字符串1234,則接收位數(shù)為4
  78.                 led=~led;                                         */

  79.         uart_receive_number=0;
  80.     //串口有數(shù)據(jù)時,該做些什么就做什么吧
  81.         for(i=0;i<receive_length;i++)
  82.         {       
  83.                 PostChar(uart_receive_buffer[i]);//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  84.                 //Delay_1ms(10);                        //延時,作用為提高發(fā)送準確度,可適當調(diào)節(jié)延時時間
  85.                
  86.                 int_bit=1;
  87.                 for(j=receive_length-i-1;j>=1;j--)
  88.                         int_bit*=10;       
  89.                 str_to_int += (uart_receive_buffer[i]-'0')*int_bit;       
  90.                
  91.                                        
  92.         }
  93.        
  94.         //if(str_to_int==1000000)                //串口軟件發(fā)送的字符串要跟這里整形數(shù)據(jù)一樣才行,不然發(fā)送一次后悔一直發(fā)送且顯示不正常,暫時找不出原因
  95.         //        led=~led;
復制代碼



回復

使用道具 舉報

ID:937124 發(fā)表于 2021-6-13 17:38 | 顯示全部樓層
傳輸數(shù)字,可以吧數(shù)字拆分成字節(jié),然后按順序傳輸;收到后再恢復就可以了;
回復

使用道具 舉報

ID:937124 發(fā)表于 2021-6-13 17:40 | 顯示全部樓層
一般數(shù)字,會是16位,32位,或更多位;只要拆封成8位一組,八位八位的傳過去就可以了;因為51,收發(fā)寄存器是8位的;
回復

使用道具 舉報

ID:261837 發(fā)表于 2021-6-14 13:33 來自手機 | 顯示全部樓層
加幀頭幀尾
回復

使用道具 舉報

ID:883031 發(fā)表于 2021-6-15 09:30 | 顯示全部樓層
接收到字符是ASCII碼,數(shù)字的話減掉30就是對應(yīng)的數(shù)字。如:1的ASCII碼是31,減掉30就可以了。注意這里是16進制。
回復

使用道具 舉報

ID:844772 發(fā)表于 2021-6-15 11:11 | 顯示全部樓層
96317 發(fā)表于 2021-6-13 15:54
參考了一個藍牙發(fā)送的程序,經(jīng)過測試可以用,比如串口發(fā)送“12”可以將其轉(zhuǎn)成整型數(shù)據(jù)12,發(fā)送字符串“1234 ...

有些常識還是要知道啊,比如51的int最大65535,不會等于你的1百萬的。還有不控制程序,它會跑飛的,所以都會讓它進死循環(huán),但你讓它跳出了。
回復

使用道具 舉報

ID:81196 發(fā)表于 2021-6-15 13:37 | 顯示全部樓層
對于單片機,不管你是傳輸數(shù)字還是字符,其傳輸過程中都是16進制表示的.只是在你接收時解析或發(fā)送時轉(zhuǎn)義表示成你的內(nèi)容對應(yīng)的十六進制數(shù)據(jù)即可
回復

使用道具 舉報

ID:811711 發(fā)表于 2021-6-16 11:00 | 顯示全部樓層
首先要建議你多看看計算機組成原理,想不出來答案是因為缺少對計算機最本質(zhì)的理解。
回復

使用道具 舉報

ID:811711 發(fā)表于 2021-6-16 11:01 | 顯示全部樓層
其次,你可以自己定義一個數(shù)據(jù)長度,標志位,或者還有別的思路可以解決這個問題但是還是建議多從計算機思維出發(fā),計算機啥也不是只會遵守規(guī)則。
回復

使用道具 舉報

ID:811711 發(fā)表于 2021-6-16 11:03 | 顯示全部樓層
數(shù)字和字符都是同一種東西啊,只是你翻譯他的方式不一樣
回復

使用道具 舉報

ID:880574 發(fā)表于 2021-11-14 12:01 | 顯示全部樓層
lzl12399 發(fā)表于 2021-5-28 08:57
#include

//------------------串口通信的數(shù)據(jù)包協(xié)議-----------------//

這個里面的buf_string沒有定義啊
回復

使用道具 舉報

ID:941439 發(fā)表于 2021-11-18 20:49 | 顯示全部樓層
我建議你可以把要傳輸?shù)淖址當?shù)據(jù)先轉(zhuǎn)換成int型數(shù)據(jù),然后串口發(fā)送出去應(yīng)該就可以了
回復

使用道具 舉報

ID:897866 發(fā)表于 2021-11-27 18:43 | 顯示全部樓層
可以參考0~9數(shù)字轉(zhuǎn)字符ASCII碼+48(0x30),同理0~9字符轉(zhuǎn)數(shù)字-48(0x30)。
回復

使用道具 舉報

ID:1011216 發(fā)表于 2022-4-9 23:48 來自手機 | 顯示全部樓層
我來說說我的思路,上位機把整型數(shù)據(jù)當做兩個字節(jié)發(fā)送給單片機,這個其實很好實現(xiàn),在單片機端用左移八位命令把兩個字節(jié)分開,然后合并成原整數(shù),通過實踐,低字節(jié)的數(shù)據(jù)是沒問題的,高字節(jié)怎么都不對。單片機做數(shù)據(jù)接收太不穩(wěn)定了,不知有啥辦法可以解決這個數(shù)據(jù)穩(wěn)定的問題
回復

使用道具 舉報

ID:625730 發(fā)表于 2022-4-10 11:29 | 顯示全部樓層
xinwenhyan 發(fā)表于 2022-4-9 23:48
我來說說我的思路,上位機把整型數(shù)據(jù)當做兩個字節(jié)發(fā)送給單片機,這個其實很好實現(xiàn),在單片機端用左移八位命 ...

上位機發(fā)的都是8位的字符,比如你發(fā)12,就是發(fā)1和2的字符,單片機接收了以后,要轉(zhuǎn)換成數(shù)字1和2,然后1乘以10,再加2,得到12,要對照ascii碼表進行轉(zhuǎn)換。
回復

使用道具 舉報

ID:1017168 發(fā)表于 2022-4-10 11:47 | 顯示全部樓層
在數(shù)據(jù)的末尾減去"\0",將對應(yīng)的字符ascii碼轉(zhuǎn)換成數(shù)字
回復

使用道具 舉報

ID:480627 發(fā)表于 2022-4-11 15:35 | 顯示全部樓層
基礎(chǔ)知識不足的弊端啊。。。。什么是二進制,什么是十六進制,怎么用,平時單片機或電腦又是怎么處理數(shù)據(jù)的。。。
回復

使用道具 舉報

ID:1009420 發(fā)表于 2022-4-11 16:32 | 顯示全部樓層
16位,32位,或更多位;只要拆封成8位一組,八位八位的傳過去就可以了
回復

使用道具 舉報

ID:982617 發(fā)表于 2022-4-13 17:38 | 顯示全部樓層
先把數(shù)據(jù)類型都統(tǒng)一了吧
回復

使用道具 舉報

ID:593706 發(fā)表于 2022-4-14 08:43 | 顯示全部樓層
用字節(jié)發(fā)送數(shù)組就可以
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费国产视频 | 欧美性受 | 在线观看的av | 亚洲精品中文字幕中文字幕 | 欧美成人精品激情在线观看 | 天天操天天干天天爽 | 伊人久久伊人 | www.天天操 | 97超在线视频 | 日日草夜夜草 | 99re免费 | 在线欧美一区 | 国产一区二区三区四区 | 精品在线一区 | 国产日韩久久 | 国内精品视频一区二区三区 | 中文字幕黄色大片 | 三级国产三级在线 | 亚洲精品久久久久久久不卡四虎 | 亚洲精品久久久久久久久久久久久 | 成人福利网站 | 91精品国产一区 | 国产黄色在线观看 | 成人免费视频观看视频 | 国产一区二区三区在线 | 欧美精品一区二区三区在线 | 精品国产不卡一区二区三区 | 国产精品一区一区 | 精品视频成人 | 91精品国产91久久久久久吃药 | 国产乱码精品一区二区三区av | 日韩精品一区二区三区中文在线 | 国产黄色在线观看 | 亚洲精品一区久久久久久 | 99精品视频一区二区三区 | 一级看片免费视频 | 国产不卡一区 | 久久青草av | 成人综合久久 | 一区二区三区在线免费观看视频 | 麻豆va|