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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機Timer2模擬半雙工串口的C語言和匯編代碼及注釋說明

[復制鏈接]
跳轉到指定樓層
樓主
ID:431063 發表于 2018-11-22 11:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用51單片機Timer2模擬一個半雙工串口的c語言代碼
  1. /*************        功能說明        **************

  2. 使用STC15系列的Timer2做的模擬串口. P3.0接收, P3.1發送, 半雙工.
  3. 假定測試芯片的工作頻率為22118400Hz. 時鐘為5.5296MHZ ~ 35MHZ.
  4. 波特率高,則時鐘也要選高, 優先使用 22.1184MHZ, 11.0592MHZ.
  5. 測試方法: 上位機發送數據, MCU收到數據后原樣返回.
  6. 串口固定設置: 1位起始位, 8位數據位, 1位停止位,  波特率在范圍如下.

  7. 1200 ~ 115200 bps @ 33.1776MHZ
  8. 600 ~ 115200 bps @ 22.1184MHZ
  9. 600 ~  76800 bps @ 18.4320MHZ
  10. 300 ~  57600 bps @ 11.0592MHZ
  11. 150 ~  19200 bps @  5.5296MHZ

  12. ******************************************/

  13. #include        <reg52.h>

  14. #define MAIN_Fosc                22118400UL        //定義主時鐘
  15. #define        UART3_Baudrate        115200UL        //定義波特率
  16. #define        RX_Lenth                32                        //接收長度

  17. #define        UART3_BitTime        (MAIN_Fosc / UART3_Baudrate)

  18. typedef         unsigned char        u8;
  19. typedef         unsigned int        u16;
  20. typedef         unsigned long        u32;

  21. sfr IE2  = 0xAF;
  22. sfr        AUXR = 0x8E;
  23. sfr INT_CLKO = 0x8F;
  24. sfr        T2H  = 0xD6;
  25. sfr        T2L  = 0xD7;

  26. u8        Tx3_read;                        //發送讀指針
  27. u8        Rx3_write;                        //接收寫指針
  28. u8         idata        buf3[RX_Lenth];        //接收緩沖

  29. u16        RxTimeOut;
  30. bit        B_RxOk;                //接收結束標志


  31. //===================== 模擬串口相關===========================
  32. sbit P_RX3 = P3^0;        //定義模擬串口接收IO
  33. sbit P_TX3 = P3^1;        //定義模擬串口發送IO

  34. u8  Tx3_DAT;                // 發送移位變量, 用戶不可見
  35. u8  Rx3_DAT;                // 接收移位變量, 用戶不可見
  36. u8  Tx3_BitCnt;                // 發送數據的位計數器, 用戶不可見
  37. u8  Rx3_BitCnt;                // 接收數據的位計數器, 用戶不可見
  38. u8        Rx3_BUF;                // 接收到的字節, 用戶讀取
  39. u8        Tx3_BUF;                // 要發送的字節, 用戶寫入
  40. bit        Rx3_Ring;                // 正在接收標志, 低層程序使用, 用戶程序不可見
  41. bit        Tx3_Ting;                // 正在發送標志, 用戶置1請求發送, 底層發送完成清0
  42. bit        RX3_End;                // 接收到一個字節, 用戶查詢 并清0
  43. //=============================================================

  44. void        UART_Init(void);


  45. /******************** 主函數 **************************/
  46. void main(void)
  47. {
  48.        
  49.         UART_Init();        //PCA初始化
  50.         EA = 1;
  51.        
  52.         while (1)                //user's function
  53.         {
  54.                 if (RX3_End)                // 檢測是否收到一個字節
  55.                 {
  56.                         RX3_End = 0;        // 清除標志
  57.                         buf3[Rx3_write] = Rx3_BUF;        // 寫入緩沖
  58.                         if(++Rx3_write >= RX_Lenth)        Rx3_write = 0;        // 指向下一個位置,  溢出檢測
  59.                         RxTimeOut = 1000;        //裝載超時時間
  60.                 }
  61.                 if(RxTimeOut != 0)                // 超時時間是否非0?
  62.                 {
  63.                         if(--RxTimeOut == 0)        // (超時時間  - 1) == 0?
  64.                         {
  65.                                 B_RxOk = 1;
  66.                                 AUXR &=  ~(1<<4);        //Timer2 停止運行
  67.                                 INT_CLKO &= ~(1 << 6);        //禁止INT4中斷
  68.                                 T2H = (65536 - UART3_BitTime) / 256;        //數據位
  69.                                 T2L = (65536 - UART3_BitTime) % 256;        //數據位
  70.                                 AUXR |=  (1<<4);        //Timer2 開始運行
  71.                         }
  72.                 }
  73.                
  74.                 if(B_RxOk)                // 檢測是否接收OK?
  75.                 {
  76.                         if (!Tx3_Ting)                // 檢測是否發送空閑
  77.                         {
  78.                                 if (Tx3_read != Rx3_write)        // 檢測是否收到過字符
  79.                                 {
  80.                                         Tx3_BUF = buf3[Tx3_read];        // 從緩沖讀一個字符發送
  81.                                         Tx3_Ting = 1;                                // 設置發送標志
  82.                                         if(++Tx3_read >= RX_Lenth)        Tx3_read = 0;        // 指向下一個位置,  溢出檢測
  83.                                 }
  84.                                 else
  85.                                 {
  86.                                         B_RxOk = 0;
  87.                                         AUXR &=  ~(1<<4);                //Timer2 停止運行
  88.                                         INT_CLKO |=  (1 << 6);        //允許INT4中斷
  89.                                 }
  90.                         }
  91.                 }
  92.         }
  93. }


  94. //========================================================================
  95. // 函數: void        UART_Init(void)
  96. // 描述: UART初始化程序.
  97. // 參數: none
  98. // 返回: none.
  99. // 版本: V1.0, 2013-11-22
  100. //========================================================================
  101. void        UART_Init(void)
  102. {
  103.         Tx3_read  = 0;
  104.         Rx3_write = 0;
  105.         Tx3_Ting  = 0;
  106.         Rx3_Ring  = 0;
  107.         RX3_End   = 0;
  108.         Tx3_BitCnt = 0;
  109.         RxTimeOut = 0;
  110.         B_RxOk = 0;

  111.         AUXR &=  ~(1<<4);                // Timer2 停止運行
  112.         T2H = (65536 - UART3_BitTime) / 256;        // 數據位
  113.         T2L = (65536 - UART3_BitTime) % 256;        // 數據位
  114.         INT_CLKO |=  (1 << 6);        // 允許INT4中斷
  115.         IE2  |=  (1<<2);                // 允許Timer2中斷
  116.         AUXR |=  (1<<2);                // 1T
  117. }
  118. //======================================================================

  119. //========================================================================
  120. // 函數: void        timer2_int (void) interrupt 12
  121. // 描述: Timer2中斷處理程序.
  122. // 參數: None
  123. // 返回: none.
  124. // 版本: V1.0, 2012-11-22
  125. //========================================================================
  126. void        timer2_int (void) interrupt 12
  127. {
  128.         if(Rx3_Ring)                //已收到起始位
  129.         {
  130.                 if (--Rx3_BitCnt == 0)                //接收完一幀數據
  131.                 {
  132.                         Rx3_Ring = 0;                        //停止接收
  133.                         Rx3_BUF = Rx3_DAT;                //存儲數據到緩沖區
  134.                         RX3_End = 1;
  135.                         AUXR &=  ~(1<<4);        //Timer2 停止運行
  136.                         INT_CLKO |=  (1 << 6);        //允許INT4中斷
  137.                 }
  138.                 else
  139.                 {
  140.                         Rx3_DAT >>= 1;                                          //把接收的單b數據 暫存到 RxShiftReg(接收緩沖)
  141.                         if(P_RX3) Rx3_DAT |= 0x80;          //shift RX data to RX buffer
  142.                 }
  143.         }

  144.         if(Tx3_Ting)                                        // 不發送, 退出
  145.         {
  146.                 if(Tx3_BitCnt == 0)                        //發送計數器為0 表明單字節發送還沒開始
  147.                 {
  148.                         P_TX3 = 0;                                //發送開始位
  149.                         Tx3_DAT = Tx3_BUF;                //把緩沖的數據放到發送的buff
  150.                         Tx3_BitCnt = 9;                        //發送數據位數 (8數據位+1停止位)
  151.                 }
  152.                 else                                                //發送計數器為非0 正在發送數據
  153.                 {
  154.                         if (--Tx3_BitCnt == 0)        //發送計數器減為0 表明單字節發送結束
  155.                         {
  156.                                 P_TX3 = 1;                        //送停止位數據
  157.                                 Tx3_Ting = 0;                //發送停止
  158.                         }
  159.                         else
  160.                         {
  161.                                 Tx3_DAT >>= 1;                //把最低位送到 CY(益處標志位)
  162.                                 P_TX3 = CY;                        //發送一個bit數據
  163.                         }
  164.                 }
  165.         }
  166. }


  167. /********************* INT4中斷函數 *************************/
  168. void Ext_INT4 (void) interrupt 16
  169. {
  170.         AUXR &=  ~(1<<4);        //Timer2 停止運行
  171.         T2H = (65536 - (UART3_BitTime / 2 + UART3_BitTime)) / 256;        //起始位 + 半個數據位
  172.         T2L = (65536 - (UART3_BitTime / 2 + UART3_BitTime)) % 256;        //起始位 + 半個數據位
  173.         AUXR |=  (1<<4);        //Timer2 開始運行
  174.         Rx3_Ring = 1;                //標志已收到起始位
  175.         Rx3_BitCnt = 9;                //初始化接收的數據位數(8個數據位+1個停止位)
  176.        
  177.         INT_CLKO &= ~(1 << 6);        //禁止INT4中斷
  178.         T2H = (65536 - UART3_BitTime) / 256;        //數據位
  179.         T2L = (65536 - UART3_BitTime) % 256;        //數據位
  180. }
