#include "m8515def.inc" 

.dseg
//Распределение ОЗУ: 

//1) Снизу идет область текстового буфера:
   AddData:       .byte 1	
   TxtData:   .byte 4 * 21 // организация - массив из 4-х байт

// Далее - глобальные переменные.
   PrintTimeout:  .byte 1// время ожидания след-его рисования в прерываниях таймра 2
   PrintTOCount:  .byte 1// счетчик ожидания рисования
   HalfSecTO   :  .byte 1// счетчик ожидания полусекунды ( для мигания букв) 

   FRQ :          .byte 2// частота генератора в формате:
                         // 0-3     - используется внешний генератор 20 мГц
						 // 4-259   - предделитель = 1. Общий коэффициент - 2 - 512
						 // 260-483 - предделитель 8,  OCR0 - 32-255. Общий коэффициент - 528  - 4096 
						 // 484-511 - предделитель 32, OCR0 - 64-255. Общий коэффициент - 4160 - 5888

   AmplifK:       .byte 1
   AmplifK1:      .byte 1

   ADCResArray:   .byte 4 // результаты АЦП
   DispPosL:      .byte 1 // младший байт измерения смщения (вернее, младшие 2 бита, смещенные влево)
   DebugData:     .byte 1   
   nn :   .byte 1 						  
// Далее - локальные переменные. Они перекрывают общую область

//-------------------------------- Локальные переменные --------------------
.overlap
   LocalVariables: .byte 4
   
   
// Далее - массива рабочих LCD данных. Именно она заполняется при загрузке данных из АЦП.
// Размер ее - до начала стека. Первые 122 байта - ACDBuffer.
.nooverlap

.overlap

.org LocalVariables
 
   CrLCDValue:     .byte 4 // массив прошлых подготовленных к выводу значений       

.nooverlap

//------------------------------------- ACD Buffer ---------------------------

   ADCBuffer: .byte 2 

   ACDInpBuffer: .byte 1// начиная с этой позиции грузим информацию с АЦП

//-------------------------------- CSEG ------------------------------------

.cseg

.def X0  =  R16
.def X1  =  R17
.def X2  =  R18

.def Y0  =  R24
.def Y1  =  R25
.def Y2   =  R0 // это младший разряд Y, получаемый при виртуальном умножении 

.def Res0  =  R19
.def Res1  =  R20
.def Res2  =  R21

.def Zero  =  r22



   

	
	; инициализация стека и статусного регистра
Again:  ldi     Zero, 0
    out     	0x3f, Zero   ; регистр статуса
  	ldi     	r28, 0x5f;
  	ldi     	r29, 0x02
  	out     	0x3e, r29
  	out     	0x3d, r28   ; вершина стека - на конец ОЗУ

	ldi  X0, 1
    rcall Dbg

	ldi  X1, 2
    rcall Dbg

	ldi  X2, 3
    rcall Dbg

	ldi  Y0, 4
    rcall Dbg

	ldi  Y1, 5
    rcall Dbg

	mov  Y2, X0
    rcall Dbg

	
	ldi  Res0, 6
    rcall Dbg

	ldi  Res1, 7
    rcall Dbg

	ldi  Res2, 8
    rcall Dbg

	ldi  Zero, 9
    rcall Dbg


	ldi  X0, 106 + $60
    rcall Dbg

	ldi r30, 0
    rcall Dbg

	clr r31
    rcall Dbg

Cikl:
    st   Z+, X0
    rcall Dbg
	dec X0
	brne Cikl

    inc r29
	sts          AddData, r29
	rcall Dbg
	rjmp Again

#include "Debug.asm"
