Добавил:
інстаграм _roman.kob, курсові роботи з тєрєхова в.в. для КІ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторна робота №2

.docx
Скачиваний:
9
Добавлен:
31.05.2020
Размер:
1.24 Mб
Скачать

Міністерство науки і освіти України

Технічний коледж національного університету

«Львівська політехніка»

ЗВІТ

з лабораторної роботи №2

Дослідження роботи мікроконтролера із використанням таймеру та

переривання за таймером

Виконав: студент групи 31-КІ

Мартинюк Р.

Прийняв:

Терехов В. В.

Львів - 2020

Мета: розробити пристрій який повинен забезпечувати рух вогню удвох різних напрямах. Перемикання напряму руху буде здійснюватися за допомогою перемикача S1. У відповідності із поставленим завданням пристрій повинен керувати вісьмома світлодіодами HL1-HL8. Приєднаємо вісім світлодіодів до порту D мікроконтролера через струмообмежувальні резистори по 220 Ом. Перемикач приєднаємо до молодшого розряду порту С.

З мал3:

#include <avr/io.h>

#include <util/delay.h>

int main(void)

{

unsigned char temp;

DDRC =0*00;

PORTC |= (1 << PC0):

DDRD = 0*FF;

PORTD = 0*00;

while(1)

{

if((PINC&(1 << PC0)) == 0)

{

temp == 0*00;

while(temp != 0)

{

PORTD = temp;

temp = temp >> 1;

_delay_ms(100);

}

}

else

{

temp == 0*01;

while (temp != 0)

{

PORTD = temp;

temp = temp << 1;

_delay_ms(100);

}

}

}

}

Код рис6:

#include <avr/io.h>

void waitl(void)

{

TCNT1 = 0;

while (TCNT1 < 700){};

}

int main(void)

{

unsigned char temp;

DDRC = 0*00;

PDRTC |= (1 << PC0);

DDRD = 0*FF;

PORTD = 0*00;

TCCR1A = 0*00;

TSSR1B = (1 << CS12)|(0 << CS11)|(1 << CS10);

while(1)

{

if((PINC&(1 << PC0)) == 0)

{

temp = 0*00;

while (temp |= 0)

{

PORTD = temp;

temp = temp >> 1;

waitl();

}

}

else

{

temp = 0*01;

while (temp |= 0)

{

PORTD = temp;

temp = temp >> 1;

waitl();

}

}

}

}

Код мал8:

#include <avr/io.h>

#include <avr/interrupt.h>

unsigned char temp;

IRSR (TIMER1_COMPA_vect)

{

if((PINC&(1 << PC0)) == 0))

{

temp = temp >>1;

if (temp == 0);

{

temp = 0b10000000;}

}

else

{

temp = temp << 1;

if (temp == 0)

{

temp = 0b00000001;}

}

PORTD = temp;

}

int main (void)

{

DDRS = 0*00

PDRTC |= (1 << PSB);

DDRD = 0*FF;

PORTD = 0*00;

TCCR1A = 0*00;

TCCR1B = (1 << CS12)|(0 << CS11)|(1 << CS10)|(1 << WGM12);

TCNT1 = 0*00;

OCR1A = 780;

TIMSK |= (1 << OCIE1A);

temp = 0b00000000;

sei();

while (1){};

}

Схема на основі генератора:

Висновок: В цій лабораторній роботі я навчився використовувати таймер для роботи з мікроконтролером, та збирати схему біжучих вогнів на основі генератора.

Соседние файлы в предмете Схемотехника ЭВМ