Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы МДК 02.01 МКС / Методичка МДК 02.01 МКС.doc
Скачиваний:
4
Добавлен:
18.11.2023
Размер:
658.43 Кб
Скачать
  1. В программном окне «Source Code» программы Proteus набрать следующую программу:

.device ATtiny2313

.def temp=r16

.cseg

.org 0

rjmp Init

Init:

ldi temp,low(RAMEND)

out SPL,temp

ldi temp,0b11111100

out DDRB,temp

clr temp ; обнуляет переменную temp

out PortB,temp ;команда отключает подтягивающие резисторы

Proga:

sbis ACSR,ACO ;если бит ACO=0, то установка LED

rjmp Reset

sbi PortB,2

rjmp Proga

Reset:

cbi PortB,2

rjmp Proga

  1. Произвести симуляцию программы и убедится в правильности работы программы/

Содержание отчета:

  1. Название и цель работы.

  2. Принципиальная схема устройства.

  3. Результаты моделирования.

  4. Выводы по лабораторной работе.

Лабораторная работа №7

ШИМ – широтно-импульсная модуляция

Цель работы: Исследование широтно-импульсной модуляции

Лабораторное задание

Разработать программу, обеспечивающую формирование широтно-импульсной модуляции

Порядок выполнения работы

  1. Для выполнения работы необходимо в среде автоматизированного проектирования Proteus собрать схему устройства в соответствии с рисунком 1.

Рисунок 1 – Схема устройства

  1. В программном окне «Source Code» программы Proteus набрать следующую программу:

.device ATtiny2313

.def temp=r16 ;назначение переменной temp РОН r16

.dseg

.cseg ;определяет начало сегмента программы

.org 0 ;начало первой строки программы

rjmp Reset ;относительный переход к метке

.org 0x0005

rjmp TIM1_OVF ;Timer1 Overflow Handler

Reset:

ldi temp,low(RAMEND);организация стека

out spl,temp;организация стека

ldi temp,0xff

out DDRB,temp

clr temp

out portB,temp

out DDRD,temp

ser temp

out portD,temp

ldi temp,(2<<COM1A0|2<<COM1B0|0<<WGM11|1<<WGM10)

out TCCR1A,temp

ldi temp,(0<<WGM13|1<<WGM12|1<<CS10)

out TCCR1B,temp

Proga:

CLI

ldi r18,0

out OCR1AH,r18

ldi temp,50

out OCR1AL,temp

sei

TIM1_OVF:

sbi portD,3

reti

  1. Произвести симуляцию программы и убедится в правильности работы программы.

  2. Изменить программный код для получения другой скважности импульсов.

Содержание отчета:

  1. Название и цель работы.

  2. Принципиальная схема устройства.

  3. Результаты моделирования.

  4. Выводы по лабораторной работе.

Лабораторная работа №8

Программирование SPI

Цель работы: Исследование интерфейса SPI

Лабораторное задание

Исследовать работу интерфейса SPI

Порядок выполнения работы

  1. Для выполнения работы необходимо в среде автоматизированного проектирования Proteus собрать схему устройства в соответствии с рисунком 1.

Рисунок 1 – Схема устройства

  1. Для микроконтроллера, работающего в режиме «мастера» задать файл из рабочей папки «SPI_MASTER».

  2. Для микроконтроллера, работающего в режиме «ведомого» задать файл из рабочей папки «SPI_SLAVE».

  3. Произвести симуляцию программы и убедится в правильности работы программы.

Содержание отчета:

  1. Название и цель работы.

  2. Принципиальная схема устройства.

  3. Результаты моделирования.

  4. Выводы по лабораторной работе.

Листинг программы для микроконтроллера работающего в режиме «мастер»

#include <mega328p.h>

#include <delay.h>

#include <spi.h>

void main(void)

{

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

PORTB=0x00;

DDRB=0x2C;

PORTC=0x00;

DDRC=0x00;

PORTD=0x00;

DDRD=0x00;

TCCR0A=0x00;

TCCR0B=0x00;

TCNT0=0x00;

OCR0A=0x00;

OCR0B=0x00;

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

ASSR=0x00;

TCCR2A=0x00;

TCCR2B=0x00;

TCNT2=0x00;

OCR2A=0x00;

OCR2B=0x00;

EICRA=0x00;

EIMSK=0x00;

PCICR=0x00;

TIMSK0=0x00;

TIMSK1=0x00;

TIMSK2=0x00;

UCSR0B=0x00;

ACSR=0x80;

ADCSRB=0x00;

DIDR1=0x00;

ADCSRA=0x00;

SPCR=0x54;

SPSR=0x00;

TWCR=0x00;

while (1)

{

PORTB.2 = 0;

spi ('1');

delay_ms(200);

spi('0');

delay_ms(200);

PORTB.2 = 1;

}

}

Листинг программы для микроконтроллер, работающего в режиме «ведомого»

#include <mega328p.h>

#include <stdio.h>

#include <spi.h>

interrupt [SPI_STC] void spi_isr(void)

{

unsigned char data;

data=SPDR;

if (data == '1') PORTC.0 = 1;

if (data == '0') PORTC.0 = 0;

}

void main(void)

{

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

PORTB=0x00;

DDRB=0x10;

PORTC=0x00;

DDRC=0b00000001;

PORTD=0x00;

DDRD=0x00;

TCCR0A=0x00;

TCCR0B=0x00;

TCNT0=0x00;

OCR0A=0x00;

OCR0B=0x00;

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

ASSR=0x00;

TCCR2A=0x00;

TCCR2B=0x00;

TCNT2=0x00;

OCR2A=0x00;

OCR2B=0x00;

EICRA=0x00;

EIMSK=0x00;

PCICR=0x00;

TIMSK0=0x00;

TIMSK1=0x00;

TIMSK2=0x00;

UCSR0B=0x00;

ACSR=0x80;

ADCSRB=0x00;

DIDR1=0x00;

ADCSRA=0x00;

SPCR=0x44;

SPSR=0x00;

TWCR=0x00;

while (1)

{

}

}

Соседние файлы в папке Лабы МДК 02.01 МКС