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

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

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

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

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

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

Отчет

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

Бишкек 2020

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

мигало с частотой 2 Гц.

Код программы:

#define F_CPU 8000000L

#include <avr/io.h>

#include <avr/interrupt.h>

#include <util/delay.h>

unsigned char R1=1, R2=8, R3=3, R4=7;

unsigned char n_count=0;

void segchar (unsigned char seg)

{

switch(seg)

{

case 1: PORTC = 0b11111001; break;

case 2: PORTC = 0b10100100; break;

case 3: PORTC = 0b10110000; break;

case 4: PORTC = 0b10011001; break;

case 5: PORTC = 0b10010010; break;

case 6: PORTC = 0b10000010; break;

case 7: PORTC = 0b11111000; break;

case 8: PORTC = 0b10000000; break;

case 9: PORTC = 0b10010000; break;

case 0: PORTC = 0b11000000; break;

}

}

void timer_ini(void)

{

TCCR1B |= (1<<WGM12);

TIMSK |= (1<<OCIE1A);

OCR1AH = 0b00001111;

OCR1AL = 0b01000010;

TCCR1B |= (1<<CS11);

}

ISR (TIMER1_COMPA_vect)

{

if(n_count==0) {PORTD=0b00000001;segchar(R1);}

if(n_count==1) {PORTD=0b00000010;segchar(R2);}

if(n_count==2) {PORTD=0b00000100;segchar(R3);}

if(n_count==3) {PORTD=0b00001000;segchar(R4);}

if(n_count==4) {PORTD=0b00000000;_delay_ms(250);}

n_count++;

if (n_count>4)n_count=0;

}

int main(void)

{

timer_ini();

DDRC = 0xFF;

DDRD = 0b00001111;

sei();

while(1){

} }

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