Главное


Листинг микроконтроллера

INCLUDE «C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\2313def.inc»

; спецификацией регистров ввода / выводаA_LINE = 0; линия PORTB, соответствующая сигналу A

DSEG0xc0:.BYTE 0x10; область стекаsp_ini = stack+0x0f

CSEG

;========= Таблица векторов прерываний0x00RESET; вектор прерывания RESET0x06OVR0_isr; вектор прерывания по переполнению Timer0

;========= Основная программа:r16, sp_ini; инициализация указателя стека

out SPL, r16PORTB, A_LINE; установить A в 1

ldi r16,0x07; разрешить PB.0, PB.1, PB.2 как выходыDDRB, r16r16; занести 0 в счетчик Timer0TCNT1, r16r16,0x02; частота синхронизации Timer0 = Fosc/8

out TCCR1, r16r16,0x02

out TIMSK, r16; разрешить прерывание по переполнению Timer0

; Прерывания разрешены, прием-передача разрешен. r16, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(0<<UDRIE) UCSRB, r16

; Формат кадра - 8 бит, пишем в регистр UCSRC, за это отвечает бит селектор

ldi r16, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)

out UCSRC, r16; глобальное разрешение прерыванийwait1; пустой цикл (ожидание прерывания и прием байтов с UART)

;========== Процедура отправки байта ==========_send: sbis UCSRA, UDRE ; Пропуск если нет флага готовности uart_snt ; ждем готовности - флага UDRE UDR, r0 ; шлем байт ; Возврат

;========== Ожидание байта ==========_rcv: SBIS UCSRA, RXC ; Ждем флага прихода байта uart_rcv ; вращаясь в цикле R16, UDR ; байт пришел - забираем.uart_counter; увеличиваем счётчик принятых байт ; Выходим. Результат в R16

;========== Обработчик прерывания по переполнению Timer0_isr:r16, SREG; сохранение в стеке регистра статуса

push r16PORTB, A_LINE

rjmp OVR0_m1

; 1-е состояние: A==1, B==0, C==0

cbi PORTB, A_LINE; A=0

pop r16; восстановление из стека регистра статусаSREG, r16; конец обработчика прерывания:_rcv; принимаем байтr16, 0x30; если: 0

breq next1;wait1: uart_rcvr16, 0x31; если: 1next2

brne wait1:uart_rcvr16, 0xC; если: C символ С-конец сообщения

breq send1wait1 wait1

; перенастройка частоты на 200, затем на 500 Гц

send1:r16; старт сигналTCNT1, r16

ldi r16,0xE8; частота синхронизации Timer1 1000 Гц

out TCCR1A, r16r16,0x03TCCR1B, r16VR0_isr; отправляем сигналwait1r16TCNT1, r16 r16,0xC8; частота синхронизации Timer1 200 Гц

out TCCR1A, r16

clr TCCR1B

rjmp VR0_isr; отправляем сигнал

clr r16

out TCNT1, r16

ldi r16,0x01; частота синхронизации Timer1 500 Гц

out TCCR1A, r16r16,0xF4TCCR1B, r16VR0_isr; отправляем сигналr16TCNT1, r16r16,0xD0; частота синхронизации Timer1 2000 ГцTCCR1A, r16r16,0x07TCCR1B, r16VR0_isr; отправляем сигналr16TCNT1, r16r16,0xD0; частота синхронизации Timer0 2000 ГцTCCR1A, r16r16,0x07TCCR1B, r16VR0_isr; отправляем сигнал

rjmp wait1

Перечень элементов

Наименование

Кол-во

Условное обозначение

Микросхемы

ATiny2313

1

D1

MAX232

1

D2

контроллер преобразование листинг двоичный

Перейти на страницу: 1 2

Другие статьи по теме

Диспетчерский контроль движения поездов
Диспетчерский контроль движения поездов позволяет диспетчеру видеть на световом табло участка в каждый момент времени местонахождение всех поездов и состояние входных, выходных светофоро ...

Интеллектуальная система управления Умный дом
Умный дом - это неотъемлемый атрибут любого современного жилища, в котором так много различных инженерных систем: освещение, силовая электрика, отопление, вентиляция, конди ...

Медианная фильтрация
медианный фильтрация цифровой сигнал Цифровая обработка сигналов нашла широкое применение в различных сферах деятельности: телевидении, радиолокации, связи, метеорологии, сейсмологии, ме ...

www.domen.ru © 2019