Pjatruha 10 12 сентября, 2023 Опубликовано 12 сентября, 2023 · Жалоба Честно говоря, не знаю. 🙂 Примерно такая должна быть картинка. Собственно, с помощью программы и хочу определить какие сегменты засветятся. Затем хочу определить какие сегменты засветятся от com2, com3 и com4. Полученные результы нужно будет записать в какую-нибудь таблицу. Ну а после уже можно будет попробовать циферки повыводить на экран. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 12 сентября, 2023 Опубликовано 12 сентября, 2023 · Жалоба 5 minutes ago, Pjatruha said: Честно говоря, не знаю. 🙂 Примерно такая должна быть картинка. Собственно, с помощью программы и хочу определить какие сегменты засветятся. Затем хочу определить какие сегменты засветятся от com2, com3 и com4. Полученные результы нужно будет записать в какую-нибудь таблицу. Ну а после уже можно будет попробовать циферки повыводить на экран. у меня к графику тогда вопрос: зачем / почему там две одинаковые части? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 12 сентября, 2023 Опубликовано 12 сентября, 2023 · Жалоба Не совсем понял вопрос. Про какие части спрашиваете? На рисунке я попытался изобразить предполагаемые осциллограммы на каждой ножке ЖКИ с учетом выше поставленной задачи. На каждой осциллограмме изображено по 2 периода(мне так проще было понять). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 12 сентября, 2023 Опубликовано 12 сентября, 2023 · Жалоба 28 minutes ago, Pjatruha said: Не совсем понял вопрос. Про какие части спрашиваете? чем часть "1" отличается от части "2"? Обычно в документации так изображают варианты "сегмент включен" / "сегмент отключен", но при этом части 1 и 2 обычно отличаются :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 12 сентября, 2023 Опубликовано 12 сентября, 2023 · Жалоба 6 минут назад, izerg сказал: чем часть "1" отличается от части "2"? Ни чем. Это 2 одинаковых периода. Рисунок нужно читать сверху вниз. Временная шкала на всех осциллограммах одинаковая. Расположена на оси абсцисс. К сожалению я ее сразу не обозначил. Каждая смена состояния это 1 миллисекунда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 18 сентября, 2023 Опубликовано 18 сентября, 2023 (изменено) · Жалоба Написал программу. Работоспособность пока не проверял(нет времени собрать схему). Пока на обзор выкладываю код программы. Спойлер #include "IOSTM8S103F3.h" int k=0; void interrupt_init(void); #pragma vector=TIM1_OVR_UIF_vector __interrupt void Pin6_interrupt(void) { k++; if (k == 9) { k = 1; } TIM1_SR1_bit.UIF = 0; //Cброс флага прерывания } void COM1_D12() { switch(k) { case 1: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 2: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 0; // Низкий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 3: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_CR2_bit.C25 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 4: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 0; // Низкий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_CR2_bit.C25 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 5: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 1; // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // push-pull PC_CR2_bit.C24 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 6: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 0; // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // push-pull PC_CR2_bit.C24 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 7: PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_CR2_bit.C23 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D8 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 8: PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 0; // Низкий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_CR2_bit.C23 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; } } void COM2_D11() { switch(k) { case 1: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 2: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 0; // Низкий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 3: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_CR2_bit.C25 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 4: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 0; // Низкий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_CR2_bit.C25 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 5: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 1; // Высокий уровень на выходе PC_CR1_bit.C14 = 1; // push-pull PC_CR2_bit.C24 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 6: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 0; // Низкий уровень на выходе PC_CR1_bit.C14 = 1; // push-pull PC_CR2_bit.C24 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 7: PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_CR2_bit.C23 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D8 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 8: PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 0; // Низкий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_CR2_bit.C23 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; } } void COM3_D10() { switch(k) { case 1: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 2: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 0; // Низкий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 3: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_CR2_bit.C25 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 4: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 0; // Низкий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_CR2_bit.C25 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 5: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 1; // Высокий уровень на выходе PC_CR1_bit.C14 = 1; // push-pull PC_CR2_bit.C24 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 6: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 0; // Низкий уровень на выходе PC_CR1_bit.C14 = 1; // push-pull PC_CR2_bit.C24 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 7: PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_CR2_bit.C23 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D8 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 8: PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 0; // Низкий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_CR2_bit.C23 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; } } void COM4_D9() { switch(k) { case 1: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 2: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 0; // Низкий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 3: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_CR2_bit.C25 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 4: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 0; // Низкий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_CR2_bit.C25 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 5: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 1; // Высокий уровень на выходе PC_CR1_bit.C14 = 1; // push-pull PC_CR2_bit.C24 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; case 6: PC_DDR_bit.DDR3 = 0; // Вход com D9 //PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 0; // Низкий уровень на выходе PC_CR1_bit.C14 = 1; // push-pull PC_CR2_bit.C24 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D6 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 7: PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_CR2_bit.C23 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 0; // seg D8 PA_ODR_bit.ODR2 = 0; // seg D7 PA_ODR_bit.ODR3 = 0; // seg D8 PC_ODR_bit.ODR7 = 0; // seg D13 PD_ODR_bit.ODR2 = 0; // seg D14 PD_ODR_bit.ODR6 = 0; // seg D5 break; case 8: PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 0; // Низкий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_CR2_bit.C23 = 0; // Cкорость переключения 2МГц PC_DDR_bit.DDR4 = 0; // Вход com D10 //PC_ODR_bit.ODR4 = 0 // Низкий уровень на выходе PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 //PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 //PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PA_ODR_bit.ODR1 = 1; // seg D6 PA_ODR_bit.ODR2 = 1; // seg D7 PA_ODR_bit.ODR3 = 1; // seg D8 PC_ODR_bit.ODR7 = 1; // seg D13 PD_ODR_bit.ODR2 = 1; // seg D14 PD_ODR_bit.ODR6 = 1; // seg D5 break; } } int main (void) { PD_DDR_bit.DDR3 = 0; // Вход PD_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PD_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR7 = 1; // Выход PC_CR1_bit.C17 = 1; // push-pull PC_CR2_bit.C27 = 0; // Cкорость переключения 2МГц PD_DDR_bit.DDR2 = 1; PD_CR1_bit.C12 = 1; PD_CR2_bit.C22 = 0; PD_DDR_bit.DDR6 = 1; PD_CR1_bit.C16 = 1; PD_CR2_bit.C26 = 0; PA_DDR_bit.DDR1 = 1; PA_CR1_bit.C11 = 1; PA_CR2_bit.C21 = 0; PA_DDR_bit.DDR2 = 1; PA_CR1_bit.C12 = 1; PA_CR2_bit.C22 = 0; PA_DDR_bit.DDR3 = 1; PA_CR1_bit.C13 = 1; PA_CR2_bit.C23 = 0; PB_DDR_bit.DDR5 = 1; // Настройка 5-го бита порта B на вывод. PB_CR1_bit.C15 = 1; // Переключение порта в режим push-pull. PB_CR2_bit.C25 = 0; // Cкорость переключения до 2 МГц //Частота переполнений = 2000000Гц / 4 / 500 = 1000 Гц(1 мс) TIM1_PSCRH = 0x00;//записываем 2 старших байта числа 3(4-1) в hex формате в регистр предделителя TIM1_PSCRL = 0x03;//записываем 2 младших байта числа 3(4-1)в hex формате в регистр предделителя TIM1_ARRH = 0x01; //записываем 2 старших байта числа 500 в hex формате в регистр автоперезагруски TIM1_ARRL = 0xF4; //записываем 2 младших байта числа 500 в hex формате в регистр автоперезагруски TIM1_CR1_bit.DIR = 0; // Cчет вверх TIM1_CR1_bit.URS = 1; //Прерывание только по переполнению счетчика TIM1_EGR_bit.UG = 1; //Вызываем Update Event для загрузки предделителя TIM1_IER_bit.UIE = 1; //Разрешаем прерывание TIM1_CR1_bit.CEN = 1; //Запускаем таймер asm("rim"); int n = 1, i=0, j=0; while(1) { if (i > 0) { i--; } if (PD_IDR_bit.IDR3!=1 & i == 0) { if (j == 0 ) { j = 1; i = 200; } } if (PD_IDR_bit.IDR3!=0 & j == 1) { if (i == 0) { i = 200; j = 0; n++; } } switch(n) { case 1: COM1_D12(); PB_ODR_bit.ODR5 = 0; // Загорание светодиода. break; case 2: COM2_D11(); PB_ODR_bit.ODR5 = 1; // Гашение светодиода. break; case 3: COM3_D10(); PB_ODR_bit.ODR5 = 0; // Загорание светодиода. break; case 4: COM4_D9(); PB_ODR_bit.ODR5 = 1; // Гашение светодиода. break; default: n=1; break; } } } Изменено 18 сентября, 2023 пользователем Pjatruha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 70 18 сентября, 2023 Опубликовано 18 сентября, 2023 · Жалоба Ох, сколько букв! Ну что ж, с почином! 🙂 В первый раз всегда выходит такими портянками и топорно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 70 18 сентября, 2023 Опубликовано 18 сентября, 2023 · Жалоба Такие неизменяемые вещи, как: PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц не должны повторяться многократно, если они не изменяются. Достаточно описать их один раз в отдельной функции, обычно называемой xxx_Init(), где xxx - название модуля, например GPIO_Init(); Сокращается число строк текста и экономятся такты работы микроконтроллера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 18 сентября, 2023 Опубликовано 18 сентября, 2023 · Жалоба 7 минут назад, EdgeAligned сказал: экономятся такты работы микроконтроллера. О как! Я об этом и не думал... Спасибо за подсказку. Буду иметь ввиду. Для начала попробую с таким кодом запустить ЖКИ, а потом буду оптимизировать. Если индикатор заведется 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 25 сентября, 2023 Опубликовано 25 сентября, 2023 · Жалоба В 18.09.2023 в 10:17, Pjatruha сказал: Написал программу. Спаял схему и залил программу в МК. Вроде работает. 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 34 25 сентября, 2023 Опубликовано 25 сентября, 2023 · Жалоба За настойчивость - АЙ, МОДОЦЦА!!! А за резльтат: сегменты от подложек разделены? Как было - один электрод в противофазе с остальными (отличные фотки, кстати), так и осталось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 70 26 сентября, 2023 Опубликовано 26 сентября, 2023 · Жалоба Всё хорошо, но сегменты включаются одновременно во всех разрядах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 26 сентября, 2023 Опубликовано 26 сентября, 2023 · Жалоба 6 часов назад, Obam сказал: Как было - один электрод в противофазе с остальными (отличные фотки, кстати), так и осталось. Все правильно. Задачи были разные. В тот раз, мне необходимо было определить выводы сегментов, а в этот раз - научиться подавать на соответствующие ножи ЖКИ сигнал определенной формы. 1 час назад, EdgeAligned сказал: но сегменты включаются одновременно во всех разрядах. Совершенно верно. Именно это и написано в программе. 🙂 Теперь я понимаю как это работает, и можно переходить выводу на ЖКИ чего-то осмысленного 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 128 26 сентября, 2023 Опубликовано 26 сентября, 2023 · Жалоба 1 час назад, Pjatruha сказал: Теперь я понимаю как это работает, Мне кажется - это и есть главный результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 26 сентября, 2023 Опубликовано 26 сентября, 2023 · Жалоба ждем следующую серию Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться