Перейти к содержанию
    

Честно говоря, не знаю. 🙂 Примерно такая должна быть картинка.

Собственно, с помощью программы и хочу определить какие сегменты засветятся. Затем хочу определить какие сегменты засветятся от com2, com3 и com4. Полученные результы нужно будет записать в какую-нибудь таблицу. Ну а после уже можно будет попробовать циферки повыводить на экран.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, Pjatruha said:

Честно говоря, не знаю. 🙂 Примерно такая должна быть картинка.

Собственно, с помощью программы и хочу определить какие сегменты засветятся. Затем хочу определить какие сегменты засветятся от com2, com3 и com4. Полученные результы нужно будет записать в какую-нибудь таблицу. Ну а после уже можно будет попробовать циферки повыводить на экран.

у меня к графику тогда вопрос: зачем / почему там две одинаковые части? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем понял вопрос. Про какие части спрашиваете?

На рисунке я попытался изобразить предполагаемые осциллограммы на каждой ножке ЖКИ с учетом выше поставленной задачи. На каждой осциллограмме изображено по 2 периода(мне так проще было понять).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 minutes ago, Pjatruha said:

Не совсем понял вопрос. Про какие части спрашиваете?

 

1-6.png.57c8294e06d80a67a6efb9f0c452835c.png

чем часть "1" отличается от части "2"? 

Обычно в документации так изображают варианты "сегмент включен" / "сегмент отключен", но при этом части 1 и 2  обычно отличаются :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, izerg сказал:

чем часть "1" отличается от части "2"?

Ни чем. Это 2 одинаковых периода. Рисунок нужно читать сверху вниз. Временная шкала на всех осциллограммах одинаковая. Расположена на оси абсцисс. К сожалению я ее сразу не обозначил. Каждая смена состояния это 1 миллисекунда.

12.09.23 1.jpg

12.09.23 2.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Написал программу. Работоспособность пока не проверял(нет времени собрать схему).

Пока на обзор выкладываю код программы.

Спойлер
#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;
         }
  } 
}

 

 

Изменено пользователем Pjatruha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ох, сколько букв! Ну что ж, с почином! 🙂 В первый раз всегда выходит такими портянками и топорно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такие неизменяемые вещи, как:

  PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен
   PC_CR2_bit.C25 = 0; // Прерывая запрещены

 

PC_CR2_bit.C26 = 0; // Cкорость переключения 2МГц

не должны повторяться многократно, если они не изменяются. Достаточно описать их один раз в отдельной функции, обычно называемой xxx_Init(), где xxx - название модуля, например GPIO_Init(); Сокращается число строк текста и экономятся такты работы микроконтроллера. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, EdgeAligned сказал:

экономятся такты работы микроконтроллера.

О как! Я об этом и не думал... Спасибо за подсказку. Буду иметь ввиду.

Для начала попробую с таким кодом запустить ЖКИ, а потом буду оптимизировать. Если индикатор заведется 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 18.09.2023 в 10:17, Pjatruha сказал:

Написал программу.

Спаял схему и залил программу в МК. Вроде работает. 🙂

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

За настойчивость - АЙ, МОДОЦЦА!!!
А за резльтат: сегменты от подложек разделены? Как было - один электрод в противофазе с остальными (отличные фотки, кстати), так и осталось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, Obam сказал:

Как было - один электрод в противофазе с остальными (отличные фотки, кстати), так и осталось.

Все правильно. Задачи были разные. В тот раз, мне необходимо было определить выводы сегментов, а в этот раз - научиться подавать на соответствующие ножи ЖКИ сигнал определенной формы.

1 час назад, EdgeAligned сказал:

но сегменты включаются одновременно во всех разрядах.

Совершенно верно. Именно это и написано в программе. 🙂  Теперь я понимаю как это работает, и можно переходить выводу на ЖКИ чего-то осмысленного

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Pjatruha сказал:

Теперь я понимаю как это работает,

Мне кажется - это и есть главный результат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...