Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Отчёт по лабораторной работе по «Микроконтроллеры и МП в СУ»

Автор:   •  Январь 18, 2019  •  Лабораторная работа  •  1,086 Слов (5 Страниц)  •  498 Просмотры

Страница 1 из 5

Министерство науки и высшего образования Российской Федерации

Федеральное государственное автономное образовательное учреждение

высшего образования

«Южно-Уральский государственный университет

(Национальный исследовательский университет)»

Отчёт

по лабораторной работе №1

по дисциплине: «Микроконтроллеры и МП в СУ»

Выполнили:

Студенты группы МиЭт-598

______________Демина А.А.

___________Сальников А.С.

_____________Суворин А.В.

«___»________2019 г.

Проверил:

___________ Вставская Е.В.

«___»________2019 г.

Челябинск 2019

ЗНАКОМСТВО С ПОРТАМИ ВВОДА-ВЫВОДА

Цель работы:

Составить программы цифрового ввода-вывода на языке Си и проверить их работу на лабораторном стенде.

Задание 1. Наберите программу «Пример 1» и выполните все этапы составления

программы. Проверьте правильность исполнения программы на контроллере.

Листинг:

#include            // включение файлов для

#include      // микроконтроллера АТmega8535

void port_init(void)           //определение функции инициализации портов ввода/вывода

{

PORTA = 0xFF;

DDRA = 0x00;                // порт А работает на вход (DDRA=0000 0000)

PORTD = 0x00;              // запись в порт D нулевого значения

DDRD = 0xFF;               // порт D работает на выход (DDRD=1111 1111)

}

void init_devices(void)   // инициализация периферийных устройств

{

__disable_interrupt();    // запрет действия прерываний

port_init();                     // вызов функции инициализации портов

MCUCR = 0x00;

TIMSK = 0x00;            //  нет прерываний от таймера

__enable_interrupt();    // разрешение действия прерываний

}

void main(void)            // определение главной функции

{

init_devices();             // вызов функции

while(1)                      // создание бесконечного цикла работы

{

if((PINA&4)!=0)       // если 2 бит на входе порта А отличен от нуля (PINA=0000 0100)

PORTD=0xF0;          // то на выходе PORTD=llll 0000

else                            // иначе

PORTD=0x0F;          // PORTD=0000 1111

}

}

Схема:

[pic 1]

Задание 2.  Измените эту программу следующим образом: входной сигнал – PB0,

выходной порт – порт C. В исходном состоянии при PB0 = 0 на выходе порта C

включены два младших светодиода, при включении бита PB0 = 1 включаются два

старших разряда.

Листинг:

void port_init(void) {

  PORTB = 0xFF;

  DDRB = 0x00;

  PORTC = 0x03;

  DDRC = 0xFF;

}

void init_devices(void) {

  __disable_interrupt();

  port_init();

  MCUCR = 0x00;

  GICR = 0x00;

  TIMSK = 0x00;

  __enable_interrupt();

}

int main(){

  init_devices();

  while(1){

    if((PINB&1) != 0) {

      PORTC = 0xC0;

    }

    else {

      PORTC = 0x03;

    }

  }

}

Схема:

[pic 2]

Задание 3. В программе «Пример 2» уменьшите в 2 раза время задержки между

переключениями битов.

Листинг:

#include

#include

void port_init(void) {

  PORTB = 0xFF;

  DDRB = 0x00;

  PORTC = 0x03;

  DDRC = 0xFF;

}

void init_devices(void) {

  __disable_interrupt();

  port_init();

  MCUCR = 0x00;

  GICR = 0x00;

  TIMSK = 0x00;

  __enable_interrupt();

}

int main(){

  init_devices();

  while(1){

    if((PINB&1) != 0) {

      PORTC = 0xC0;

    }

    else {

      PORTC = 0x03;

    }

  }

}

Схема:

[pic 3]

Задание 4. Реализуйте «бегущий огонь с накоплением», а именно: вначале загорается бит PD0, затем к нему добавляется PD1 и т.д. до тех пор, пока не загорятся все светодиоды порта D, далее цикл повторяется.

Листинг:

#include

#include

void port_init(void)

{

  PORTD = 0x01;

  DDRD = 0xFF;

...

Скачать:   txt (8.7 Kb)   pdf (479.5 Kb)   docx (451.2 Kb)  
Продолжить читать еще 4 страниц(ы) »
Доступно только на Essays.club