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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 41168|回復: 97
收起左側

STM32仿三菱PLC開源代碼+電路圖

  [復制鏈接]
ID:27919 發表于 2019-4-18 11:49 | 顯示全部樓層 |閱讀模式
三菱PLC源碼,提供給大家參考。
0.png

電路原理圖如下:
0.png 0.png

單片機源程序如下:
  1. /*
  2. UART 后臺處理程序
  3. */

  4. /*************Both Uart Used Variable Define *********************/
  5. unsigned char crc1,crc2;
  6. unsigned char crc3,crc4;

  7. /*************** Uart 0 Used Variable Define *********************/
  8. unsigned char uart0_rxbuf[127];                        //接受數據包緩沖
  9. unsigned char uart0_txbuf[127];                        //發送數據包緩沖
  10. unsigned char uart0_rxptr;                                //接受數據包當前指針
  11. unsigned char uart0_txptr;                                //發送數據包當前指針
  12. unsigned char uart0_txall;                          //發送數據包總長度
  13. unsigned char uart0_time;                                //接受數據包分割計時參數


  14. /*************** Uart 1 Used Variable Define *********************/
  15. unsigned char uart1_rxbuf[127];                        //接受數據包緩沖
  16. unsigned char uart1_txbuf[127];                        //發送數據包緩沖
  17. unsigned char uart1_rxptr;                                //接受數據包當前指針
  18. unsigned char uart1_txptr;                                //發送數據包當前指針
  19. unsigned char uart1_txall;                          //發送數據包總長度
  20. unsigned char uart1_time;                                //接受數據包分割計時參數


  21. /*************  Genernal Uart Function Predefine ***************/
  22. extern void uart_crc(unsigned char* , unsigned char);

  23. /***********  Two Uart Disposal Function Predefine **************/
  24. extern void uart0_dispose(void);
  25. extern void uart1_dispose(void);

  26. /************  Two Uart Setup Function Predefine ***************/
  27. extern void UART0_setup(void);
  28. extern void UART1_setup(void);


  29. /*******************************************************************************
  30. * Function Name  : UART1_Setup
  31. * Description    : Configures the uart1
  32. * Input          : None
  33. * Output         : None
  34. * Return         : None
  35. *******************************************************************************/
  36. void UART1_setup(void)
  37. {
  38.   USART_InitTypeDef USART_InitStructure;

  39.   USART_InitStructure.USART_BaudRate = 57600;
  40.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  41.   USART_InitStructure.USART_StopBits = USART_StopBits_1;
  42.   USART_InitStructure.USART_Parity = USART_Parity_No ;
  43.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  44.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  45.   /* Configure the USART1*/
  46.   USART_Init(USART1, &USART_InitStructure);

  47.   /* Enable USART1 Receive and Transmit interrupts */
  48.   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  49.   USART_ITConfig(USART1, USART_IT_TC, ENABLE);

  50.   /* Enable the USART1 */
  51.   USART_Cmd(USART1, ENABLE);

  52.   USART1->CR1 = 0x0000206C;
  53.   
  54. // 初始化 串口輸入輸出緩沖
  55.   uart0_time = 0;
  56.   uart0_txall = 0;
  57.   uart0_txptr = 0;
  58.   uart0_rxptr = 0;
  59.   USART1->CR1 |= 0x00002000;
  60. }


  61. /****************************************************************************  F!
  62. * 名稱:uart0_setup()
  63. * 功能:串口UART1 初始化以及變更格式程序
  64. * 入口參數:無
  65. * 出口參數:無
  66. ****************************************************************************/
  67. /*第二通訊口 通訊參數更新函數*/
  68. void UART0_setup(void)         
  69. {
  70. USART_InitTypeDef USART_InitStructure;

  71. switch(program[0x1C])
  72.         {

  73. //=============無校驗通訊設置區域========================
  74.         case(0x01):
  75.         /* 設置UART串口波特率  4800bps */
  76.         USART_InitStructure.USART_BaudRate = 4800;
  77.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  78.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  79.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  80.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  81.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  82.         break;

  83.         case(0x02):
  84.         /* 設置UART串口波特率  9600bps */
  85.         USART_InitStructure.USART_BaudRate = 9600;
  86.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  87.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  88.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  89.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  90.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  91.         break;

  92.         case(0x03):
  93.         /* 設置UART串口波特率 14400bps */
  94.         USART_InitStructure.USART_BaudRate = 14400;
  95.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  96.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  97.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  98.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  99.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  100.         break;

  101.         case(0x04):
  102.         /* 設置UART串口波特率  19200bps*/
  103.         USART_InitStructure.USART_BaudRate = 19200;
  104.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  105.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  106.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  107.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  108.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  109.         break;

  110.         case(0x05):
  111.         /* 設置UART串口波特率  38400bps */
  112.         USART_InitStructure.USART_BaudRate = 38400;
  113.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  114.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  115.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  116.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  117.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  118.         break;

  119.         case(0x06):
  120.         /* 設置UART串口波特率  57600bps */
  121.         USART_InitStructure.USART_BaudRate = 57600;
  122.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  123.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  124.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  125.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  126.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  127.         break;

  128. //=============奇校驗通訊設置區域========================
  129.         case(0x11):
  130.         /* 設置UART串口波特率 4800bps */
  131.         USART_InitStructure.USART_BaudRate = 4800;
  132.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  133.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  134.         USART_InitStructure.USART_Parity = USART_Parity_Odd;
  135.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  136.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  137.         break;

  138.         case(0x12):
  139.         /* 設置UART串口波特率 9600bps */
  140.         USART_InitStructure.USART_BaudRate = 9600;
  141.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  142.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  143.         USART_InitStructure.USART_Parity = USART_Parity_Odd;
  144.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  145.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  146.         break;

  147.         case(0x13):
  148.         /* 設置UART串口波特率 14400bps */
  149.         USART_InitStructure.USART_BaudRate = 14400;
  150.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  151.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  152.         USART_InitStructure.USART_Parity = USART_Parity_Odd;
  153.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  154.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  155.         break;

  156.         case(0x14):
  157.         /* 設置UART串口波特率  19200bps*/
  158.         USART_InitStructure.USART_BaudRate = 19200;
  159.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  160.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  161.         USART_InitStructure.USART_Parity = USART_Parity_Odd;
  162.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  163.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  164.         break;

  165.         case(0x15):
  166.         /* 設置UART串口波特率 38400bps */
  167.         USART_InitStructure.USART_BaudRate = 38400;
  168.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  169.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  170.         USART_InitStructure.USART_Parity = USART_Parity_Odd;
  171.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  172.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  173.          break;

  174.         case(0x16):
  175.         /* 設置UART串口波特率   57600bps */
  176.         USART_InitStructure.USART_BaudRate = 57600;
  177.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  178.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  179.         USART_InitStructure.USART_Parity = USART_Parity_Odd;
  180.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  181.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  182.          break;


  183. //=============偶校驗通訊設置區域========================
  184.         case(0x21):
  185.         /* 設置UART串口波特率4800bps */
  186.         USART_InitStructure.USART_BaudRate = 4800;
  187.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  188.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  189.         USART_InitStructure.USART_Parity = USART_Parity_Even;
  190.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  191.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  192.         break;

  193.         case(0x22):
  194.         /* 設置UART串口波特率  9600bps*/
  195.         USART_InitStructure.USART_BaudRate = 9600;
  196.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  197.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  198.         USART_InitStructure.USART_Parity = USART_Parity_Even;
  199.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  200.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  201.           break;

  202.         case(0x23):
  203.         /* 設置UART串口波特率 14400bps*/
  204.         USART_InitStructure.USART_BaudRate = 14400;
  205.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  206.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  207.         USART_InitStructure.USART_Parity = USART_Parity_Even;
  208.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  209.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  210.          break;

  211.         case(0x24):
  212.         /* 設置UART串口波特率  19200bps */
  213.         USART_InitStructure.USART_BaudRate = 19200;
  214.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  215.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  216.         USART_InitStructure.USART_Parity = USART_Parity_Even;
  217.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  218.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  219.         break;

  220.         case(0x25):
  221.         /* 設置UART串口波特率 38400bps */
  222.         USART_InitStructure.USART_BaudRate = 38400;
  223.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  224.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  225.         USART_InitStructure.USART_Parity = USART_Parity_Even;
  226.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  227.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  228.         break;

  229.         case(0x26):
  230.         /* 設置UART串口波特率 57600bps */
  231.         USART_InitStructure.USART_BaudRate = 57600;
  232.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  233.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  234.         USART_InitStructure.USART_Parity = USART_Parity_Even;
  235.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  236.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  237.         break;


  238. //==============出現異常后的處理  9600bps 8 N 1
  239.         default:
  240.         /* 設置UART串口波特率 38400bps */
  241.         USART_InitStructure.USART_BaudRate = 38400;
  242.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  243.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  244.         USART_InitStructure.USART_Parity = USART_Parity_No;
  245.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  246.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  247.         break;

  248.         }

  249.   /* Configure the USART2*/
  250.   USART_Init(USART2, &USART_InitStructure);

  251.   /* Enable USART1 Receive and Transmit interrupts */
  252.   USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
  253.   USART_ITConfig(USART2, USART_IT_TC, ENABLE);

  254.   /* Enable the USART1 */
  255.   USART_Cmd(USART2, ENABLE);


  256. // 初始化 串口輸入輸出緩沖
  257.   uart1_time = 0;
  258.   uart1_txall = 0;
  259.   uart1_txptr = 0;
  260.   uart1_rxptr = 0;

  261. }

  262. //=================================================================================================================



  263. //=================================================================================================================
  264. //=================================================================================================================
  265. //=================================================================================================================
  266. /****************************************************************************  F
  267. * 名稱:uart1_dispose()
  268. * 功能:串口uart1數據處理。          專用編程接口
  269. * 入口參數:無
  270. * 出口參數:無
  271. ****************************************************************************/
  272. void uart1_dispose(void)
  273. {
  274. unsigned char bitres;
  275. unsigned short address;
  276. unsigned short length;
  277. unsigned short counter;

  278. unsigned char  ta;
  279. //
  280. unsigned short tc;


  281. if((uart1_rxptr > 4) && (uart1_time > 10))
  282. {

  283. if((uart1_rxbuf[0] == 0x00) || (uart1_rxbuf[0] ==  program[0x1b]) ) //通訊地址判斷機制——8位模式         #### 以后用數據表參數代替
  284.         {
  285.         crc3 = uart1_rxbuf[uart1_rxptr - 2];
  286.         crc4 = uart1_rxbuf[uart1_rxptr - 1];

  287.         uart_crc(uart1_rxbuf , (uart1_rxptr - 2));


  288.            if((crc3 == crc1)&&(crc4 == crc2))
  289.                 {

  290.         /*********@@@@@@@@@@@@@@@@解釋執行程序 begin @@@@@@@@@@@@@@@***********/
  291.         switch(uart1_rxbuf[1])
  292.                 {
  293.                 //+++++++++++++++++++++++++++++++++++++++++++++++
  294.                 case(0x01):
  295.                 address = uart1_rxbuf[2];
  296.                 address = address << 8;
  297.                 address |= uart1_rxbuf[3];
  298.                 bitres = address & 0x0f;
  299.                 address = address >> 4;
  300.                
  301.                 length = uart1_rxbuf[4];
  302.                 length = length << 8;
  303.                 length |= uart1_rxbuf[5];
  304.                
  305.                 if(length == 0) length = 1;

  306.                 ta = 0;
  307.                 uart1_txbuf[0] = uart1_rxbuf[0];
  308.                 uart1_txbuf[1] = uart1_rxbuf[1];
  309.                 //uart1_txbuf[2] =
  310.                 counter = 3;
  311.                 uart1_txbuf[counter] = 0;

  312.                 while(length)
  313.                         {
  314.                         if(memory[address] & (1<<bitres))
  315.                                 {
  316.                                 uart1_txbuf[counter] |= (1<<ta);
  317.                                 }
  318.                         else
  319.                                 {
  320.                                 uart1_txbuf[counter] &= ~(1<<ta);
  321.                                 }
  322.                         bitres++;
  323.                         if(bitres == 16)
  324.                                 {
  325.                                 bitres = 0;
  326.                                 address ++;
  327.                                 }
  328.                         ta++;
  329.                         length--;
  330.                         if((ta == 8)&(length != 0))
  331.                                 {
  332.                                 ta = 0;
  333.                                 counter ++;
  334.                                 uart1_txbuf[counter] = 0;
  335.                                 }
  336.                         
  337.                         }
  338.                 uart1_txbuf[2] = counter - 2;
  339.                 uart_crc(uart1_txbuf,(counter + 1));
  340.                 uart1_txbuf[counter+1] = crc1;
  341.                 uart1_txbuf[counter+2] = crc2;
  342.                 uart1_txall = counter+2;

  343.                 uart1_txptr = 0;
  344.                 COM1_OUT;
  345.                 USART2->DR = uart1_txbuf[0];

  346.                 break;
  347.                 //+++++++++++++++++++++++++++++++++++++++++++++++
  348.                 //+++++++++++++++++++++++++++++++++++++++++++++++
  349.                 case(0x05):
  350.                 address = uart1_rxbuf[2];
  351.                 address = address << 8;
  352.                 address |= uart1_rxbuf[3];
  353.                 bitres = address & 0x0f;
  354.                 address = address >> 4;
  355.                
  356.                 if((uart1_rxbuf[4] == 0xff) && (uart1_rxbuf[5] == 0x00))
  357.                 {
  358.                 memory[address] |= (1<< bitres);
  359.                 }
  360.                 else if((uart1_rxbuf[4] == 0x00) && (uart1_rxbuf[5] == 0x00))
  361.                 {
  362.                 memory[address] &= ~(1<< bitres);
  363.                 }

  364.                 uart1_txbuf[0] = uart1_rxbuf[0];
  365.                 uart1_txbuf[1] = uart1_rxbuf[1];
  366.                 uart1_txbuf[2] = uart1_rxbuf[2];
  367.                 uart1_txbuf[3] = uart1_rxbuf[3];
  368.                 uart1_txbuf[4] = uart1_rxbuf[4];
  369.                 uart1_txbuf[5] = uart1_rxbuf[5];
  370.                 uart1_txbuf[6] = uart1_rxbuf[6];
  371.                 uart1_txbuf[7] = uart1_rxbuf[7];
  372.                 uart1_txall = 7;

  373.                 //-----------------

  374.                 uart1_txptr = 0;
  375.                 COM1_OUT;
  376.                 USART2->DR = uart1_txbuf[0];
  377.                 break;



  378.                 //+++++++++++++++++++++++++++++++++++++++++++++++
  379.                 case(0x03):        
  380.                 address = uart1_rxbuf[2];
  381.                 address = address << 8;
  382.                 address |= uart1_rxbuf[3];

  383.                 length = uart1_rxbuf[4];
  384.                 length = length << 8;
  385.                 length |= uart1_rxbuf[5];
  386.                 if(length == 0) length = 1;

  387.                 counter = 2;
  388.                 uart1_txbuf[0] = uart1_rxbuf[0];
  389.                 uart1_txbuf[1] = uart1_rxbuf[1];
  390.                
  391.                   while(length)
  392.                           {
  393.                           counter ++;
  394.                           uart1_txbuf[counter] = memory[address] >> 8;
  395.                           counter ++;
  396.                           uart1_txbuf[counter] = memory[address] & 0x00ff;
  397.   
  398.                           length --;
  399.                           address ++;
  400.                           }
  401.                   
  402.                 uart1_txbuf[2]= counter -2;
  403.                 uart_crc(uart1_txbuf,(counter + 1));
  404.                 uart1_txbuf[counter+1] = crc1;
  405.                 uart1_txbuf[counter+2] = crc2;
  406.                 uart1_txall = counter+2;

  407.                 uart1_txptr = 0;
  408.                 COM1_OUT;
  409.                 USART2->DR = uart1_txbuf[0];
  410.                 break;
  411.                 //+++++++++++++++++++++++++++++++++++++++++++++++
  412.             /*
  413.                 //+++++++++++++++++++++++++++++++++++++++++++++++
  414.                 case(0x0F):
  415.                 address = uart1_rxbuf[2];
  416.                 address = address << 8;
  417.                 address |= uart1_rxbuf[3];
  418.                 bitres = address & 0x0f;
  419.                 address = address >> 4;
  420.                
  421.                 length = uart1_rxbuf[4];
  422.                 length = length << 8;
  423.                 length |= uart1_rxbuf[5];

  424.                 uart1_txbuf[0] = uart1_rxbuf[0];
  425.                 uart1_txbuf[1] = uart1_rxbuf[1];
  426.                 uart1_txbuf[2] = uart1_rxbuf[2];
  427.                 uart1_txbuf[3] = uart1_rxbuf[3];
  428.                 uart1_txbuf[4] = uart1_rxbuf[4];
  429.                 uart1_txbuf[5] = uart1_rxbuf[5];

  430.                 ta  = 0;
  431.                 counter = 7;

  432.                 //-----------------
  433.                         while(length)
  434.                                 {
  435.                                 if(uart1_rxbuf[counter] & (1<<ta))
  436.                                         {
  437.                                         memory[address] |= (1<<bitres);
  438.                                         }
  439.                                 else
  440.                                         {
  441.                                         memory[address] &= ~(1<<bitres);
  442.                                         }
  443.                                 bitres++;
  444.                                 if(bitres == 8)
  445.                                         {
  446.                                         bitres = 0;
  447.                                         address ++;
  448.                                         }
  449.                                 ta++;
  450.                                 length--;
  451.                                 if(ta == 8)
  452.                                         {
  453.                                         ta = 0;
  454.                                         counter ++;
  455.                                         }
  456.                         
  457.                                 }


  458.                 uart_crc(uart1_txbuf,6);
  459.                 uart1_txbuf[6] = crc1;
  460.                 uart1_txbuf[7] = crc2;
  461.                 uart1_txall = 7;

  462.                 //-----------------


  463.                 uart1_txptr = 0;
  464.                 COM1_OUT;
  465.                 USART2->DR = uart1_txbuf[0];
  466.                 break;
  467.             */
  468.                 //+++++++++++++++++++++++++++++++++++++++++++++++
  469.                 case(0x10):
  470.                 address = uart1_rxbuf[2];
  471.                 address = address << 8;
  472.                 address |= uart1_rxbuf[3];

  473.                 length = uart1_rxbuf[4];
  474.                 length = length << 8;
  475.                 length |= uart1_rxbuf[5];
  476.                 if(length == 0) length = 1;

  477.                 counter = 7;
  478.                 uart1_txbuf[0] = uart1_rxbuf[0];
  479.                 uart1_txbuf[1] = uart1_rxbuf[1];
  480.                 uart1_txbuf[2] = uart1_rxbuf[2];
  481.                 uart1_txbuf[3] = uart1_rxbuf[3];
  482.                 uart1_txbuf[4] = uart1_rxbuf[4];
  483.                 uart1_txbuf[5] = uart1_rxbuf[5];

  484.                 while(length)
  485.                         {
  486.                         tc = uart1_rxbuf[counter];
  487.                         tc = tc << 8;
  488.                         tc |= uart1_rxbuf[counter +1];
  489.                         memory[address] = tc;

  490.                         counter +=2;
  491.                         address ++;
  492.                         length --;
  493.                         }

  494.                 uart_crc(uart1_txbuf,6);
  495.                 uart1_txbuf[6] = crc1;
  496.                 uart1_txbuf[7] = crc2;
  497.                 uart1_txall = 7;


  498.                 uart1_txptr = 0;
  499.                 COM1_OUT;
  500.                 USART2->DR = uart1_txbuf[0];
  501.                 break;


  502.                 }                                 
  503.         /*********@@@@@@@@@@@@@@@@解釋執行程序 end @@@@@@@@@@@@@@@***********/
  504.             uart1_rxptr = 0;          //清空uart1的緩沖計數 以及 定時
  505.                 uart1_time = 0;
  506.                 }
  507.         else
  508.                 {
  509.                 uart1_rxptr = 0;          //清空uart1的緩沖計數 以及 定時
  510.                 uart1_time = 0;
  511.                 }
  512.         }
  513. else
  514.         {
  515.         uart1_rxptr = 0;                  //清空uart1的緩沖計數 以及 定時
  516.         uart1_time = 0;
  517.         }
  518. }



  519. if((uart1_rxptr <= 4) && (uart1_time > 15))
  520.     {
  521.         uart1_rxptr = 0;                  //清空uart1的緩沖計數 以及 定時
  522.         uart1_time = 0;
  523.     }



  524. }


  525. /****************************************************************************  F
  526. * 名稱:uart0_dispose()
  527. * 功能:串口uart0數據處理。
  528. * 入口參數:無
  529. * 出口參數:無
  530. ****************************************************************************/
  531. void uart0_dispose(void)
  532. {
  533. unsigned short address;

  534. unsigned char  ta;
  535. //
  536. unsigned short tt,tc;
  537. if((uart0_rxptr > 4) && (uart0_time > 9))
  538. {

  539. if((uart0_rxbuf[0] == 0x01)&&(uart0_rxbuf[1] == 0x55)&&(uart0_rxbuf[2] == 0xaa)&&(uart0_rxbuf[11] == 0x12)&&(uart0_rxbuf[12] == 0xef)&&(uart0_rxbuf[13] == 0xff))
  540.     {
  541.       /*********@@@@@@@@@@@@@@@@編程口解釋執行程序 begin @@@@@@@@@@@@@@@***********/
  542.       if(uart0_rxbuf[3] == 0x00)          //讀參數系統
  543.              {
  544.           address = uart0_rxbuf[5];
  545.           address = address << 8;
  546.           address |= uart0_rxbuf[6];
  547.                switch(uart0_rxbuf[4])
  548.             {
  549.                     //=====================================================================
  550.             case(0x00):   
  551.                     uart0_txbuf[7] = memory[address];
  552.                     uart0_txbuf[8] = memory[address] >> 8;
  553.                     uart0_txbuf[9] = memory[address + 1];
  554.                     uart0_txbuf[10] = memory[address + 1] >> 8;
  555.             break;
  556.                     //=====================================================================
  557.             case(0x11):
  558.                     uart0_txbuf[7] = program[address];

  559.                     uart0_txbuf[8] = program[address + 1];

  560.                     uart0_txbuf[9] = program[address + 2];

  561.                     uart0_txbuf[10] = program[address + 3];
  562.             break;

  563.             }
  564.           uart0_txbuf[0] = 0x02;
  565.           uart0_txbuf[1] = 0xAA;
  566.           uart0_txbuf[2] = 0x55;

  567.           uart0_txbuf[3] = 0x00;
  568.           uart0_txbuf[4] = uart0_rxbuf[4];
  569.           uart0_txbuf[5] = uart0_rxbuf[5];
  570.           uart0_txbuf[6] = uart0_rxbuf[6];

  571.           uart0_txbuf[11] = 0x34;
  572.           uart0_txbuf[12] = 0xcd;
  573.           uart0_txbuf[13] = 0xff;

  574.           uart0_txall = 13;
  575.           uart0_txptr = 0;
  576.           USART1->DR = uart0_txbuf[0];
  577.             }
  578.       else if(uart0_rxbuf[3] == 0x11)         //寫參數系統
  579.              {
  580.           address = uart0_rxbuf[5];
  581.           address = address << 8;
  582.           address |= uart0_rxbuf[6];
  583.           switch(uart0_rxbuf[4])
  584.             {
  585.                     //=====================================================================
  586.             case(0x00):
  587.               tc = uart0_rxbuf[8];
  588.               tc = tc << 8;
  589.               tc |= uart0_rxbuf[7];
  590.               memory[address] = tc;
  591.               tc = uart0_rxbuf[10];
  592.               tc = tc << 8;
  593.               tc |= uart0_rxbuf[9];
  594.               memory[address + 1] = tc;
  595.             break;
  596.                     //=====================================================================
  597.                     //=====================================================================
  598.             case(0x11):
  599.               if(address == 0)
  600.               {
  601.                   FLASH_Unlock();
  602.                   FLASH_ErasePage(0x0800C000);
  603.                   FLASH_ErasePage(0x0800C400);
  604.                   FLASH_ErasePage(0x0800C800);
  605.                   FLASH_ErasePage(0x0800CC00);
  606.                   
  607.                   FLASH_ErasePage(0x0800D000);
  608.                   FLASH_ErasePage(0x0800D400);
  609.                   FLASH_ErasePage(0x0800D800);
  610.                   FLASH_ErasePage(0x0800DC00);
  611.                   
  612.                   FLASH_ErasePage(0x0800E000);
  613.                   FLASH_ErasePage(0x0800E400);
  614.                   FLASH_ErasePage(0x0800E800);
  615.                   FLASH_ErasePage(0x0800EC00);
  616.                   
  617.                   FLASH_ErasePage(0x0800F000);
  618.                   FLASH_ErasePage(0x0800F400);
  619.                   FLASH_ErasePage(0x0800F800);
  620.                   FLASH_ErasePage(0x0800FC00);
  621.               }
  622.               
  623.               tc = uart0_rxbuf[8];
  624.               tc = tc << 8;
  625.               tc |= uart0_rxbuf[7];
  626.               FLASH_ProgramHalfWord( (0x0800C000 + address), tc);
  627.               
  628.               tc = uart0_rxbuf[10];
  629.               tc = tc << 8;
  630.               tc |= uart0_rxbuf[9];
  631.               FLASH_ProgramHalfWord( (0x0800C000 + address + 2), tc);
  632.               
  633.             break;
  634.             }     

  635.           uart0_txbuf[0] = 0x02;
  636.           uart0_txbuf[1] = 0xAA;
  637.           uart0_txbuf[2] = 0x55;

  638.           uart0_txbuf[3] = 0x11;
  639.           uart0_txbuf[4] = uart0_rxbuf[4];
  640.           uart0_txbuf[5] = uart0_rxbuf[5];
  641.           uart0_txbuf[6] = uart0_rxbuf[6];
  642.   
  643.           uart0_txbuf[7] = uart0_rxbuf[7];
  644.           uart0_txbuf[8] = uart0_rxbuf[8];
  645.           uart0_txbuf[9] = uart0_rxbuf[9];
  646.           uart0_txbuf[10] = uart0_rxbuf[10];

  647.           uart0_txbuf[11] = 0x34;
  648.           uart0_txbuf[12] = 0xCD;
  649.           uart0_txbuf[13] = 0xFF;

  650.           uart0_txall = 13;
  651.           uart0_txptr = 0;
  652.           USART1->DR = uart0_txbuf[0];
  653.              }
  654.       else if(uart0_rxbuf[3] == 0x30)         //特殊指令
  655.              {
  656. ……………………

  657. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

工程是IAR編譯的51hei附件下載:
STM32仿三菱PLC開源代碼.7z (500.17 KB, 下載次數: 1167)
STM32F103RBT6_開源PLC原理圖.pdf (897.25 KB, 下載次數: 1048)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:71883 發表于 2019-10-12 14:37 | 顯示全部樓層
請問樓主梯形圖用什么軟件編譯,編譯完成后代碼下載到單片機,和編譯軟件怎么通信。
回復

使用道具 舉報

ID:795427 發表于 2020-10-2 09:04 | 顯示全部樓層
這是通過什么軟件編譯的,反正不是keil軟件。
回復

使用道具 舉報

ID:272119 發表于 2020-10-2 10:28 | 顯示全部樓層
我目前也正好做這個,不過都是自己一點點啃代碼,串口數據轉坐標脈沖算法我至少花了一周,伺服電機的S型啟動和停止我至少用了3個算法方案,最后勉強用數組寫固定式緩沖才勉強撐住.
回復

使用道具 舉報

ID:77110 發表于 2019-4-19 21:25 | 顯示全部樓層
its = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_Odd;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_
回復

使用道具 舉報

ID:74303 發表于 2019-5-26 20:37 | 顯示全部樓層
下載學習
回復

使用道具 舉報

ID:415096 發表于 2019-5-27 11:26 | 顯示全部樓層
下載學習,可是沒有硬件也是理解不了的
回復

使用道具 舉報

ID:82419 發表于 2019-5-27 20:23 來自觸屏版 | 顯示全部樓層
留個腳印!以后有需要來下載
回復

使用道具 舉報

ID:557411 發表于 2019-6-8 11:46 | 顯示全部樓層
完整資源開源,樓主好樣的,佩服!找了好久了,感謝樓主和我們這個交流學習平臺
回復

使用道具 舉報

ID:113936 發表于 2019-6-10 18:48 | 顯示全部樓層
能下載梯形圖嗎
回復

使用道具 舉報

ID:46999 發表于 2019-8-16 17:13 | 顯示全部樓層
不錯。先記下了。
回復

使用道具 舉報

ID:240452 發表于 2019-8-17 12:44 | 顯示全部樓層

留個腳印!
回復

使用道具 舉報

ID:166646 發表于 2019-8-19 10:24 | 顯示全部樓層
這個很NB,謝謝了
回復

使用道具 舉報

ID:69421 發表于 2019-8-23 18:27 來自觸屏版 | 顯示全部樓層
誰有開發板試試能行不告知一聲
回復

使用道具 舉報

ID:603960 發表于 2019-8-26 16:35 | 顯示全部樓層
樓主牛逼 ,這個東西可以好好參考參考了
回復

使用道具 舉報

ID:606788 發表于 2019-9-4 18:05 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:606788 發表于 2019-9-5 08:39 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:482794 發表于 2019-10-13 14:01 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:629247 發表于 2019-10-24 21:47 | 顯示全部樓層
怎么打開文件,找不到工程文件啊,各位大蝦指導下新人
回復

使用道具 舉報

ID:52896 發表于 2019-11-12 06:06 | 顯示全部樓層
感謝分享,下載學習
回復

使用道具 舉報

ID:383657 發表于 2019-11-17 22:37 | 顯示全部樓層
下載學習學習
回復

使用道具 舉報

ID:492919 發表于 2019-11-23 14:47 | 顯示全部樓層
不錯的東東.感謝樓主分享
回復

使用道具 舉報

ID:195496 發表于 2019-11-30 20:34 | 顯示全部樓層
謝謝分享,學習一下
回復

使用道具 舉報

ID:128391 發表于 2019-12-1 16:51 | 顯示全部樓層
感謝大大的分享,收下學習!
回復

使用道具 舉報

ID:164036 發表于 2019-12-13 22:11 | 顯示全部樓層
謝謝大佬分享,我找個開發板下進去試試看
回復

使用道具 舉報

ID:658136 發表于 2019-12-29 23:46 | 顯示全部樓層
謝謝分享,學習一下
回復

使用道具 舉報

ID:292577 發表于 2019-12-31 15:34 | 顯示全部樓層
完整資源開源,樓主好樣的,佩服!
回復

使用道具 舉報

ID:693370 發表于 2020-3-6 18:32 | 顯示全部樓層
下載學習
回復

使用道具 舉報

ID:369697 發表于 2020-3-10 12:11 | 顯示全部樓層
下載學習中,謝謝LZ分享
回復

使用道具 舉報

ID:574873 發表于 2020-3-10 15:15 | 顯示全部樓層
這個很NB,謝謝了,能不能在線仿真調試梯形圖?
回復

使用道具 舉報

ID:697917 發表于 2020-3-11 10:46 | 顯示全部樓層
謝謝,正在尋找仿PLC的內容
回復

使用道具 舉報

ID:91165 發表于 2020-3-11 13:06 | 顯示全部樓層
直接梯形圖串口傳程序嗎
回復

使用道具 舉報

ID:719527 發表于 2020-3-31 14:57 | 顯示全部樓層
仿PLC的資料有用過的嗎
回復

使用道具 舉報

ID:719527 發表于 2020-3-31 14:58 | 顯示全部樓層
謝謝。下載學習
回復

使用道具 舉報

ID:719527 發表于 2020-3-31 15:00 | 顯示全部樓層
有用嗎?有試過的嗎
回復

使用道具 舉報

ID:719527 發表于 2020-4-1 13:35 | 顯示全部樓層
下載來看看有沒用
回復

使用道具 舉報

ID:716711 發表于 2020-4-9 09:26 | 顯示全部樓層
感謝分享,我有硬件原理圖,這個程序先mark 一下,哪天想動手做一塊了,來學習研究。
回復

使用道具 舉報

ID:430492 發表于 2020-4-9 11:51 | 顯示全部樓層
非常棒啊!完整資源開源,樓主好樣的,佩服!
回復

使用道具 舉報

ID:254011 發表于 2020-4-12 00:10 | 顯示全部樓層
下載學習,謝謝樓主
回復

使用道具 舉報

ID:313434 發表于 2020-4-16 10:32 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:142383 發表于 2020-4-16 16:16 | 顯示全部樓層
感謝樓主分享,下載學習學習。
回復

使用道具 舉報

ID:105206 發表于 2020-5-1 08:49 | 顯示全部樓層
下載學習,謝謝樓主
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
日韩中文字幕在线看| 成人性视频欧美一区二区三区| 久久精品九九| 嗯~啊~轻一点视频日本在线观看| 免费在线观看国产黄| 免费视频一二三区| 奇米精品一区二区三区| 国产91精品在线播放| 欧美三级韩国三级日本三斤| 国内精品久久久久影院薰衣草| 男人的天堂久久| 含羞草www国产在线视频| 亚洲a级在线观看| 亚洲欧美综合另类在线卡通| 国产亚洲在线| 精品网站aaa| www555久久| 欧美白嫩的18sex少妇| 乱人伦中文字幕在线zone| 黄色录像二级片| 久久精品中文字幕一区| 亚洲一区精品在线| 国产美女娇喘av呻吟久久| 我不卡神马影院| 久久天堂久久| segui88久久综合9999| 蜜桃传媒在线| 夜夜骑日日射| 色窝窝无码一区二区三区成人网站 | 美国黑人一级大黄| 妺妺窝人体色www在线观看| 丝袜美腿玉足3d专区一区| 国产精品第3页| 一本色道久久88精品综合| 欧美精品在线观看一区二区| 亚洲欧美国产毛片在线| 99免费精品视频| 石原莉奈一区二区三区在线观看| 7777久久香蕉成人影院| 97久久超碰| 黑人巨大精品| 成人av影院在线观看| 懂色一区二区三区| 婷婷综合影院| 超碰成人福利网| www.91av.cn| 午夜剧场日韩| 手机看片一区二区| 国产又粗又长又黄| 精品人妻一区二区三区免费看 | 国产视频一区在线播放| 国产成人av电影在线| 青娱乐精品视频| 午夜激情成人网| 欧美日韩在线看片| 在线欧美成人| 日本1区2区| 资源av在线| 国产又爽又黄免费视频| 99久久久国产精品无码免费| 国产欧美日韩另类| 一级二级黄色片| 超碰97人人干| 亚洲精品成人无码熟妇在线| 成人av蜜桃| 亚洲欧洲日韩| 亚洲最好看的视频| 成人h动漫精品一区二区器材| 亚洲影视资源| 欧美一级做一级爱a做片性| 国产福利片在线观看| 人人超在线公开视频| 7777久久亚洲中文字幕| 日本美女黄色一级片| 国产调教在线观看| 特级西西www444人体聚色| 国产福利在线观看视频| 国产福利短视频| 精品无码一区二区三区 | 亚洲一区三区视频在线观看| 天堂精品一区二区三区| 水蜜桃一区二区| 亚洲7777| 国产成人亚洲综合无码| 欧日韩免费视频| 日本成人在线免费视频| 五月激情婷婷在线| 美女日批在线观看| 久久久久亚洲av成人无码电影| 波多野结衣片子| 中文字幕av久久爽av| 久久久久久欧美精品se一二三四 | 国产三级电影在线观看| 午夜不卡视频| 国产v日韩v欧美v| 久久伊人国产| 国产无遮挡裸体免费久久| 亚洲桃色综合影院| 婷婷综合社区| 久久性色av| 国产91丝袜在线播放0| ww亚洲ww在线观看国产| 亚洲另类色综合网站| 欧美性猛交xxxx乱大交蜜桃| 欧美精品1区2区3区| 亚洲国产又黄又爽女人高潮的| 亚洲一级黄色片| 97国产精品视频| 成人网在线视频| 黑人中文字幕一区二区三区| 亚洲国产精品日韩| 国产精品视频一区二区三区四区五区| 爱情岛论坛vip永久入口| 日本69式三人交| 国产精品日韩三级| 日韩精品免费播放| 中文乱码人妻一区二区三区视频| 色欲人妻综合网| 亚洲一区二区影视| 少妇喷水在线观看| 国产精品不卡一区二区三区在线观看| 日本色七七影院| 成视人a免费观看视频| av小片在线| 欧美大片1688网站| 国产日产一区| 国产精品第108页| 国产小视频在线观看免费| 一级黄色录像大片| 制服丝袜网站| 欧美老女人性开放| 亚洲私拍视频| 国产欧美一区| 精品一区二区三区免费毛片爱| 中文成人综合网| 99精品视频免费观看| 九一九一国产精品| 亚洲精品视频自拍| 日韩西西人体444www| 欧美成在线视频| 国产精选在线观看91| 亚洲人成无码网站久久99热国产 | 裸体丰满少妇做受久久99精品| 国产精品无码人妻一区二区在线 | 久久在线观看免费| 日本精品一区二区三区四区的功能| 亚洲精品午夜精品| 国产精品wwwwww| 麻豆md0077饥渴少妇| 国产黑丝一区二区| 亚洲视频一区在线播放| 国产乱在线观看视频| 国产一级在线| 日本少妇精品亚洲第一区| 亚洲专区欧美专区| 亚洲精品视频自拍| 亚洲香蕉av在线一区二区三区| 国产一区二中文字幕在线看| 欧美一区二区激情| 五月天婷婷丁香网| 天天干在线观看| 在线观看国产福利视频| 亚洲综合伊人| 视频一区在线播放| 欧美日韩精品中文字幕| 另类专区欧美制服同性| 日日夜夜精品网站| 大又大又粗又硬又爽少妇毛片 | 91麻豆精品国产| 日本精品视频网站| 免费人成自慰网站| √天堂中文官网8在线| 久草在线免费资源站| 超碰97在线免费观看| 秋霞影视一区二区三区| 国产成人精品在线看| 欧美日韩在线电影| 国产va免费精品高清在线观看 | 91成人在线精品| 久久久在线视频| 中文字幕一区二区三区四区五区六区 | 污视频在线观看免费网站| 久久免费视频播放| 九色精品视频在线观看| 自拍视频在线网| 久久国产亚洲| 中文字幕制服丝袜成人av| 午夜精品一区二区三区免费视频 | 丝袜足脚交91精品| 麻豆精品免费视频| 亚洲永久免费网站| 探花视频在线观看| 九一免费看片| ww久久综合久中文字幕| 全部av―极品视觉盛宴亚洲| 在线一区二区观看| 国产精品一区=区| 免费av不卡在线| 国产黄色片网站| 国产在线观看黄| 91成人精品| 黑人巨大精品欧美一区二区| 欧美又大又粗又长| 182午夜在线观看| 精品国产av 无码一区二区三区| 日本福利片高清在线观看| 激情五月综合网| 一区在线中文字幕| 57pao国产精品一区| 欧美大尺度做爰床戏| 亚洲精品无码专区| 18+视频在线观看| 亚洲男女自偷自拍| 欧美一区二区三区爱爱| 久久人人爽爽人人爽人人片av| 精品无码人妻一区二区免费蜜桃| 国产亚洲精品拍拍拍拍拍| 欧美片第1页| 国产v综合v亚洲欧| 在线观看亚洲区| 欧美狂野激情性xxxx在线观| 无码人妻精品一区二区三区蜜桃91 | 亚洲图片欧美日产| 久久香蕉视频网站| 日韩精品一区二区亚洲av观看| 午夜成在线www| 综合激情在线| 欧美日韩国产天堂| 久久天天狠狠| 日韩精品一区二区不卡| 日本在线视频1区| 国产精品xvideos88| 337p亚洲精品色噜噜噜| 日韩精品久久一区二区三区| 黄色片视频网站| 韩国中文免费在线视频| 亚洲日本激情| 亚洲成成品网站| www污在线观看| 国内爆初菊对白视频| 伊人久久综合一区二区| 99视频热这里只有精品免费| 久久久久亚洲精品| 精品一区二区视频在线观看| 黄色的网站免费| 成人短片线上看| 欧美男女性生活在线直播观看| 亚洲一区综合| 国产精品乱码久久久| 国产v日韩v欧美v| 久久综合久久综合九色| 欧美精品在线看| 伊人免费视频二| 国产又爽又黄视频| 日韩高清一区| 亚洲精品视频自拍| 亚洲伊人久久大香线蕉av| 九九视频免费观看| 日韩毛片久久久| 国产伦精品一区二区三区免费迷 | 国产乱码精品一区二区三区精东 | 91在线高清观看| 2018国产精品视频| 一级黄色片网址| 在线观看视频污| 日本午夜精品一区二区三区电影| 国产一区二区三区在线看| 五月天视频在线观看| 你懂的免费视频| 欧美1区视频| 亚洲天堂av网| 色欲无码人妻久久精品| 国产美女在线免费观看| 在线亚洲精品| 欧美日韩xxxxx| 欧美人妻一区二区三区| 九色视频在线观看免费播放| 国产精品中文字幕一区二区三区| 日韩免费不卡av| 久热这里只有精品在线| 怡红院在线播放| 国产目拍亚洲精品99久久精品| 99久久99| 国产裸体无遮挡| 九九九九九九精品任你躁 | 亚洲国产一区二区在线| 欧性猛交ⅹxxx乱大交| 综合激情久久| 欧美日韩dvd在线观看| 国产精品裸体瑜伽视频| 在线a视频网站| 欧美午夜一区二区福利视频| 最新国产精品亚洲| 蜜桃av免费看| 日日夜夜精品一区| 国产精品你懂的在线| 久久久久久国产精品免费免费| 国产精品国产三级国产普通话对白| 久久青草免费| 欧美三级蜜桃2在线观看| www.99av.com| 午夜免费啪视频观看视频| 国产成人免费高清| 91免费看网站| 亚洲第一成人av| sdde在线播放一区二区| 国产小视频国产精品| 国产精品麻豆一区| 国产va在线视频| 欧美午夜片欧美片在线观看| 欧美 日韩精品| 狠狠干夜夜操| 国产91丝袜在线18| 久久国产一区二区| 久在线观看福利视频| 国产精品第十页| 国产精品久久久久久久久久小说 | 日本免费一区二区六区| 欧美日韩午夜视频在线观看| 波多野结衣作品集| 在线免费看黄色| 国产日韩视频一区二区三区| 亚洲看片网站| 日本免费网址| 国产一区二区三区在线观看免费| 91成人免费看| 在线观看免费国产成人软件| 99精品国产福利在线观看免费| 国产成人在线精品| 国产精品无码免费播放| 久久国产精品亚洲人一区二区三区| 久久久久久久久综合| 国产精品无码粉嫩小泬| 午夜精品福利影院| 九九九久久久久久| 人人妻人人爽人人澡人人精品| 国产精品毛片无码| 日韩av一区在线| 蜜桃av乱码一区二区三区| 久久久久久美女精品| 在线免费观看a级片| 欧美在线观看网站| 在线国产情侣| 免费精品一区| 欧美精品少妇一区二区三区| 黑人玩弄人妻一区二区三区| 少妇精品一区二区三区| 性感av在线播放| 日韩美女视频19| 97国产在线播放| 一区二区电影网| 中文字幕在线观看不卡| 免费在线观看的av网站| 欧美日韩激情视频一区二区三区| 亚洲免费观看高清完整版在线观看熊| 国产精品第12页| 国产福利电影在线| 色狠狠桃花综合| 中文字幕在线看高清电影| 成人自拍av| 日韩电视剧在线观看免费网站| 久久精品无码一区二区三区| 国产三级精品在线不卡| 国产成人精品自线拍| 国产成人av电影免费在线观看| 亚洲乱码一区二区三区 | 国产成人欧美日韩在线电影| 亚洲精品欧美精品| 91嫩草在线播放| 亚洲第一激情av| 噜噜噜在线视频| 日韩黄色三级在线观看| 久热精品视频在线| 风流少妇一区二区三区91| 青青草一区二区三区| 午夜啪啪福利视频| www日韩tube| 欧美成人高清电影在线| 色网站在线播放| 综合亚洲视频| 精品综合久久久| 1插菊花综合| 亚洲线精品一区二区三区八戒| yy1111111| 亚洲精品一区二区三区在线| 国产91精品不卡视频| 国内精品不卡一区二区三区| 国产偷v国产偷v亚洲高清| 色91精品久久久久久久久| 国产另类xxxxhd高清| 欧美成年人网站| 欧美成人高清手机在线视频 | 欧美国产在线电影| 亚洲国产成人私人影院| 2024国产精品| 国产av一区二区三区传媒| 久久精品九色| 国产精品久久久久久久久久尿| 免费看又色又爽又黄网站| 亚洲第一在线综合网站|