|
|||
3. Схемы. Приложение А. «Исходный код программы». Файлmain.cpp ⇐ ПредыдущаяСтр 2 из 2 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; }
|
|||
|