Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено . 10 декабря 2003 г. 15:39
В ответ на: А на основной цикл программы нельзя взглянуть? И по поводу векторов, как они объявлены? отправлено Bill 10 декабря 2003 г. 15:22

Основной цикл неинтересный - разрешение прерываний и программные задержки для переключения второго светодиода:
sei
;ser r19
clr r19
sts migalka1,r19
sts portf,r19
;out portb,r19
ser r26 ;\
infinite_loop:
clr r24
clr r25
ldi r23, $3d
decrement_64k:
sbiw r25:r24, 1 ;2
brne decrement_64k;2/1
dec r23 ;1
brne decrement_64k;2/1
com r26
;sts portf, r26
out portb, r26
rjmp infinite_loop ;/

Как вариант:
sei
dummy: rjmp dummy

Вектора тоже тривиальные:
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\m64def.inc"
.cseg ;CODE segment
.org 0
rjmp initialize ;rjmp reset
rjmp interrupt0
rjmp interrupt1
rjmp interrupt2
rjmp interrupt3
rjmp interrupt4
rjmp interrupt5
rjmp interrupt6
rjmp interrupt7
rjmp timer2_compare
rjmp timer2_overflow
rjmp timer1_capture
rjmp timer1_compare_a
rjmp timer1_compare_b
rjmp timer1_overflow
rjmp timer0_compare
rjmp timer0_overflow
rjmp spi_transfer
rjmp usart0_rx
rjmp usart0_data
rjmp usart0_tx
rjmp adc_complete
rjmp eeprom_ready
rjmp analog_comparator
rjmp timer1_compare_c
rjmp timer3_capture
rjmp timer3_compare_a
rjmp timer3_compare_b
rjmp timer3_compare_c
rjmp timer3_overflow
rjmp usart1_rx
rjmp usart1_data
rjmp usart1_tx
rjmp two_wire_serial
rjmp store_program

Каждая инструкция занимает ровно одно слово - никаких "нахлёстов".
Собственно прерывание по "Compare Timer Clear Match":
timer1_compare_a:
in tmr1, sreg
push tmr1
;in tmr1, portb ;\ flashing led
;neg tmr1
;out portb, tmr1 ;/
lds tmr1, migalka
com tmr1
sts migalka, tmr1
sts portf, tmr1
pop tmr1
out sreg, tmr1
reti

Стек инициализируется, остальное - по ссылке

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru