Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЦМПУ / Новая папка / Лаб8ЦМПУ

.docx
Скачиваний:
14
Добавлен:
16.04.2015
Размер:
20.61 Кб
Скачать

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

«Связь двух микроконтроллеров»

Цель работы: Ознакомиться с принципом связи двух микроконтроллеров ATmega128 и их совместная работа.

Таблица. Варианты заданий для самостоятельной работы

№ Вар.

Задание

5

Произвести передачу разности чисел $72 и $3F с помощью интерфейса УСАПП.

Данная программа реализует связь 2 МК Atmega128 через УСАПП. Итогом нашей программы является передача символов из одного МК в другой. Сначала активируем Watchdog. Затем активируем регистры УСАПП: TX/RCV. После этого устанавливаем задержку при передаче символов. На осциллографе можно увидеть отображение символом через сигналы.

Рис 8.12 Алгоритм основной программы

Рис 8.13 Алгоритм подпрограммы delay

Листинг проектного файла для передающего МК

; ************************************************************

; PROJECT:

; AUTHOR:

; ************************************************************

; Micro + software running

; ------------------------------------------------------------

.MICRO "ATmega128"

.PROGRAM "pere.asm"

.TARGET "pere.hex"

.TRACE ;

.CLOCK 1.8432meg

X1 TTY(9600 8) PE0 EXT_RX ;

Xlink1 EXTIN(1) EXT_RX ;

Xlink2 EXTOUT PE1 ;

.plot v(PE0) v(PE1) v(EXT_RX)

Листинг проектного файла №8 для принимающего МК

; ************************************************************

; PROJECT:

; AUTHOR:

; ************************************************************

; Micro + software running

; ------------------------------------------------------------

.MICRO "ATmega128"

.PROGRAM "prim.asm"

.TARGET "prim.hex"

.TRACE ; Activate micro trace

; Following lines are optional; if not included

; exactly these values are taken by default

; ------------------------------------------------------------

.CLOCK 1.8432meg

Xlink2 EXTIN(1) PE0

Xlink1 EXTOUT PE1

.plot V(PE0) v(PE1)

Листинг программы для передающего и принимающего МК

; ******************************************************

; BASIC .ASM template file for AVR

; ******************************************************

.include "C:\VMLAB312\include\m128def.inc"

.def temp = r16

.def j = r17

.def k = r18

.def temp1 = r19

.def temp2 = r20

.def temp3 = r21

; ***********************************************

; Reset aand Interrupt vectors

; ***********************************************

.cseg

.org $0

rjmp start ; Reset handler

.org URXC0addr ; UART выполнение прерываний,

rjmp uart_rx

.org UDRE0addr ; UART Данные регистра, пустое прерывание

rjmp uart_em

.org UTXC0addr ; UART Передача выполненного прерывания

rjmp uart_tx

; ************************************************

; UART RX service: it echoes the character into TX

; ************************************************

uart_rx:

in temp, UDR0

out UDR0, temp

reti

uart_tx: ;UART Передача завершена

reti

uart_em: ;UART Пустые данные TX

reti

; ************************************************

; Main

; ************************************************

start:

ldi temp1, $72

ldi temp2, $3F

sub temp1, temp2

ldi temp, 0x08 ; Включение Watchdog

wdr

out WDTCR, temp ;

ldi temp, 11 ; Установить 9600 бод для 1.8MHz

out UBRR0L, temp

ldi temp, 0xF8 ; Чтобы активировать все прерывания и TX / RCV

out UCSR0B, temp

ldi temp,low(RAMEND)

out SPL,temp

ldi temp,high(RAMEND)

out SPH,temp

sei ; позволить прерывания

ldi temp,low(RAMEND)

out SPL,temp

ldi temp,high(RAMEND)

out SPH,temp

mov temp, temp1

; **************************************************

; Infinite loop, watchdog activation demonstrator

; **************************************************

forever:

ldi j, 5

loop1:

rcall delay

dec j ; Задержка

brne loop1

wdr ; Watchdog сброса, после долгого перерыва

rjmp forever

delay:

ldi k, 255

loop2:

dec k

brne loop2

ret

Соседние файлы в папке Новая папка