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
Другие статьи по теме
Задачи и полномочия ФССП России Федеральная служба судебных приставов (ФССП России) - федеральный орган исполнительной власти, осуществляющий функции по обеспечению установленного порядка деятельности судов, исполнени ...
Цифровой аудио сигма-дельта модулятор 1. На уровне идеальных макромоделей интеграторов и компаратора проверить справедливость значений коэффициентов перед интеграторами, приведенных в статье. Проверкой является рабо ...
Блокинг-генераторы Блокинг-генератором называется однокаскадный усилитель, охваченный глубокой обратной связью с помощью трансформатора. Он может работать в автоколебательном, ждущем режиме и в режимах син ...