必發集團棋牌现金开户: [活动专区] 【赛元95F】 + 7、SC95F8617 RS485通信测试

永利游戏开户直营
138|2
楼主
   
    测试RS485通信电路。

    一、硬件电路

   1.1、选择RS485通信通道


    1.2、RS485电路
   

   二、程序

   2.1、main.c
  1. #include "config.h"

  2. void main(void)
  3. {
  4.         uint i=0;
  5.         Init_led();
  6.         Init_key();
  7.         Init_uart(32, 9600);
  8.         Init_rs485();
  9.         uart_chl(0);   //RS485
  10.         while(1)
  11.         {
  12.         }
  13. }
复制代码


    2.2、uart.c
  1. #include "config.h"

  2. bit UartSendFlag = 0; //·¢?í?D??±ê????
  3. bit UartReceiveFlag = 0; //?óê??D??±ê????

  4. void uart_chl(uchar ul)
  5. {
  6.         switch (ul)
  7.   {
  8.           case 0:   //rs485
  9.                         UART_CHA=0;
  10.                   UART_CHB=0;
  11.                   break;
  12.           case 1:   //usb-ttl
  13.                         UART_CHA=1;
  14.                   UART_CHB=0;
  15.                   break;
  16.           default:
  17.                   break;
  18.   }
  19. }

  20. void Init_uart(uint Freq, unsigned long int baud)
  21. {
  22.         P2CON &= ~0x03;   
  23.         P2PH  |= 0x03;
  24.        
  25.         P5CON &= ~0x14  ; //0001 0100
  26.         P5CON |= 0x14  ;
  27.         P5PH  |= 0x14;
  28.        
  29.         SCON  |= 0X50;   
  30.         TMCON |= 0X02;
  31.         TH1 = (Freq*1000000/baud)>>8;          
  32.         TL1 = Freq*1000000/baud;
  33.         TR1 = 0;
  34.         ET1 = 0;
  35.         EUART = 1;      
  36.         EA = 1;
  37. }

  38. void uart_send_char(uchar ch)  
  39. {
  40.         SBUF=ch;
  41.         while(TI==0);
  42.         TI=0;
  43. }
  44. void uart_send_string(uchar *str)
  45. {
  46.         while(*str )
  47.         {
  48.                 uart_send_char(*str ++);
  49.         }
  50. }

  51. ////uartint
  52. void UartInt(void) interrupt 4
  53. {
  54. //        if(TI)
  55. //        {
  56. //                TI = 0;       
  57. //                UartSendFlag = 1;               
  58. //        }
  59.         if(RI)
  60.         {
  61.                 RI = 0;       
  62.                 //UartReceiveFlag = 1;
  63.                 rs485_send_char(SBUF);
  64.         }       
  65. }



  66. void Init_rs485(void)
  67. {
  68.         P5CON &= ~0x02 ;//0000 0010
  69.         P5CON |= 0x02 ;
  70.         RS485_RX();
  71. }

  72. void rs485_send_char(uchar dat)
  73. {
  74.         RS485_TX();
  75.         uart_send_char(dat);
  76.         RS485_RX();
  77. }

复制代码


    2.3、uart.h
  1. #ifndef __UART_H__
  2. #define __UART_H__

  3. sbit UART_CHA = P5^2;
  4. sbit UART_CHB = P5^4;

  5. sbit RS485_CH = P5^1;   //1--RX   0--TX

  6. #define RS485_RX() RS485_CH=1
  7. #define RS485_TX() RS485_CH=0

  8. void Init_uart(uint Freq, unsigned long int baud);
  9. void uart_chl(uchar ul);
  10. void uart_send_char(uchar ch);
  11. void uart_send_string(uchar *str);

  12. void Init_rs485(void);
  13. void rs485_send_char(uchar dat);

  14. #endif
复制代码


    三、运行

    3.1、连接图
   

    3.2、RS485收到一个字节,必發集團棋牌现金开户:再发送出去。
   
沙发
| 2020-3-24 10:09 | 只看该作者
感谢分享,奖励您100家园币。家园币可以兑换礼品或抽奖~
板凳
 楼主 | 2020-3-24 14:04 | 只看该作者
21ic小喇叭 发表于 2020-3-24 10:09
感谢分享,奖励您100家园币。家园币可以兑换礼品或抽奖~

谢谢
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

永利游戏开户直营 快速回复 返回顶部 返回列表
百人鬥牛 莊家 中东ag棋牌 188比分 澳门网上赌场欧博 顶级娱乐乐游棋牌
tyc286.com tyc625.com 20msc.com 琼粤真人棋牌 千亿KG开元棋牌
博天下棋牌官网 杏彩BG棋牌 酷彩IM棋牌 永利棋牌883 金顺彩票对战
澳门威尼斯人官网直营 通博棋牌883 澳门金沙网上娱乐网址登入 永昌棋牌官网 奔驰娱乐SW