Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
26.01.2023
Размер:
1.47 Кб
Скачать
// Динамическая индикация на 7-ми сегментных индикаторах
// с использованием таймера Т0
// Вывод сообщения "123"
// Входы: нет
// Выходы: PORTC - сегменты
//	PD0...PD2	-	HG1...HG3
#include <iom8535v.h>
#include <macros.h>
unsigned	char	c1=0x06,	//	код	цифры	"1"
c2=0x5B,	//	код	цифры	"2"
c3=0x4F;	//	код	цифры	"3"
unsigned	char	n;	//	номер индикатора
//	Обработка прерывания Таймера Т0
#pragma interrupt_handler indic:10
void indic(void)
{
    PORTD&=0xF8; // выключаем все индикаторы HG1-HG3
    switch (n)
    {
        case 0:
            PORTC=c1;	//	код "1"
            PORTD=0x01;	//	индикатор	HG1
            break;
        case 1:
            PORTC=c2;	//	код "2"
            PORTD=0x02;	//	индикатор	HG2
            break;
        case 2:
            PORTC=c3;	//	код "3"
            PORTD=0x04;	//	индикатор	HG3
    }
    n++;	//	смена номера индикатора
    n%=3;
}
//	 главная	функция
void main(void)
{
    DDRC =0xFF; // все биты порта C - на выход
    PORTC=0x00; // сегменты не светятся
    DDRD =0x07; // младшие три бита порта D - на выход
    PORTD=0x00; // индикаторы не выбраны
    TIMSK=0x01; // разрешение прерывания по переполнению таймера 0
    SEI();	// общее разрешение прерываний - установка бита 7 регистра SREG
    TCCR0=0x04; // =0000 0100, коэффициент предделителя 256,
    // частота прерываний будет 8000000/256/256=122 Гц,
    // частота обновления числа (3 цифры): 122/3=40 Гц
    for (;;);
}
Соседние файлы в папке LABA3