ісля чого кожне входження мітки замінюється на цю адресу), що значно прискорює процес написання програми [13].
Перед початком роботи необхідно зробити наступні дії:
У папці з програмою AVReAl створюється файл з розширенням ASM .
На початку рядка прописується шлях до файлу програми:
. include tn2313def.inc
- Потім позначається початок програми:
. cseg
. org 0
CSEG - позначає початок програмного сегмента ORG - задає початковий адресу. В даному випадку 0.
У програмованому контролері є 16 регістрів загального призначення. В даному випадку з них буде використано лише 9. Кожен регістр має свою назву: Temp, Temp1, Temp2 і т.д. Далі прописується кожен з них.
- Потім прописується алгоритм використання підпрограм:
Де: - безумовний преход до мітці.
Далі прописується алгоритм дій для кожного порту.
Порт 1 з міткою RT:
Цей алгоритм визначає наявність вхідного сигналу на антені. При його наявності значення порту преходит в позитивне (1).
rjmp_NOISE1 зраджує цикл до мітці NOISE [13].
Порт 2, 3 - двоциклову _NOISE і _ivn1:
Цей алгоритм відповідає за обмеження вхідного сигналу і чутливість детектра. Грубіша підстроювання здійснюється змінним резистором [13].
Порт 4, 5, 6 - трехціклічний _secinv; _secinv1; _ndtst:
Цей алгоритм відповідає за розподіл обраних частот по всьому спектру вихідного сигналу і урівняти його по амплітуді і частоті. _NOISE - Преход до алгоритму псевдовипадкової послідовності [13].
Порт 7, 8, 9 - трехціклічний _NOISE1 і похідні:
Цей процес включає в себе генерацію послідовності частот, шляхом використання детермінованого арифметичного алгоритму. Похідні від процесу є його формулами [13].
Загальний вигляд програмної структури (з виключеними абзацами).
. include tn2313def.inc
. cseg
. org 0
. def Temp=R20
. def _n1=R16
. def _n2=R17
. def _n3=R18
. def _n4=R19
. def _n5=R22
. def flg=R21
. def _L1=R23
. def _L2=R24
. def _L3=R25
. orgRTRTRTRT: Temp, low (RAMEND) SPL, Temp_n1,0xffDDRD, _n1
; out DDRB,_n1DDRD,6DDRB,0DDRB,1PORTB,0PORTB,1ACSR,ACDACSR,ACBGACSR,ACIE_L1,0x00_L2,0x00_L3,0x10:PORTB,0PORTB,1ACSR,ACO_NOISE1PC- 2
_ NOISE: _n4,6_ivn1_n4,7flg, 1 lt; lt; 0_n4,7flg, 1 lt; lt; 0_secinv
_ ivn1: _n4,7flg, 1 lt; lt; 0_n4,7flg, 1 lt; lt; 0
_ secinv:
; mov Temp, _n1
; cbr Temp, (1 lt; lt; 4) + (1 lt; lt; 5) + (1 lt; lt; 6) + (1 lt; lt; 7) _n1,0x00; Temp, 0x00_secinv1
; ldi _n1,0x01flg, 0_n1,1 lt; lt; 0flg, 0_n1,1 lt; lt; 0_ndtst
_ secinv1: flg, 0_n1,1 lt; lt; 0flg, 0_n1,1 lt; lt; 0
_ ndtst: _n1_n2_n3_n4portd, _n4_NOISE
_ NOISE1:
; cpi _n1,0x00; Temp, 0x00
; breq _secinv11
; cpi _n2,0x00; Temp, 0x00
; breq _secinv11_n4,6_ivn11_n4,7_n1,1 lt; lt; 0_n4,7_n1,1 lt; lt; 0_ndtst1
_ ivn11: _n4,7_n1,1 lt; lt; 0_n4,7_n1,1 lt; lt; 0_ndtst1
_ secinv11: _n4,6_ivn112_n4,7_n1,1 lt; lt; 0_n4,7_n1,1 lt; lt; 0_ndtst1
_ ivn112: _n4,7_n1,1 lt; lt; 0_n4,7_n1,1 lt; lt; 0_ndtst1
_ ndtst1:
; sbi PORTD, 6_n1_n2portd, _n4
; out portb, _n4
; cbi PORTD, 6PORTB, 0PORTB, 1ACSR, ACO_NOISE1_L1_NOISE1_L2_NOISE1_L3_NOISE1_L3,0x10PORTD, 6
rjmp dfg
Після написання алгоритму, в налаштуваннях програми слід виставити необхідні фьюз в меню FUSE raquo ;. Фьюз - гнучкі налаштування мікроконтролера, використовувані при прошивці і недоступні, згодом для зміни з його програми. У вікні налаштування залишаються відзначеними всі пу...