Хелпикс

Главная

Контакты

Случайная статья





3. Схемы. Приложение А. «Исходный код программы». Файлmain.cpp



3. Схемы

Блок-схема программы для задания №1 представлена на рис 3. 1.

 

Рисунок 1 – Блок-схема программы для задания №1 (часть 1)

 

        Рисунок 2- Блок-схема для задания №1 (часть2)

 

 

 

 

Рисунок 3- Блок-схема для задания №1 (часть 3)

 

 

Далее, исходя из поставленных условий и полученных сведений о работе, составим схему для отладки электрической цепи в программе «ProteusProfessional»

Рис. 3. 2 – Схема отладки программы, выполненная в программной среде«ProteusProfessional»

Приложение А

«Исходный код программы»

Файлmain. cpp

 

#include< avr/io. h>

#include< avr/interrupt. h>

 

inti =0;

intdivider=1; // 5 -> 10 Hz | 50 -> 1 Hz | 500 -> 0. 1 Hz (Длязадания 2)

 

voidport_init(void)

{

  // Задание 1, 5

  PORTD=0x00;

  DDRD=0xFF;

      

  // Задание 2 - 4

  PORTC=0x00;  

  DDRC=0xFF;   

      

  // Задание 5

  PORTA=0x01;

  DDRA=0x00;

}

 

// Инициализация таймера T0

voidtimer0_init(void)

{

  TCCR0=0x00;

  TCNT0=0x64;

  TCCR0=0x05;

}

 

// Инициализация таймера T2

voidtimer2_init(void)

{

  TCCR2=0x00;

  TCNT2=0x64;

  TCCR2=0x07;

}

 

// Обработчик прерывания для таймераT0

/*

ISR(TIMER0_OVF_vect)

{

  TCNT0 = 0x64;

  i++;

}

*/

 

// Обработчик прерывания для таймераT2

ISR(TIMER2_OVF_vect)

{

  TCNT2=0x64;

  i++;

}

 

voidinit_devices(void)

{

  cli();

      

  port_init();

      

// timer0_init();

 

timer2_init();

      

  // Timer 0

  // TIMSK = 0x01;

      

  // Timer 1

  TIMSK=0b01000000;

      

  sei();

}

 

intmain(void)

{

  init_devices();

 

  while(true)

  {

        // Задание 1

        // PORTD = i / divider;           

            

        // Задание 3, 6

        if(i> 0& & i< 50)

        {

               PORTC=0b00000001;                 

        }

        elseif(i> =50& & i< 100)

        {

               PORTC=0b00000010;

        }

        else

        {

               i=0;

        }

            

        // Задание 4

        /*if(i> 0 & & i< 50)

        {

               PORTC = 0b00000001;               

        }

        else if (i> = 50 & & i< 300)

        {

               PORTC = 0b00000010;

        }

        else

    {

               i = 0;

        }*/

            

        // Задание 5

        /*if(i< 5 * PORTA)

        {

               PORTD = 0b00000000;

        }

        else if(i> = 5 * PORTA & & i< 10 * PORTA )

        {

               PORTD = 0b00000001;

        }

        else

        {                  

               i = 0;

        }*/

  }

 

  return0;

}



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.