ну, это точно не придел, так как ПРИДЕЛ находится в церкви.Мурик писал(а):пример с 8 уровнями приоритетов и это не придел.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
ну, это точно не придел, так как ПРИДЕЛ находится в церкви.Мурик писал(а):пример с 8 уровнями приоритетов и это не придел.
Только у каждого потребителя своя часть 20% хотелок (одному одно надо, другому другое), которая может и меняться, потому чем больше заложено в одном типе чипа возможностей, тем он востребованней, значит дешевле и т.д. Теперь осталось как-то это все притянуть к сабжу топикаARV писал(а):80% потребителей необходимы только 20% предлагаемых продавцом возможностей.
Код: Выделить всё
bit I2C_Write_Byte(unsigned char Byte)
{
unsigned char i; // Variable to be used in for loop
for(i=0;i<8;i++) // Repeat for every bit
{
Set_SCK_Low; // Make SCK pin low
__delay_us(HalfBitDelay/2); // Data pin should change it's value,
// when it is confirm that SCK is low
if((Byte<<i)&0x80) // Place data bit value on SDA pin
Set_SDA_High; // If bit is high, make SDA high
else // Data is transferred MSB first
Set_SDA_Low; // If bit is low, make SDA low
__delay_us(HalfBitDelay/2); // Toggle SCK pin
Set_SCK_High; // So that slave can
__delay_us(HalfBitDelay); // latch data bit
}
// Get ACK from slave
Set_SCK_Low;
Set_SDA_High;
__delay_us(HalfBitDelay);
Set_SCK_High;
__delay_us(HalfBitDelay);
return SDA;
}проверяется i-й бит в Byte на равенство 1. лично я бы за такое канделябром бы...Shuspano писал(а):if((Byte<<i)&0x80)
функция возвращает значение бита SDA. и за такое бы тоже, но можно не канделябром, а так, ссаной тряпкой...Shuspano писал(а):return SDA;
с языка снялиIvanoff-iv писал(а):не i_тый, а (7-i)_тый
Код: Выделить всё
uint8_t SoftI2CWriteByte(uint8_t data)
{
uint8_t i;
for(i=0;i<8;i++)
{
SOFT_I2C_SCL_LOW;
Q_DEL;
if(data & 0x80)
SOFT_I2C_SDA_HIGH;
else
SOFT_I2C_SDA_LOW;
H_DEL;
SOFT_I2C_SCL_HIGH;
H_DEL;
while((SCLPIN & (1<<SCL))==0);
data=data<<1;
}
//The 9th clock (ACK Phase)
SOFT_I2C_SCL_LOW;
Q_DEL;
SOFT_I2C_SDA_HIGH;
H_DEL;
SOFT_I2C_SCL_HIGH;
H_DEL;
uint8_t ack=!(SDAPIN & (1<<SDA));
SOFT_I2C_SCL_LOW;
H_DEL;
return ack;
}Код: Выделить всё
for(uint8_t mask=0x80; mask; mask >>=1){
if (Data & mask) ...
}