復制代碼

匯編語言:
  1. ;*************        功能說明        **************

  2. ;使用STC15系列的Timer2做的模擬串口. P3.0接收, P3.1發送, 半雙工.

  3. ;假定測試芯片的工作頻率為22118400Hz. 時鐘為5.5296MHZ ~ 35MHZ.

  4. ;波特率高,則時鐘也要選高, 優先使用 22.1184MHZ, 11.0592MHZ.

  5. ;測試方法: 上位機發送數據, MCU收到數據后原樣返回.

  6. ;串口固定設置: 1位起始位, 8位數據位, 1位停止位,  波特率在范圍如下.

  7. ;******************************************

  8. ;UART3_BitTime        EQU                9216        ; 1200bps @ 11.0592MHz        UART3_BitTime = (MAIN_Fosc / Baudrate)
  9. ;UART3_BitTime        EQU                4608        ; 2400bps @ 11.0592MHz
  10. ;UART3_BitTime        EQU                2304        ; 4800bps @ 11.0592MHz
  11. ;UART3_BitTime        EQU                1152        ; 9600bps @ 11.0592MHz
  12. ;UART3_BitTime        EQU                 576        ;19200bps @ 11.0592MHz
  13. ;UART3_BitTime        EQU                 288        ;38400bps @ 11.0592MHz
  14. ;UART3_BitTime        EQU                 192        ;57600bps @ 11.0592MHz

  15. ;UART3_BitTime        EQU                15360        ; 1200bps @ 18.432MHz
  16. ;UART3_BitTime        EQU                7680        ; 2400bps @ 18.432MHz
  17. ;UART3_BitTime        EQU                3840        ; 4800bps @ 18.432MHz
  18. ;UART3_BitTime        EQU                1920        ; 9600bps @ 18.432MHz
  19. ;UART3_BitTime        EQU                960                ;19200bps @ 18.432MHz
  20. ;UART3_BitTime        EQU                480                ;38400bps @ 18.432MHz
  21. ;UART3_BitTime        EQU                320                ;57600bps @ 18.432MHz

  22. ;UART3_BitTime        EQU                18432        ; 1200bps @ 22.1184MHz
  23. ;UART3_BitTime        EQU                9216        ; 2400bps @ 22.1184MHz
  24. ;UART3_BitTime        EQU                4608        ; 4800bps @ 22.1184MHz
  25. ;UART3_BitTime        EQU                2304        ; 9600bps @ 22.1184MHz
  26. ;UART3_BitTime        EQU                1152        ;19200bps @ 22.1184MHz
  27. ;UART3_BitTime        EQU                576                ;38400bps @ 22.1184MHz
  28. ;UART3_BitTime        EQU                384                ;57600bps @ 22.1184MHz
  29. UART3_BitTime        EQU                192                ;115200bps @ 22.1184MHz

  30. ;UART3_BitTime        EQU                27648        ; 1200bps @ 33.1776MHz
  31. ;UART3_BitTime        EQU                13824        ; 2400bps @ 33.1776MHz
  32. ;UART3_BitTime        EQU                6912        ; 4800bps @ 33.1776MHz
  33. ;UART3_BitTime        EQU                3456        ; 9600bps @ 33.1776MHz
  34. ;UART3_BitTime        EQU                1728        ;19200bps @ 33.1776MHz
  35. ;UART3_BitTime        EQU                864                ;38400bps @ 33.1776MHz
  36. ;UART3_BitTime        EQU                576                ;57600bps @ 33.1776MHz
  37. ;UART3_BitTime        EQU                288                ;115200bps @ 33.1776MHz

  38. IE2                        DATA         0AFH
  39. AUXR                DATA         08EH
  40. INT_CLKO        DATA         08FH
  41. T2H                        DATA         0D6H
  42. T2L                        DATA         0D7H


  43. ;===================== 模擬串口相關 ===========================
  44. P_RX3                 BIT         P3.0        ; 定義模擬串口接收IO
  45. P_TX3                 BIT         P3.1        ; 定義模擬串口發送IO

  46. Rx3_Ring        BIT                20H.0        ; 正在接收標志, 低層程序使用, 用戶程序不可見
  47. Tx3_Ting        BIT                20H.1        ; 正在發送標志, 用戶置1請求發送, 底層發送完成清0
  48. RX3_End                BIT                20H.2        ; 接收到一個字節, 用戶查詢 并清0
  49. B_RxOk                BIT                20H.3        ; 接收結束標志

  50. Tx3_DAT                DATA        30H                ; 發送移位變量, 用戶不可見
  51. Rx3_DAT                DATA        31H                ; 接收移位變量, 用戶不可見
  52. Tx3_BitCnt        DATA        32H                ; 發送數據的位計數器, 用戶不可見
  53. Rx3_BitCnt        DATA        33H                ; 接收數據的位計數器, 用戶不可見
  54. Rx3_BUF                DATA        34H                ; 接收到的字節, 用戶讀取
  55. Tx3_BUF                DATA        35H                ; 要發送的字節, 用戶寫入

  56. ;=================================================================
  57. RxTimeOutH        DATA        36H                ;
  58. RxTimeOutL        DATA        37H                ;

  59. Tx3_read        DATA        38H                ; 發送讀指針
  60. Rx3_write        DATA        39H                ; 接收寫指針

  61. RX_Lenth        EQU                32                ; 接收長度
  62. buf3                EQU                40H                ; 40H ~ 5FH        接收緩沖

  63. STACK_POIRTER        EQU                0D0H        ;堆棧開始地址

  64. ;*******************************************************************
  65. ;*******************************************************************
  66.                 ORG                00H                                ;reset
  67.                 LJMP        F_Main

  68.                 ORG                63H                                ;12  Timer2 interrupt
  69.                 LJMP        F_Timer2_Interrupt

  70.                 ORG                83H                                ;16  INT4 interrupt
  71.                 LJMP        F_INT4_Interrupt

  72. ;******************** 主程序 **************************/
  73. F_Main:
  74.        
  75.         MOV                SP, #STACK_POIRTER
  76.         MOV                PSW, #0
  77.         USING        0                ;選擇第0組R0~R7

  78. ;================= 用戶初始化程序 ====================================
  79.         LCALL        F_UART_Init                ;UART初始化
  80.         SETB        EA
  81.        
  82.                
  83. ;=================== 主循環 ==================================
  84. L_MainLoop:
  85.         JNB                RX3_End, L_QuitRx3        ; 檢測是否收到一個字節
  86.         CLR                RX3_End                                ; 清除標志
  87.         MOV                A, #buf3
  88.         ADD                A, Rx3_write
  89.         MOV                R0, A
  90.         MOV                @R0, Rx3_BUF                ; 寫入緩沖
  91.         MOV                RxTimeOutH, #HIGH 1000        ; 裝載超時時間
  92.         MOV                RxTimeOutL, #LOW  1000        ;
  93.         INC                Rx3_write                        ; 指向下一個位置
  94.         MOV                A, Rx3_write
  95.         CLR                C
  96.         SUBB        A, #RX_Lenth                ; 溢出檢測
  97.         JC                L_QuitRx3
  98.         MOV                Rx3_write, #0
  99. L_QuitRx3:

  100.         MOV                A, RxTimeOutL
  101.         ORL                A, RxTimeOutH
  102.         JZ                L_QuitTimeOut        ; 超時時間是否非0?
  103.         MOV                A, RxTimeOutL
  104.         DEC                RxTimeOutL                ; (超時時間  - 1) == 0?
  105.         JNZ                $+4
  106.         DEC                RxTimeOutH
  107.         DEC                A
  108.         ORL                A, RxTimeOutH
  109.         JNZ                L_QuitTimeOut
  110.        
  111.         SETB        B_RxOk                                                ; 超時, 標志接收完成
  112.         ANL                AUXR, #NOT (1 SHL 4)                ; Timer2 停止運行
  113.         ANL                INT_CLKO, #NOT (1 SHL 6)        ; 禁止INT4中斷
  114.         MOV                T2H, #HIGH (65536 - UART3_BitTime)        ;數據位
  115.         MOV                T2L, #LOW (65536 - UART3_BitTime)        ;
  116.         ORL                AUXR, #(1 SHL 4)                        ; Timer2 開始運行
  117. L_QuitTimeOut:       

  118.         JNB                B_RxOk, L_QuitTx3        ; 檢測是否接收OK?
  119.         JB                Tx3_Ting, L_QuitTx3        ; 檢測是否發送空閑
  120.         MOV                A, Tx3_read
  121.         XRL                A, Rx3_write
  122.         JZ                L_TxFinish                        ; 檢測是否發送完畢

  123.         MOV                A, #buf3
  124.         ADD                A, Tx3_read
  125.         MOV                R0, A
  126.         MOV                Tx3_BUF, @R0                ; 從緩沖讀一個字符發送
  127.         SETB        Tx3_Ting                        ; 設置發送標志
  128.         INC                Tx3_read                        ; 指向下一個字符位置
  129.         MOV                A, Tx3_read
  130.         CLR                C
  131.         SUBB        A, #RX_Lenth
  132.         JC                L_QuitTx3                        ; 溢出檢測
  133.         MOV                Tx3_read, #0
  134.         SJMP        L_QuitTx3

  135. L_TxFinish:
  136.         CLR                B_RxOk
  137.         ANL                AUXR, #NOT (1 SHL 4)        ; Timer2 停止運行
  138.         ORL                INT_CLKO, #(1 SHL 6)        ; 允許INT4中斷

  139. L_QuitTx3:

  140.         LJMP        L_MainLoop

  141. ;=================== 主程序結束 ==================================

  142. ;========================================================================
  143. ; 函數: F_UART_Init
  144. ; 描述: UART初始化程序.
  145. ; 參數: none
  146. ; 返回: none.
  147. ; 版本: V1.0, 2013-11-22
  148. ;========================================================================
  149. F_UART_Init:
  150.         MOV                Tx3_read,  #0
  151.         MOV                Rx3_write, #0
  152.         CLR                Tx3_Ting
  153.         CLR                RX3_End
  154.         CLR                Rx3_Ring
  155.         MOV                Tx3_BitCnt, #0

  156.         MOV                RxTimeOutH, #0
  157.         MOV                RxTimeOutL, #0
  158.         CLR                B_RxOk

  159.         ANL                AUXR, #NOT(1 SHL 4)                ; Timer2 停止運行
  160.         MOV                T2H, #HIGH (65536 - UART3_BitTime)        ; 數據位
  161.         MOV                T2L, #LOW (65536 - UART3_BitTime)        ; 數據位
  162.         ORL                INT_CLKO, #(1 SHL 6)        ; 允許INT4中斷
  163.         ORL                IE2, #(1 SHL 2)                        ; 允許Timer2中斷
  164.         ORL                AUXR, #(1 SHL 2)                ; 1T模式
  165.         RET

  166. ;======================================================================

  167. ;========================================================================
  168. ; 函數: void        F_Timer2_Interrupt
  169. ; 描述: Timer2中斷處理程序.
  170. ; 參數: None
  171. ; 返回: none.
  172. ; 版本: V1.0, 2012-11-22
  173. ;========================================================================
  174. F_Timer2_Interrupt:
  175.         PUSH        PSW
  176.         PUSH        ACC

  177.         JNB                Rx3_Ring, L_QuitRx        ; 已收到起始位
  178.         DJNZ        Rx3_BitCnt, L_RxBit        ; 接收完一幀數據
  179.        
  180.         CLR                Rx3_Ring                        ; 停止接收
  181.         MOV                Rx3_BUF, Rx3_DAT        ; 存儲數據到緩沖區
  182.         SETB        RX3_End                                ;
  183.         ANL                AUXR, #NOT (1 SHL 4); Timer2 停止運行
  184.         ORL                INT_CLKO, #(1 SHL 6); 允許INT4中斷
  185.         SJMP        L_QuitRx
  186.        
  187. L_RxBit:
  188.         MOV                A, Rx3_DAT                        ; 把接收的單b數據 暫存到 RxShiftReg(接收緩沖)
  189.         MOV                C, P_RX3
  190.         RRC                A
  191.         MOV                Rx3_DAT, A
  192. L_QuitRx:

  193.         JNB                Tx3_Ting, L_QuitTx        ; 不發送, 退出
  194.         MOV                A, Tx3_BitCnt
  195.         JNZ                L_TxData                        ; 發送計數器為0 表明單字節發送還沒開始
  196.         CLR                P_TX3                                ; 發送開始位
  197.         MOV                Tx3_DAT, Tx3_BUF        ; 把緩沖的數據放到發送的buff
  198.         MOV                Tx3_BitCnt, #9                ; 發送數據位數 (8數據位+1停止位)
  199.         SJMP        L_QuitTx
  200. L_TxData:                                                ; 發送計數器為非0 正在發送數據
  201.         DJNZ        Tx3_BitCnt, L_TxBit        ; 發送計數器減為0 表明單字節發送結束
  202.         SETB        P_TX3                                ; 送停止位數據
  203.         CLR                Tx3_Ting                        ; 發送停止
  204.         SJMP        L_QuitTx
  205. L_TxBit:
  206.         MOV                A, Tx3_DAT                        ; 把最低位送到 CY(益處標志位)
  207.         RRC                A
  208.         MOV                P_TX3, C                        ; 發送一個bit數據
  209.         MOV                Tx3_DAT, A
  210. L_QuitTx:

  211.         POP                ACC
  212.         POP                PSW

  213.         RETI
  214.        

  215. ;===================== INT4中斷函數 ==================================
  216. F_INT4_Interrupt:
  217.         PUSH        PSW
  218.         PUSH        ACC

  219.         ANL                AUXR, #NOT(1 SHL 4)        ;Timer2 停止運行
  220.         MOV                T2H, #HIGH (65536 - (UART3_BitTime / 2 + UART3_BitTime))        ; 起始位 + 半個數據位
  221.         MOV                T2L, #LOW (65536 - (UART3_BitTime / 2 + UART3_BitTime))                ; 起始位 + 半個數據位
  222.         ORL                AUXR, #(1 SHL 4)        ;Timer2 開始運行
  223.         SETB        Rx3_Ring                        ; 標志已收到起始位
  224.         MOV                Rx3_BitCnt, #9                ; 初始化接收的數據位數(8個數據位+1個停止位)
  225.        
  226.         ANL                INT_CLKO,  #NOT(1 SHL 6);        //禁止INT4中斷
  227.         MOV                T2H, #HIGH (65536 - UART3_BitTime)        ; 數據位
  228.         MOV                T2L, #LOW (65536 - UART3_BitTime)        ; 數據位

  229.         POP                ACC
  230.         POP                PSW
  231.         RETI

  232.         END
