找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1849|回复: 11
打印 上一主题 下一主题
收起左侧

STC15W408AS单片机485通讯问题

[复制链接]
跳转到指定楼层
楼主
目前使用串口3,P16与P17,控制SP485芯片,之前怀疑HYM芯片与SP485芯片不能替换,但是更换HYM芯片一样还是不能通讯。
程序为测试程序,只发送不接收,目前串口无任何反应,
P16与P17需要用到内部时钟,TNOW(P14)也设置为推挽输出模式,电平已经拉高。
希望大神帮忙看一看哪里有问题。。。


#include        "config.h"
#include        "USART1.h"
#include        "delay.h"
#include        "GPIO.h"
u8        idata CRC[2];
u8 data1,data2;
u8 pf;
u8 flag,flag1;
sbit key2=P1^4;

#define FOSC 11059200L
sbit T0CLKO   = P3^5;               //定时器0的时钟输出脚
#define F38_4KHz (65536-FOSC/2/38400)    //1T模式
//#define F38_4KHz (65536-FOSC/2/12/38400) //12T模式

//-----------------------------------------------

void timet0()
{


    AUXR |= 0x80;                   //定时器0为1T模式
//  AUXR &= ~0x80;                  //定时器0为12T模式

    TMOD = 0x00;                    //设置定时器为模式0(16位自动重装载)

    TMOD &= ~0x04;                  //C/T0=0, 对内部时钟进行时钟输出
//  TMOD |= 0x04;                   //C/T0=1, 对T0引脚的外部时钟进行时钟输出

    TL0 = F38_4KHz;                 //初始化计时值
    TH0 = F38_4KHz >> 8;
    TR0 = 1;
    INT_CLKO = 0x01;                //使能定时器0的时钟输出功能
        }

void        GPIO_config(void)
{
        GPIO_InitTypeDef        GPIO_InitStructure;                //结构定义
        GPIO_InitStructure.Pin  = GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
        GPIO_InitStructure.Mode = GPIO_OUT_PP;                //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
        GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);        //初始化
}



void        UART_config(void)
{
        COMx_InitDefine                COMx_InitStructure;                                        //结构定义
        COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;                //模式,       UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
        COMx_InitStructure.UART_BRT_Use   = BRT_Timer2;                        //使用波特率,   BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
        COMx_InitStructure.UART_BaudRate  = 19200ul;                        //波特率, 一般 110 ~ 115200
        COMx_InitStructure.UART_RxEnable  = ENABLE;                                //接收允许,   ENABLE或DISABLE
        COMx_InitStructure.BaudRateDouble = DISABLE;                        //波特率加倍, ENABLE或DISABLE
        COMx_InitStructure.UART_Interrupt = ENABLE;                                //中断允许,   ENABLE或DISABLE
        COMx_InitStructure.UART_Polity    = PolityLow;                        //中断优先级, PolityLow,PolityHigh
        COMx_InitStructure.UART_P_SW      = UART1_SW_P16_P17;        //切换端口
        COMx_InitStructure.UART_RXD_TXD_Short = DISABLE;                //内部短路RXD与TXD, 做中继, ENABLE,DISABLE
        USART_Configuration(USART1, &COMx_InitStructure);                //初始化串口1 USART1,USART2
        //PrintString1("STC15F2K60S2 UART1 Test Prgramme!\r\n");        //SUART1发送一个字符串
}

void send(void)
{     
        key2=1;
              delay_ms(200);
       SBUF=0x01;
       while(TI==0)
         {
           ;
         }
       TI=0;
       key2=0;
      delay_ms(200);
        key2=1;
       if(data1!=0x01)
         {
           SBUF=0x0f;
            while(TI==0)
            {
                ;
            }
            TI=0;
         }
       else{
            SBUF=0x09;
            while(TI==0)
            {
                ;
            }
            TI=0;

           }
}
/**********************************************/
void main(void)
{
        u8        i;
  u16 data1;
        u8 data2=0;

  timet0();
        UART_config();
        GPIO_config();
        EA = 1;

        while (1)
        {
                    if(key2==1)
              send();
        delay_ms(200);
                 
        }
}



51hei图片_20220808161406.jpg (61.39 KB, 下载次数: 17)

51hei图片_20220808161406.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2022-8-9 06:48 | 只看该作者
STC15W408AS哪来的串口3?

评分

参与人数 1黑币 +15 收起 理由
wpppmlah + 15 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:752974 发表于 2022-8-9 09:59 | 只看该作者
485和UART没有太大的区别,使用485主要注意两点,一是485是单双工,注意收发数据是分时进行的,二是硬件上的收发控制,也就是图中的TNOW信号,高电平发送,低电平接收。
回复

