serialicon8051_next/lib/onewire/onewire.c

59 lines
987 B
C

//
// Created by 5ANK41 on 2024/11/28.
#include "onewire.h"
uchar OneWire_init(void) {
uchar i;
ONE_WIRE_P = 1;
ONE_WIRE_P = 0;
i = 247;
while (--i);
ONE_WIRE_P = 1;
i = 32;
while (--i);
uchar ack = ONE_WIRE_P;
i = 247;
while (--i);
return ack;
}
void OneWire_writeBit(uchar _bit) {
uchar i;
ONE_WIRE_P = 0;
i = 4;
while (--i);
ONE_WIRE_P = _bit;
i = 24;
while (--i);
ONE_WIRE_P = 1;
}
void OneWire_writeByte(uchar _byte) {
for (uchar i = 0; i < 8; i++) {
OneWire_writeBit(_byte & 0x01 << i);
}
}
uchar OneWire_readBit(void) {
uchar i, _bit;
ONE_WIRE_P = 0;
i = 2;
while (--i);
ONE_WIRE_P = 1;
i = 2;
while (--i);
_bit = ONE_WIRE_P;
i = 24;
while (--i);
return _bit;
}
uchar OneWire_readByte(void) {
uchar _byte = 0x00;
for (uchar i = 0; i < 8; i++) {
if (OneWire_readBit()) { _byte |= 0x01 << i; }
}
return _byte;
}