Скачиваний:
2
Добавлен:
27.01.2022
Размер:
52.42 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ и НАУКИ

КЫРГЫЗСКОЙ РЕСПУБЛИКИ

КЫРГЫЗСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. И. РАЗЗАКОВА

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»

Отчет

По Микропроцессорные средства и системы

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

Бишкек 2019

Вариант 3

Вывести на семисегментный индикатор число 1857, чтобы при этом выводимое число мигало с частотой 2 Гц.

#define F_CPU 1000000UL

#include <avr/io.h>

#include <avr/interrupt.h>

#include <util/delay.h>

unsigned char Numeral[11]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0x00};

unsigned char Discharge[4] = {0,0,0,0};

ISR (TIMER1_COMPA_vect)

{

static unsigned char ID;

ID++;

switch (ID)

{

case 1:

PORTD = 0b00001110;

PORTC = Numeral[Discharge[0]];

break;

case 2:

PORTD = 0b00001101;

PORTC = Numeral[Discharge[1]];

break;

case 3:

PORTD = 0b00001011;

PORTC = Numeral[Discharge[2]];

break;

case 4:

PORTD = 0b00000111;

PORTC = Numeral[Discharge[3]];

ID = 0;

break;

}

}

int main(void)

{

DDRC = 0xff;

PORTD = 0x00;

DDRD = 0xff;

TCCR1B |= (1<<WGM12); // устанавливаем режим СТС (сброс по совпадению)

TIMSK |= (1<<OCIE1A); //устанавливаем бит разрешения прерывания 1ого счетчика по

совпадению с OCR1A(H и L)

OCR1AH = 0b00000011; //записываем в регистр число для сравнения

OCR1AL = 0b01000010;

TCCR1B |= (1<<CS11);//установим делитель.

asm("sei");

while (1)

{

asm("cli");

Discharge[3] = 1;

Discharge[2] = 8;

Discharge[1] = 5;

Discharge[0] = 7;

asm("sei");

_delay_ms(500);

asm("cli");

Discharge[3] = 11;

Discharge[2] = 11;

Discharge[1] = 11;

Discharge[0] = 11;

asm("sei");

_delay_ms(500);

}

}

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