[an error occurred while processing this directive]
|
OneWire.c #define DevicePort (PIND & (1 << PD2)) unsigned char OneWireReadBit (void) void OneWireWriteBit_1(void) void OneWireWriteBit_0(void) unsigned char OneWireReadByte (void) void OneWireWriteByte (unsigned char WriteByte) unsigned char OneWireCRC(unsigned char *code, unsigned char count) OneWire.h #ifndef __1_WIRE_H unsigned char OneWireReset (void); #endif delay.h #include #define CPU_CLK_Hz 8000000 #define delay_ns(x) __delay_cycles(x*CPU_CLK_kHz*0.000001) #endif
#include
#include
#include "OneWire.h"
#include "delay.h"
#define DevicePort2High (PORTD |= 1<
DevicePort2Low;
#define DeviceLineToHigh DevicePort2Output; \
DevicePort2High;
#define DeviceLineFree DevicePort2Input; \
DevicePort2High;
unsigned char OneWireReset (void)
{
unsigned char Ready = 1;
DeviceLineToLow;
delay_us(480);
DeviceLineFree;
delay_us(70);
if(DevicePort != 0)
{
Ready = 0;
}
delay_us(410);
return Ready;
}
{
unsigned char Bit = 0;
DeviceLineToLow;
delay_us(15);
DeviceLineFree;
delay_us(12);
if (DevicePort != 0)
{
Bit = 1;
}
delay_us(150);
return Bit;
}
{
DeviceLineToLow;
delay_us(6);
DeviceLineToHigh;
delay_us(64);
}
{
DeviceLineToLow;
delay_us(90);
DeviceLineToHigh;
delay_us(10);
}
{
unsigned char i, ReadByte = 0;
for (i = 0; i < 8; i++)
{
if (OneWireReadBit() != 0)
{
ReadByte |= 1 << i;
}
}
return ReadByte;
}
{
unsigned char i;
for (i = 0; i < 8; i++)
{
if (((WriteByte >> i) & 0x01) != 0)
{
OneWireWriteBit_1();
}
else
{
OneWireWriteBit_0();
}
}
}
{
unsigned char j, i, Data, tmp, CRC = 0;
for (j = 0; j < count; j++)
{
Data = code[j];
for (i = 0; i < 8; i++)
{
tmp = 1 & (Data ^ CRC);
CRC >>= 1;
Data >>= 1;
if ( 0 != tmp ) CRC ^= 0x8c;
}
}
return CRC;
}
#define __1_WIRE_H
unsigned char OneWireReadBit (void);
unsigned char OneWireReadByte (void);
void OneWireWriteBit_1(void);
void OneWireWriteBit_0(void);
void OneWireWriteByte (unsigned char WriteByte);
unsigned char OneWireCRC(unsigned char *code, unsigned char count);
#ifndef DELAY_H
#define DELAY_H
#define CPU_CLK_MHz 8
#define CPU_CLK_kHz (unsigned long)(CPU_CLK_Hz/1000)
#define delay_us(x) __delay_cycles(x*(CPU_CLK_Hz/1000000))
#define delay_ms(x) __delay_cycles(x*(CPU_CLK_Hz/1000))
#define delay_s(x) __delay_cycles(x*CPU_CLK_Hz)
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание