Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Variant_Suleymanov.docx
Скачиваний:
15
Добавлен:
06.03.2016
Размер:
198.16 Кб
Скачать
  1. Программа

.device ATmega64

.include "m64def.inc"

;переопределения регистров и бит

.def temp =r16

.def out_data =r17

.def deley =r18

.def rab =r23

.def adw0 =r4

.def adw1 =r5

.equ kdel1 =256 ; коэф. деления таймера Т0

.equ kdel2 =103 ; коэф. деления таймера Т1

.equ baud =233 ; задаем скорость обмена 2400 для частоты кварца 9МГц

.equ seg =PORTC

.equ TxD =PD1

;*****таблица векторов прерываний***********************************

.CSEG

.org $0000 ;начальный адpес пpогpаммы

rjmp Start ;пеpеход к основной части пpогpаммы

.org $0026

reti ;Регистр данных USART0 пуст

.org $0028

reti ;USART0, передача завершена

;***** Основная программа******************************************

Start:

ldi temp, High(RAMEND) ;инициализация стека

out SPH, temp ;

ldi temp, Low(RAMEND) ;

out SPL, temp ;

;настройка выходных линий разрядов и их выключение

ldi temp, 1<<TxD

out DDRD, temp ; настройка порта D на вывод

;устанавливаем скорость обмена

clr temp

sts UBRR0H,temp

ldi temp,Baud

out UBRR0L,temp

;Разрешение работы приемника и передатчика

ldi temp,(1<<RXEN0)|(1<<TXEN0)

out UCSR0B,temp

; Установка формата посылки: 8 бит данных, 1стоп-бита

ldi temp, (1<<UCSZ01)|(1<<UCSZ00)

sts UCSR0C,temp

clr out_data ;очистка регистра

sei ;разрешение всех прерываний

;Инициализация таймера Т1

ldi temp,0x05 ;установка коэффициента предварительного

out TCCR1B,temp ;делителя 1024 таймера Т1

;программа измерения

Haupt

ldi rab,0b10010000 ;

out MCUCR,rab ; «спящий режим» АЦП

sleep

in adw0,ADCL ;младший разряд байта результата АЦП

in adw1,ADCH ; старший разряд байта результата АЦП

out UDR,UCSRA ;передача данных через UART

rcall wait1 ;вызов подпрограммы задержки на 2с

rjmp Haupt

;Подпрограмма задержки

wait1:

push temp ;сохранение содержимого регистра temp

ldi temp,0 ;запись 0 в temp

out TCNT1H, temp ;запись 0 в старший регистр таймера T1

out TCNT1L, temp ; запись 0 в младший регистр таймера T1

ldi deley,0 ; запись 0 в deley

out TCNT0, deley ; запись 0 в регистр таймера T0

wt1:

in temp,TCTN1L ;чтение младшей части счетного регистра Т1

cpi temp,low(kdel2) ;сравнение с числом 67h

brlo wt1 ;переход если temp меньше чем kdel2

in temp,TCTN1H ; чтение старшей части счетного регистра Т1

cpi temp, high(kdel2) ; сравнение с числом 00h

brlo wt1 ; переход если temp меньше чем kdel2

wt2:

in deley,TCTN0 ; чтение счетного регистра Т0

cpi temp, kdel1 ; сравнение с числом 256

brlo wt2 ; переход если deley меньше чем kdel1

pop temp ;восстановление значения регистра temp

ret ;выход из подпрограммы

.EXIT

Заключение

В соответствии с техническим заданием был разработан измерительный комплекс температуры на базе микроконтроллера фирмы Atmel Mega8 с тактовой частотой 9МГц. Измерение освещенности происходит каждые 2 с. Измеренная информация по интерфейсу UART передается в ПК со скоростью 2400 бит/с. Для реализации данного измерительного прибора была написана программа на языке Ассемблер.

Список литературы

1. Трамперт В. Измерение, управлениеи регулирование с помощью AVR-микроконтроллеров.: Пер. с нем. – К.: «МК-Пресс», 2006. – 208с.

2. Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR. – СПб.: Наука и техника, 2008. – 544с.

3. Как превратить компьютер в измерительный комплекс. Пер. с фр./ П.Гёлль. – М.: «ДМК», 1999. – 144с.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]