使用道具 举报

地板
ID:123289 发表于 2022-8-9 10:02 | 只看该作者
记住永远的法则:要控制什么,就必须先了解什么!!!
先读通芯片手册。
回复

使用道具 举报

5#
ID:155507 发表于 2022-8-9 10:55 | 只看该作者
可以在STC15W401AS系列 串口1在多个口之间切换






  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15F4K60S4 系列 定时器1用作串口1的波特率发生器举例------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966-------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* --- Web: www.GXWMCU.com --------------------------------------------*/
  9. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
  10. /* 如果要在文章中应用此代码,请在文章中注明使用了STC的资料及程序        */
  11. /*---------------------------------------------------------------------*/

  12. //本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
  13. //若无特别说明,工作频率一般为11.0592MHz


  14. #include "reg51.h"
  15. #include "intrins.h"

  16. typedef unsigned char BYTE;
  17. typedef unsigned int WORD;
  18. #define u16  unsigned int
  19. #define u8 unsigned char

  20. #define FOSC 11059200L          //系统频率
  21. #define BAUD 19200             //串口波特率

  22. #define NONE_PARITY     0       //无校验
  23. #define ODD_PARITY      1       //奇校验
  24. #define EVEN_PARITY     2       //偶校验
  25. #define MARK_PARITY     3       //标记校验
  26. #define SPACE_PARITY    4       //空白校验

  27. #define PARITYBIT NONE_PARITY   //定义校验位

  28. sfr P0M1 = 0x93;
  29. sfr P0M0 = 0x94;
  30. sfr P1M1 = 0x91;
  31. sfr P1M0 = 0x92;
  32. sfr P2M1 = 0x95;
  33. sfr P2M0 = 0x96;
  34. sfr P3M1 = 0xb1;
  35. sfr P3M0 = 0xb2;
  36. sfr P4M1 = 0xb3;
  37. sfr P4M0 = 0xb4;
  38. sfr P5M1 = 0xC9;
  39. sfr P5M0 = 0xCA;
  40. sfr P6M1 = 0xCB;
  41. sfr P6M0 = 0xCC;
  42. sfr P7M1 = 0xE1;
  43. sfr P7M0 = 0xE2;

  44. sfr AUXR  = 0x8e;               //辅助寄存器

  45. sfr P_SW1   = 0xA2;             //外设功能切换寄存器1

  46. #define S1_S0 0x40              //P_SW1.6
  47. #define S1_S1 0x80              //P_SW1.7

  48. u8        idata CRC[2];
  49. u8 data1,data2;
  50. u8 pf;
  51. u8 flag,flag1;
  52. sbit key2=P1^4;

  53. bit busy;

  54. void SendData(BYTE dat);
  55. void SendString(char *s);

  56. void send(void)
  57. {     
  58.         key2=1;
  59.         delay_ms(200);
  60.        SBUF=0x01;
  61.        while(TI==0)
  62.          {
  63.            ;
  64.          }
  65.        TI=0;
  66.        key2=0;
  67.       delay_ms(200);
  68.         key2=1;
  69.        if(data1!=0x01)
  70.          {
  71.            SBUF=0x0f;
  72.             while(TI==0)
  73.             {
  74.                 ;
  75.             }
  76.             TI=0;
  77.          }
  78.        else{
  79.             SBUF=0x09;
  80.             while(TI==0)
  81.             {
  82.                 ;
  83.             }
  84.             TI=0;

  85.            }
  86. }

  87. void main()
  88. {
  89.     u8        i;
  90.     u16 data1;
  91.     u8 data2=0;
  92.        
  93.     P0M0 = 0x00;
  94.     P0M1 = 0x00;
  95.     P1M0 = 0x00;
  96.     P1M1 = 0x00;
  97.     P2M0 = 0x00;
  98.     P2M1 = 0x00;
  99.     P3M0 = 0x00;
  100.     P3M1 = 0x00;
  101.     P4M0 = 0x00;
  102.     P4M1 = 0x00;
  103.     P5M0 = 0x00;
  104.     P5M1 = 0x00;
  105.     P6M0 = 0x00;
  106.     P6M1 = 0x00;
  107.     P7M0 = 0x00;
  108.     P7M1 = 0x00;

  109. //    ACC = P_SW1;
  110. //    ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
  111. //    P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
  112.    
  113. //  ACC = P_SW1;
  114. //  ACC &= ~(S1_S0 | S1_S1);    //S1_S0=1 S1_S1=0
  115. //  ACC |= S1_S0;               //(P3.6/RxD_2, P3.7/TxD_2)
  116. //  P_SW1 = ACC;  
  117. //  
  118.     ACC = P_SW1;
  119.     ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=1
  120.     ACC |= S1_S1;               //(P1.6/RxD_3, P1.7/TxD_3)
  121.     P_SW1 = ACC;  

  122. #if (PARITYBIT == NONE_PARITY)
  123.     SCON = 0x50;                //8位可变波特率
  124. #elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
  125.     SCON = 0xda;                //9位可变波特率,校验位初始为1
  126. #elif (PARITYBIT == SPACE_PARITY)
  127.     SCON = 0xd2;                //9位可变波特率,校验位初始为0
  128. #endif

  129.     AUXR = 0x40;                //定时器1为1T模式
  130.     TMOD = 0x00;                //定时器1为模式0(16位自动重载)
  131.     TL1 = (65536 - (FOSC/4/BAUD));   //设置波特率重装值
  132.     TH1 = (65536 - (FOSC/4/BAUD))>>8;
  133.     TR1 = 1;                    //定时器1开始启动
  134.     ES = 1;                     //使能串口中断
  135.     EA = 1;


  136.     while (1)
  137.     {
  138.         if(key2==1)
  139.         send();
  140.                 delay_ms(200);
  141.             
  142.     }

  143. }

  144. /*----------------------------
  145. UART 中断服务程序
  146. -----------------------------*/
  147. void Uart() interrupt 4
  148. {
  149.     if (RI)
  150.     {
  151.         RI = 0;                 //清除RI位
  152.         P0 = SBUF;              //P0显示串口数据
  153.         P22 = RB8;              //P2.2显示校验位
  154.     }
  155.     if (TI)
  156.     {
  157.         TI = 0;                 //清除TI位
  158.         busy = 0;               //清忙标志
  159.     }
  160. }

  161. /*----------------------------
  162. 发送串口数据
  163. ----------------------------*/
  164. void SendData(BYTE dat)
  165. {
  166.     while (busy);               //等待前面的数据发送完成
  167.     ACC = dat;                  //获取校验位P (PSW.0)
  168.     if (P)                      //根据P来设置校验位
  169.     {
  170. #if (PARITYBIT == ODD_PARITY)
  171.         TB8 = 0;                //设置校验位为0
  172. #elif (PARITYBIT == EVEN_PARITY)
  173.         TB8 = 1;                //设置校验位为1
  174. #endif
  175.     }
  176.     else
  177.     {
  178. #if (PARITYBIT == ODD_PARITY)
  179.         TB8 = 1;                //设置校验位为1
  180. #elif (PARITYBIT == EVEN_PARITY)
  181.         TB8 = 0;                //设置校验位为0
  182. #endif
  183.     }
  184.     busy = 1;
  185.     SBUF = ACC;                 //写数据到UART数据寄存器
  186. }

  187. /*----------------------------
  188. 发送字符串
  189. ----------------------------*/
  190. void SendString(char *s)
  191. {
  192.     while (*s)                  //检测字符串结束标志
  193.     {
  194.         SendData(*s++);         //发送当前字符
  195.     }
  196. }

