標(biāo)題:
Arduino軟件模擬RS485通信,雙線,半雙工 源程序
[打印本頁(yè)]
作者:
LYC0512
時(shí)間:
2020-10-27 21:54
標(biāo)題:
Arduino軟件模擬RS485通信,雙線,半雙工 源程序
#include <Arduino.h>
static unsigned char D_0 = 2;
static unsigned char D_1 = 3;
void rs_485_all_pin_high()
{
digitalWrite(D_0,HIGH);
digitalWrite(D_1,HIGH);
}
void rs_485_all_pin_low()
{
digitalWrite(D_0,LOW);
digitalWrite(D_1,LOW);
}
void rs_485_all_pin_logic_1()
{
digitalWrite(D_0,LOW);
digitalWrite(D_1,HIGH);
}
void rs_485_all_pin_logic_0()
{
digitalWrite(D_0,HIGH);
digitalWrite(D_1,LOW);
}
unsigned char rs_485_read_pin()
{
unsigned char temp_rs_485_read_pin_value = digitalRead(D_0);
return ((temp_rs_485_read_pin_value << 1) + digitalRead(D_1));
}
unsigned char rs_485_read_bit()
{
unsigned char temp_from_485_read_pin_value = rs_485_read_pin();
if(temp_from_485_read_pin_value == 0)// 0-0
{
return 2;
}
if(temp_from_485_read_pin_value == 1)//0-1
{
return 1;
}
if(temp_from_485_read_pin_value == 3)//1-1
{
return 3;
}
if(temp_from_485_read_pin_value == 2)//1-0
{
return 0;
}
}
void rs_485_write(unsigned char rs_485_write_value)
{
unsigned char i = 0,time_write_delay = 80;
rs_485_all_pin_high();
delayMicroseconds(time_write_delay);
for(;i < 8; i++)
{
unsigned char temp_rs_485_write_value = (rs_485_write_value & 128);
if(temp_rs_485_write_value)
{
rs_485_all_pin_logic_1();
}
else if(temp_rs_485_write_value == 0)
{
rs_485_all_pin_logic_0();
}
rs_485_write_value = rs_485_write_value << 1;
delayMicroseconds(time_write_delay);
}
rs_485_all_pin_low();
}
unsigned char rs_485_read(unsigned int delay_time_485)
{
unsigned char i=0,temp_read_value = 0;
delayMicroseconds(110);
for(;i<8;i++)
{
temp_read_value = ((temp_read_value << 1) + rs_485_read_bit());
delayMicroseconds(delay_time_485);
}
return temp_read_value;
}
unsigned char rs_485_test()
{
if(rs_485_read_pin() == 0)
{
return 1;
}
else
{
return 0;
}
}
void rs_485_init()
{
pinMode(D_0,INPUT);
pinMode(D_1,INPUT);
rs_485_all_pin_low();
}
復(fù)制代碼
RS-485.rar
(1.77 KB, 下載次數(shù): 21)
2020-10-27 21:53 上傳
點(diǎn)擊文件名下載附件
ino工程文件和例程
下載積分: 黑幣 -5
作者:
bynaruto
時(shí)間:
2021-6-14 18:34
how can i apply in my code void main.... how to send the message
thanks in advance
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1