6:// знаходимося на позиції В«хвилинаВ»
case 7:// знаходимося на позиції В«вихідВ»
};
// режими вводу: 3:// года4:// місяця
case 5:// чісла6:// дня неделі7:// часов8:// мінут10:// кількості дзвінків = 0x3B;
DotPlace = 0x00; = m/10; [0] = DigitL [md * 10]; [6] = DigitH [md * 10]; [1] = DigitL [d]; [7] = DigitH [d ];; 9:// режим установки дзвінків (m)
{1:// знаходимося на позиції В«кількість дзвінківВ»
case 2:// знаходимося на позиції В«час дзвінківВ»
// Знаходимося на позиції В«тривалість дзвінківВ»
case 4:// знаходимося на позиції В«вихідВ»
}; 11:// режим вибору дзвінка (m
{= 0x3B; = 0x00; = m/10; [0] = DigitL [md * 10]; [6] = DigitH
}
}; 12:// режим введення години обраного дзвінка
SymPlace = 0x3B; = 0x00; = m/10; [0] = DigitL [md * 10]; [6] = DigitH
break; 13:// режим введення хвилини обраного дзвінка
SymPlace = 0x3B; = 0x00; = m/10; [0] = DigitL [md * 10]; [6] = DigitH
break; 14:// режим установки тривалості дзвінків
SymPlace = 0x3B; = 0x00; = m/10; [0] = DigitL [md * 10]; [6] = DigitH
break;
}
}
// -
// робота з передачею даних між годинами PCF8583 і мікроконтролером
const char WRITE = 0b10100000;// адреса PCF8583 + біт запісіchar READ = 0b10100001;// адреса PCF8583 + біт читання
void start ()// початок передачі даних по інтерфейсу I2C
{& = ~ (1 <<7); & = ~ (1 <<6);// стан ліній SDA і SCL визначає ведучий (мк) = 1; = 1; = 0; = 0;
} stop ()// закінчення передачі даних по інтерфейсу I2C
{& = ~ (1 <<7); & = ~ (1 <<6);// стан ліній SDA і SCL визначає ведучий (мк) = 0; = 0; = 1; = 1;
} WriteByte (char c)// передача байта c по інтерфейсу I2C
{& = ~ (1 <<7); & = ~ (1 <<6);// стан ліній SDA і SCL визначає ведучий (мк)
for (i = 8; i> = 1; i-)// посилаємо 8 байтів даних
{= ((c & (1 <<(i-1)))>> (i-1));
RB7 = 1; = 0;
} & = ~ (1 <<7); | = (1 <<6);// тут рівень на SDA поределяет ведений (години) = 1; = 0; & = ~ (1 7); & = ~ (1 <<6);
} ReadByte ()// прийом байта по інтерфейсу I2C
{out = 0x00; & = ~ (1 <<7); | = (1 <<6);// лінію SDA визначає ведений, a SCL - провідний
for (i = 8; i> = 1; i-)
{= 1; + = (RB6 <<(i-1));
RB7 = 0;
} & = ~ (1 <<7); & = ~ (1 <<6);// стан ліній SDA і SCL визначає ведучий (мк)
RB6 = 1; = 1; = 0; out;
} Write (char Adress, char Data)// записуємо дані Data в клітинку годин з адресою Adress
{();// починаємо передачу по I2C (WRITE);// передаємо адресу годин + біт запису (Adress);// передаємо адресу годин + біт запису (Data);// записуючи потрібні дані ();//завершуємо прийом даних по I2C
} Read (char Adress)// зчитуємо дані з комірки годин з адресою Adress
{output;// змінна для виведення ();// по...