復制代碼


所有資料51hei提供下載:
使用51單片機Timer2模擬一個半雙工串口.rar (18.4 KB, 下載次數: 12)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品美女久久久久久免费 | 超碰av人人 | 麻豆视频在线免费观看 | 欧美精品一区在线发布 | 免费在线观看一区二区 | 日日日视频 | 免费黄色的视频 | 国产乡下妇女做爰 | 国产精品美女久久久久aⅴ国产馆 | 91 在线| 国产精品毛片一区二区三区 | 亚洲成人高清 | 二区不卡 | 亚洲精品日日夜夜 | 蜜桃臀av一区二区三区 | 91视频官网| 国产精品www| 国产激情第一页 | 欧美一区日韩一区 | 国产精品一区二区久久精品爱微奶 | 一区日韩 | 97国产一区二区 | 国产精品久久久久aaaa | 国产精品一区二区三区在线 | 日本理论片好看理论片 | 亚洲精品国产综合区久久久久久久 | 黄色网址大全在线观看 | 国产一区在线免费观看视频 | 天堂影院av | 久久亚洲综合 | 在线免费看毛片 | 国产一区久久 | 天天天操| 国产91一区二区三区 | 欧美美女被c | 91成人免费电影 | 涩涩视频网站在线观看 | 国产真实精品久久二三区 | 日韩男人天堂 | 成年免费大片黄在线观看岛国 | 国产玖玖 |