Разделы сайта

Инструкция по эксплуатации

SymPlace=0x38;=0x00;[3]=LetterL[21];[9]=LetterH[21];[4]=LetterL[3];[10]=LetterH[3];[5]=LetterL[0];[11]=LetterH[0];;

case 2: // находимся на позиции «время звонков»

SymPlace=0x1F;=0x00;[0]=LetterL[20];[6]=LetterH[20];[1]=LetterL[5];[7]=LetterH[5]; [2]=LetterL[6];[8]=LetterH[6];[3]=LetterL[19];[9]=LetterH[19];[4]=LetterL[17];[10]=LetterH[17];;3: // находимся на позиции «длительность звонков»

SymPlace=0x38;=0x00;[3]=LetterL[15];[9]=LetterH[15];[4]=LetterL[21];[10]=LetterH[21];[5]=LetterL[4];[11]=LetterH[4];;

case 4: // находимся на позиции «выход»

SymPlace=0x3F;=0x00;[0]=LetterL[4];[6]=LetterH[4];[1]=LetterL[3];[7]=LetterH[3]; [2]=LetterL[13];[8]=LetterH[13];[3]=LetterL[12];[9]=LetterH[12];[4]=LetterL[11];[10]=LetterH[11];[5]=LetterL[17];[11]=LetterH[17];;

};11: // режим выбора звонка(m<CallCount+1)

{=0x3B;=0x00;=m/10;[0]=DigitL [m-d*10];[6]=DigitH [m-d*10]; [1]=DigitL[d];[7]=DigitH[d];[3]=LetterL[8];[9]=LetterH[8];[4]=LetterL[17];[10]=LetterH[17];[5]=LetterL[16];[11]=LetterH[16];

}

{=0x3F;=0x00;[0]=LetterL[4];[6]=LetterH[4];[1]=LetterL[3];[7]=LetterH[3]; [2]=LetterL[13];[8]=LetterH[13];[3]=LetterL[12];[9]=LetterH[12];[4]=LetterL[11];[10]=LetterH[11];[5]=LetterL[17];[11]=LetterH[17];

};12: // режим ввода часа выбранного звонка

SymPlace=0x3B;=0x00;=m/10;[0]=DigitL [m-d*10];[6]=DigitH [m-d*10]; [1]=DigitL[d];[7]=DigitH[d];[3]=LetterL[7];[9]=LetterH[7];[4]=LetterL[1];[10]=LetterH[1];[5]=LetterL[9];[11]=LetterH[9];

break;13: // режим ввода минуты выбранного звонка

SymPlace=0x3B;=0x00;=m/10;[0]=DigitL [m-d*10];[6]=DigitH [m-d*10]; [1]=DigitL[d];[7]=DigitH[d];[3]=LetterL[8];[9]=LetterH[8];[4]=LetterL[10];[10]=LetterH[10];[5]=LetterL[5];[11]=LetterH[5];

break;14: // режим установки длительности звонков

SymPlace=0x3B;=0x00;=m/10;[0]=DigitL [m-d*10];[6]=DigitH [m-d*10]; [1]=DigitL[d];[7]=DigitH[d];[3]=LetterL[15];[9]=LetterH[15];[4]=LetterL[21];[10]=LetterH[21];[5]=LetterL[4];[11]=LetterH[4];

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; // переменная для вывода(); // начинаем передачу по I2C(WRITE); // передаем адрес часов + бит записи(Adress); // передаем адрес нужной ячейки(); // рестарт протокола I2C(READ); // передаем адрес часов + бит чтения=ReadByte(); // считываем ячейку(); // завершаем прием данных по I2Coutput;

}

// полная копия функции Write, но для обработчика прерываний

// пришлось сделать такую копию, так как в ином случае возникает необъяснимая ошибка

// которая не происходит, если эту функцию использовать под разными именами в main() и interrupt()W (char Adress, char Data) // записываем данные Data в ячейку часов с адресом Adress

{(); // начинаем передачу по I2C(WRITE); // передаем адрес часов + бит записи(Adress); // передаем адрес часов + бит записи(Data); // записывем нужные данные(); // завершаем прием данных по I2C

Перейти на страницу: 1 2 3 4 5

Интересное из раздела

Расчет многослойных просветляющих и отражающих покрытий
Для заданной марки оптического материала произвести расчёт однослойного, двухслойного, трёхслойного и многослойного просветляющего покрытия с мин ...

Исследование и расчет двухполюсников и четырехполюсников
В соответствии с заданием сопротивления ДП, входящих в исследуемый ЧП, имеют следующий вид, Ом: Z1(p) = , (1.1) Z2(p) = , ...

Программное обеспечение для предварительных испытаний манипулятора грунтозаборного комплекса космического аппарата Фобос-грунт
Важным этапом отработки агрегатов и устройств КА является процесс их испытаний. Современные испытания немыслимы без автоматизации испытаний, наряду с исполь ...