- #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();
- }
復制代碼
RS-485.rar
(1.77 KB, 下載次數(shù): 21)
2020-10-27 21:53 上傳
點擊文件名下載附件
ino工程文件和例程 下載積分: 黑幣 -5
|