59 lines
987 B
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;
|
|
}
|