|
|

楼主 |
发表于 2019-7-15 17:03:50
|
显示全部楼层
- /*
- 【Arduino】66种传感器模块系列实验(59)
- 实验五十九: RS232转TTL2代串口模块刷机板(MAX3232芯片)
- 程序之二,接收串口数据
- rx = 6
- tx = 7
- */
- #include <ctype.h>
- #define bit9600Delay 100
- #define halfBit9600Delay 50
- #define bit4800Delay 188
- #define halfBit4800Delay 94
- byte rx = 6;
- byte tx = 7;
- byte SWval;
- void setup() {
- pinMode(rx,INPUT);
- pinMode(tx,OUTPUT);
- digitalWrite(tx,HIGH);
- delay(2);
- digitalWrite(13,HIGH);
- SWprint('o');
- SWprint('k');
- SWprint(10);
- }
- void SWprint(int data)
- {
- byte mask;
-
- digitalWrite(tx,LOW);
- delayMicroseconds(bit9600Delay);
- for (mask = 0x01; mask>0; mask <<= 1) {
- if (data & mask){
- digitalWrite(tx,HIGH);
- }
- else{
- digitalWrite(tx,LOW);
- }
- delayMicroseconds(bit9600Delay);
- }
-
- digitalWrite(tx, HIGH);
- delayMicroseconds(bit9600Delay);
- }
- int SWread()
- {
- byte val = 0;
- while (digitalRead(rx));
-
- if (digitalRead(rx) == LOW) {
- delayMicroseconds(halfBit9600Delay);
- for (int offset = 0; offset < 8; offset++) {
- delayMicroseconds(bit9600Delay);
- val |= digitalRead(rx) << offset;
- }
-
- delayMicroseconds(bit9600Delay);
- delayMicroseconds(bit9600Delay);
- return val;
- }
- }
- void loop()
- {
- SWval = SWread();
- SWprint(toupper(SWval));
- }
复制代码 |
|