复制代码





回复

使用道具 举报

6#
ID:155507 发表于 2022-8-9 12:48 | 只看该作者
STC15W408AS  有定时器0和定时器2  注意:无定时器1


  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15W408AS 系列 定时器2用作串口1的波特率发生器举例------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966-------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* --- Web: www.GXWMCU.com --------------------------------------------*/
  9. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
  10. /* 如果要在文章中应用此代码,请在文章中注明使用了STC的资料及程序        */
  11. /*---------------------------------------------------------------------*/

  12. //本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
  13. //若无特别说明,工作频率一般为11.0592MHz
  14. //STC15W408AS  有定时器0和定时器2 (注意:无定时器1, 有3路CCP可作3个定时器使用)

  15. #include "reg51.h"
  16. #include "intrins.h"

  17. typedef unsigned char BYTE;
  18. typedef unsigned int WORD;
  19. #define u16  unsigned int
  20. #define u8 unsigned char

  21. #define FOSC 11059200L          //系统频率
  22. #define BAUD 19200             //串口波特率

  23. #define MAIN_Fosc                11059200L        //定义主时钟
  24. #define Main_Fosc_KHZ        (MAIN_Fosc / 1000)

  25. #define NONE_PARITY     0       //无校验
  26. #define ODD_PARITY      1       //奇校验
  27. #define EVEN_PARITY     2       //偶校验
  28. #define MARK_PARITY     3       //标记校验
  29. #define SPACE_PARITY    4       //空白校验

  30. #define PARITYBIT NONE_PARITY   //定义校验位

  31. sfr P1M1 = 0x91;     //PxM1.n,PxM0.n     =00--->Standard, 为双向口模式     01--->push-pull 为推挽输出模式
  32. sfr P1M0 = 0x92;     //                  =10--->pure input,为高阻输入模式  11--->open drain 为开漏模式
  33. sfr P2M1 = 0x95;
  34. sfr P2M0 = 0x96;
  35. sfr P3M1 = 0xb1;
  36. sfr P3M0 = 0xb2;


  37. //sfr AUXR  = 0x8e;               //辅助寄存器
  38. sfr T2H   = 0xd6;               //定时器2高8位
  39. sfr T2L   = 0xd7;               //定时器2低8位

  40. sfr P_SW1   = 0xA2;             //外设功能切换寄存器1

  41. sfr AUXR      = 0x8e;               //辅助特殊功能寄存器
  42. sfr INT_CLKO  = 0x8f;               //唤醒和时钟输出功能寄存器

  43. sbit T0CLKO   = P3^5;               //定时器0的时钟输出脚

  44. #define F38_4KHz (65536-FOSC/2/38400)    //1T模式
  45. //#define F38_4KHz (65536-FOSC/2/12/38400) //12T模式

  46. #define S1_S0 0x40              //P_SW1.6
  47. #define S1_S1 0x80              //P_SW1.7

  48. u8 idata CRC[2];
  49. u8 data1,data2;
  50. u8 pf;
  51. u8 flag,flag1;
  52. sbit key2=P1^4;


  53. bit busy;

  54. void SendData(BYTE dat);
  55. void SendString(char *s);

  56. //========================================================================
  57. // 函数: void  delay_ms(unsigned char ms)
  58. // 描述: 延时函数。
  59. // 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
  60. // 返回: none.
  61. // 版本: VER1.0
  62. // 日期: 2013-4-1
  63. // 备注:
  64. //========================================================================
  65. void  delay_ms(unsigned char ms)
  66. {
  67.      unsigned int i;
  68.          do{
  69.               i = MAIN_Fosc / 13000;
  70.                   while(--i)        ;   //14T per loop
  71.      }while(--ms);
  72. }


  73. void send(void)
  74. {     
  75.     key2=1;
  76.     delay_ms(200);
  77.     SBUF=0x01;
  78.     while(TI==0)
  79.        {
  80.          ;
  81.        }
  82.     TI=0;
  83.     key2=0;
  84.     delay_ms(200);
  85.     key2=1;
  86.     if(data1!=0x01)
  87.       {
  88.         SBUF=0x0f;
  89.          while(TI==0)
  90.          {
  91.              ;
  92.          }
  93.          TI=0;
  94.       }
  95.     else{
  96.          SBUF=0x09;
  97.          while(TI==0)
  98.          {
  99.              ;
  100.          }
  101.          TI=0;

  102.     }
  103. }


  104. void main()
  105. {
  106.         u8        i;
  107.     u16 data1;
  108.     u8 data2=0;
  109.        
  110.     P1M0 = 0x00;
  111.     P1M1 = 0x00;
  112.     P2M0 = 0x00;
  113.     P2M1 = 0x00;
  114.     P3M0 = 0x10;    //P3^5为推挽输出模式
  115.     P3M1 = 0x00;
  116.      //特别注意:若要使用T0CLKO时钟输出功能,必须将P3.5口 设置为强推挽输出模式。
  117.          
  118.     AUXR |= 0x80;                   //定时器0为1T模式
  119. //  AUXR &= ~0x80;                  //定时器0为12T模式

  120.     TMOD = 0x00;                    //设置定时器为模式0(16位自动重装载)
  121.    
  122.     TMOD &= ~0x04;                  //C/T0=0, 对内部时钟进行时钟输出
  123. //  TMOD |= 0x04;                   //C/T0=1, 对T0引脚的外部时钟进行时钟输出

  124.     TL0 = F38_4KHz;                 //初始化计时值
  125.     TH0 = F38_4KHz >> 8;
  126.     TR0 = 1;
  127.     INT_CLKO = 0x01;                //使能定时器0的时钟输出功能

  128. //  ACC = P_SW1;
  129. //  ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
  130. //  P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
  131.    
  132. //  ACC = P_SW1;
  133. //  ACC &= ~(S1_S0 | S1_S1);    //S1_S0=1 S1_S1=0
  134. //  ACC |= S1_S0;               //(P3.6/RxD_2, P3.7/TxD_2)
  135. //  P_SW1 = ACC;  
  136. //  
  137.     ACC = P_SW1;
  138.     ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=1
  139.     ACC |= S1_S1;               //(P1.6/RxD_3, P1.7/TxD_3)
  140.     P_SW1 = ACC;   

  141. #if (PARITYBIT == NONE_PARITY)
  142.     SCON = 0x50;                //8位可变波特率
  143. #elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
  144.     SCON = 0xda;                //9位可变波特率,校验位初始为1
  145. #elif (PARITYBIT == SPACE_PARITY)
  146.     SCON = 0xd2;                //9位可变波特率,校验位初始为0
  147. #endif

  148.     T2L = (65536 - (FOSC/4/BAUD));   //设置波特率重装值
  149.     T2H = (65536 - (FOSC/4/BAUD))>>8;
  150.     AUXR = 0x14;                //T2为1T模式, 并启动定时器2
  151.     AUXR |= 0x01;               //选择定时器2为串口1的波特率发生器
  152.     ES = 1;                     //使能串口1中断
  153.     EA = 1;

  154.     while (1)
  155.     {
  156.         if(key2==1)
  157.         send();
  158.                 delay_ms(200);
  159.             
  160.     }
  161. }

  162. /*----------------------------
  163. UART 中断服务程序
  164. -----------------------------*/
  165. void Uart() interrupt 4
  166. {
  167.     if (RI)
  168.     {
  169.         RI = 0;                 //清除RI位
  170.         P0 = SBUF;              //P0显示串口数据
  171.         P22 = RB8;              //P2.2显示校验位
  172.     }
  173.     if (TI)
  174.     {
  175.         TI = 0;                 //清除TI位
  176.         busy = 0;               //清忙标志
  177.     }
  178. }

  179. /*----------------------------
  180. 发送串口数据
  181. ----------------------------*/
  182. void SendData(BYTE dat)
  183. {
  184.     while (busy);               //等待前面的数据发送完成
  185.     ACC = dat;                  //获取校验位P (PSW.0)
  186.     if (P)                      //根据P来设置校验位
  187.     {
  188. #if (PARITYBIT == ODD_PARITY)
  189.         TB8 = 0;                //设置校验位为0
  190. #elif (PARITYBIT == EVEN_PARITY)
  191.         TB8 = 1;                //设置校验位为1
  192. #endif
  193.     }
  194.     else
  195.     {
  196. #if (PARITYBIT == ODD_PARITY)
  197.         TB8 = 1;                //设置校验位为1
  198. #elif (PARITYBIT == EVEN_PARITY)
  199.         TB8 = 0;                //设置校验位为0
  200. #endif
  201.     }
  202.     busy = 1;
  203.     SBUF = ACC;                 //写数据到UART数据寄存器
  204. }

  205. /*----------------------------
  206. 发送字符串
  207. ----------------------------*/
  208. void SendString(char *s)
  209. {
  210.     while (*s)                  //检测字符串结束标志
  211.     {
  212.         SendData(*s++);         //发送当前字符
  213.     }
  214. }

