Шаблон программы для микроконтроллера ATtiny2313(A)

Шаблон имеет зависимость tn2313def.inc. В среде AtmelStudio подключается автоматически при выборе соответствующего чипа.

Замечание! Не обязательно определять все сегменты кода, даже программный сегмент, его компилятор принимает по умолчанию.

Замечание! Не обязательно описывать все точки входа прерываний, но их положение в адресном пространстве программы строго определено.

/*
 *	AppATtiny2313.asm
 *  Template app for ATtiny2313(A)
 *  Created: 28.06.2016 13:46:58
 *  Author: Дмитрий Самбулов
 *	E-mail: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
 *	WEB: www.gosmart.su
 */ 
.include "tn2313def.inc"

.eseg	; Сегмент EEPROM


.dseg	; Сегмент данных
.org SRAM_START	; Адрес начала SRAM
data:


.cseg	; Программный сегмент 
.org 0x00	; Адрес начала программной памяти
; Точки входа прерываний
rjmp RESET	; Переход на обработчик Reset
rjmp INT0_I	; Переход на обработчик внешнего прерывания INT0
rjmp INT1_I	; Переход на обработчик внешнего прерывания INT1
rjmp TIM1_CAPT	; Переход на обработчик прерывания захват по событию Timer1
rjmp TIM1_COMPA	; Переход на обработчик прерывания сравнения Timer1 канал A
rjmp TIM1_OVF	; Переход на обработчик прерывания переполнения таймера 1
rjmp TIM0_OVF	; Переход на обработчик прерывания переполнения таймера 0
rjmp USART_RXC	; Переход на обработчик прерывания USART прием завершен
rjmp USART_DRE	; Переход на обработчик прерывания USART, UDR пуст
rjmp USART_TXC	; Переход на обработчик прерывания USART передача завершена
rjmp ANA_COMP	; Переход на обработчик прерывания аналогового компаратора
rjmp PCINT	; Переход на обработчик внешнего прерывания PCINT
rjmp TIMER1_COMPB ; Переход на обработчик прерывания сравнения Timer1 канал B
rjmp TIMER0_COMPA ; Переход на обработчик прерывания сравнения Timer0 канал A
rjmp TIMER0_COMPB ; Переход на обработчик прерывания сравнения Timer0 канал B
rjmp USI_START	; Переход на обработчик прерывания начала передачи USI
rjmp USI_OVERFLOW ; Переход на обработчик переполнения USI
rjmp EE_READY	; Переход на обработчик прерывания EEPROM готова
rjmp WDT_OVERFLOW ; Переход на обработчик прерывания переполнения Watchdog
.org INT_VECTORS_SIZE	; Адрес конца векторов прерываний (в словах)
RESET:	; Точка входа программы
	ldi r16, LOW(RAMEND)	; Установка указателя стека на конец оперативной памяти
	out SPL, r16

	; TODO: Инициаализировать контроллер

	sei	; Разрешить прерывания
LOOP:	; Основный программый цикл

	; TODO: Описать логику устройства

rjmp LOOP

INT0_I:		; TODO: Обработчик внешнего прерывания INT0
INT1_I:		; TODO: Обработчик внешнего прерывания INT1
TIM1_CAPT:	; TODO: Обработчик прерывания захват по событию Timer1
TIM1_COMPA:	; TODO: Обработчик прерывания сравнения Timer1 канал A
TIM1_OVF:	; TODO: Обработчик прерывания переполнения таймера 1
TIM0_OVF:	; TODO: Обработчик прерывания переполнения таймера 0
USART_RXC:	; TODO: Обработчик прерывания USART прием завершен
USART_DRE:	; TODO: Обработчик прерывания USART, UDR пуст
USART_TXC:	; TODO: Обработчик прерывания USART передача завершена
ANA_COMP:	; TODO: Обработчик прерывания аналогового компаратора
PCINT:		; TODO: Обработчик внешнего прерывания PCINT
TIMER1_COMPB:	; TODO: Обработчик прерывания сравнения Timer1 канал B
TIMER0_COMPA:	; TODO: Обработчик прерывания сравнения Timer0 канал A
TIMER0_COMPB:	; TODO: Обработчик прерывания сравнения Timer0 канал B
USI_START:	; TODO: Обработчик прерывания начала передачи USI
USI_OVERFLOW:	; TODO: Обработчик прерывания переполнения USI
EE_READY:	; TODO: Обработчик прерывания EEPROM готова
WDT_OVERFLOW:	; TODO: Обработчик прерывания переполнения Watchdog
reti