Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
26.01.2023
Размер:
1.98 Кб
Скачать
Выведите на экран динамическую индикацию двух шестнадцатеричных
чисел, набранных по 2 полубайтам порта А: младшая цифра числа набирается на
входах PA0...PA3, старшая - на PA4...PA7.
*/

#include <iom8535v.h>
#include <macros.h>
#include <stdint.h>

uint8_t H, L;

uint8_t	c[] =
{
    0x3F,	//	код	цифры	"0"
    0x06,	//	код	цифры	"1"
    0x5B,	//	код	цифры	"2"
    0x4F,	//	код	цифры	"3"
    0x66,	//	код	цифры	"4"
    0x6D,	//	код	цифры	"5"
    0xFD,	//	код	цифры	"6"
    0x07,	//	код	цифры	"7"
    0x7F,	//	код	цифры	"8"
    0x6F,	//	код	цифры	"9"
    0x77,	//	код	"A"
    0x7C,	//	код	"B"
    0x39,	//	код	"C"
    0x5E,	//	код	"D"
    0x79,	//	код	"E"
    0x71,	//	код	"F"
};
uint8_t	n;	//	номер индикатора

//	Обработка прерывания Таймера Т0
#pragma interrupt_handler indic:10
void indic(void)
{

    H = (PINA&0xf0)>>4;
    L = (PINA&0x0f);

    switch (n)
    {
        case 0:
            PORTC=c[H];
            PORTD=0x01;	//	индикатор	HG1
            break;
        case 1:
            PORTC=c[L];
            PORTD=0x02;	//	индикатор	HG2
            break;
    }
    n++;	//	смена номера индикатора
    n%=2;

}

void port_init(void)
{
    PORTA = 0xff; //Вкл подтягивающие резисторы на порту А
    DDRA = 0x00; //Порт А на вход

    DDRC =0xFF; // все биты порта C - на выход
    PORTC=0x00; // сегменты не светятся

    DDRD =0x07; // младшие три бита порта D - на выход
    PORTD=0x00; // индикаторы не выбраны
}

void init_devices(void)
{
    CLI();
    port_init();

    TIMSK=0x01; // разрешение прерывания по переполнению таймера 0

    TCCR0=0x04; // =0000 0100, коэффициент предделителя 256,
    // частота прерываний будет 8000000/256/256=122 Гц,
    // частота обновления числа (3 цифры): 122/3=40 Гц

    SEI();	// общее разрешение прерываний - установка бита 7 регистра SREG
}

//	 главная	функция
void main(void)
{

    init_devices();

    while (1)
    {
    }
}
Соседние файлы в папке LABA3