复制代码
回复

使用道具 举报

7#
ID:331575 发表于 2022-8-9 13:11 | 只看该作者
wulin 发表于 2022-8-9 06:48
STC15W408AS哪来的串口3?

失误,串口1,只是将原来的P30-P31放到P17-P16上去
回复

使用道具 举报

8#
ID:47286 发表于 2022-8-9 14:48 | 只看该作者
485的A接上拉 B接下拉 电路图好象是反的

万用表量一下485第23脚 无发送时释放为低 低接收高发送

单片机的TTL通讯脚准双向即可
回复

使用道具 举报

9#
ID:47286 发表于 2022-8-9 14:50 | 只看该作者
更正 485的AB脚电阻我看错了
回复

使用道具 举报

10#
ID:331575 发表于 2022-8-9 15:44 | 只看该作者
wulin 发表于 2022-8-9 06:48
STC15W408AS哪来的串口3?

不好意思,打错了,是串口1,使用的P17-P16引脚
回复

使用道具 举报

11#
ID:128880 发表于 2022-8-9 17:11 | 只看该作者
15W408只有一组串口吧。
回复

使用道具 举报

12#
ID:331575 发表于 2022-8-11 09:43 | 只看该作者
dzbj 发表于 2022-8-9 14:48
485的A接上拉 B接下拉 电路图好象是反的

万用表量一下485第23脚 无发送时释放为低 低接收高发送

高低电平都有变化。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表