|
@@ -1,21 +1,21 @@
|
|
|
-; Автор: shilow@ukr.net
|
|
|
-; Дата: июнь 2015
|
|
|
-; Название: avm
|
|
|
-; Версия: 4
|
|
|
-; Имя файла: avm.asm, avm.spl7, avm.lay6
|
|
|
-; Для AVR: ATtiny24A
|
|
|
-; Тактовая частота: 8MHz, внутренний RC-генератор
|
|
|
-; Выполняемые функции: Автомобильный вольтемтр
|
|
|
-; см. ReadMe.txt
|
|
|
+; Автор: shilow@ukr.net
|
|
|
+; Дата: июнь 2015
|
|
|
+; Название: avm
|
|
|
+; Версия: 4
|
|
|
+; �мя файла: avm.asm, avm.spl7, avm.lay6
|
|
|
+; Для AVR: ATtiny24A
|
|
|
+; Тактовая частота: 8MHz, внутренний RC-генератор
|
|
|
+; Выполняемые функции: Автомобильный вольтемтр
|
|
|
+; СЃРј. ReadMe.txt
|
|
|
|
|
|
;******************************
|
|
|
-; инклуды
|
|
|
+; инклуды
|
|
|
.nolist
|
|
|
.include "tn24Adef.inc"
|
|
|
.list
|
|
|
|
|
|
;******************************
|
|
|
-; опредления
|
|
|
+; опредления
|
|
|
.def job0 = r0
|
|
|
.def job1 = r1
|
|
|
.def job2 = r2
|
|
@@ -30,12 +30,12 @@
|
|
|
; r11
|
|
|
; r12
|
|
|
; r13
|
|
|
-.def msrL = r14 ; результат измерений
|
|
|
+.def msrL = r14 ; результат измерений
|
|
|
.def msrH = r15
|
|
|
-.def temp = r16 ; рабочая переменная
|
|
|
+.def temp = r16 ; рабочая переменная
|
|
|
.def tmp1 = r17
|
|
|
-.def cnt1 = r18 ; рабочий счётчик, счётчик циклов АЦП
|
|
|
-.def cnt2 = r19 ; счётчик циклов Led_Out
|
|
|
+.def cnt1 = r18 ; рабочий счётчик, счётчик циклов АЦП
|
|
|
+.def cnt2 = r19 ; счётчик циклов Led_Out
|
|
|
.def LEDN = r20
|
|
|
; r21
|
|
|
; r22
|
|
@@ -44,17 +44,17 @@
|
|
|
.def flags = r25
|
|
|
; r26 XL OUT_NIBBL
|
|
|
; r27 XH
|
|
|
-; r28 YL вывод на ндикатор
|
|
|
+; r28 YL вывод на ндикатор
|
|
|
; r29 YH
|
|
|
; r30 ZL OUT_NIBBL, BIN2BCD
|
|
|
; r31 ZH
|
|
|
;******************************
|
|
|
-; константы
|
|
|
+; константы
|
|
|
.equ AtBCD0 = 0 ;address of job0
|
|
|
.equ AtBCD2 = 2 ;address of job2
|
|
|
.equ AtLED1 = 4 ;address of LED1
|
|
|
-.equ MEASURE = 7 ; 7bit of flags -- пора мерять
|
|
|
-.equ NEED_DOT = 6 ; 6bit of flags -- нужна точка
|
|
|
+.equ MEASURE = 7 ; 7bit of flags -- пора мерять
|
|
|
+.equ NEED_DOT = 6 ; 6bit of flags -- нужна точка
|
|
|
.equ DISP_PORT = PORTA
|
|
|
.equ DISP_DDR = DDRA
|
|
|
.equ LA1 = 4
|
|
@@ -71,21 +71,21 @@
|
|
|
.equ T1DIVL = 0x8F
|
|
|
.equ T1DIVH = 0xFD ; 0x10000-8MHz/64/200Hz
|
|
|
;.equ T0DIV = 0x83 ; 0x100-8MHz/256/250Hz
|
|
|
-.equ VREF = 4980 ; опорное напряжение, миливольты
|
|
|
+.equ VREF = 4980 ; опорное напряжение, миливольты
|
|
|
.equ SPH = 0x3e
|
|
|
-.equ DOT_BIT = 5 ; bit5 -- точка
|
|
|
-.equ BuffShift = 4 ; сколько раз сдвинуть вправо сумму буфера для усреднения
|
|
|
+.equ DOT_BIT = 5 ; bit5 -- точка
|
|
|
+.equ BuffShift = 4 ; сколько раз сдвинуть вправо сумму буфера для усреднения
|
|
|
|
|
|
;******************************
|
|
|
-; макросы
|
|
|
-; сохраняем в стек SREG и R16
|
|
|
+; макросы
|
|
|
+; сохраняем в стек SREG и R16
|
|
|
.MACRO PUSHF
|
|
|
PUSH R16
|
|
|
IN R16,SREG
|
|
|
PUSH R16
|
|
|
.ENDM
|
|
|
|
|
|
-; восстанавливаем из стека SREG и R16
|
|
|
+; восстанавливаем из стека SREG и R16
|
|
|
.MACRO POPF
|
|
|
POP R16
|
|
|
OUT SREG,R16
|
|
@@ -93,24 +93,24 @@
|
|
|
.ENDM
|
|
|
|
|
|
;******************************
|
|
|
-; ячейки в СОЗУ
|
|
|
+; ячейки в СОЗУ
|
|
|
;.DSEG
|
|
|
;.ORG SRAM_START
|
|
|
-;Display: .byte 4 ; 4 байта для индикатора
|
|
|
+;Display: .byte 4 ; 4 байта для индикатора
|
|
|
;Buffer: .byte 2*BuffSize
|
|
|
|
|
|
;******************************
|
|
|
-; константы в EEPROM
|
|
|
+; константы в EEPROM
|
|
|
;.ESEG
|
|
|
;smpl1: .DW 0x0000 ; sample 1
|
|
|
;smpl2: .DB 0x05 ; sample 2
|
|
|
|
|
|
;******************************
|
|
|
-; память программ
|
|
|
+; память программ
|
|
|
.CSEG
|
|
|
.ORG 0
|
|
|
;******************************
|
|
|
-; Таблица векторов прерываний
|
|
|
+; Таблица векторов прерываний
|
|
|
rjmp RESET ; Reset Handler
|
|
|
reti;jmp INT0 ; IRQ0 Handler
|
|
|
reti;jmp PCINT0 ; PCINT0 Handler
|
|
@@ -130,18 +130,18 @@
|
|
|
; rjmp USI_OVF ; USI Overflow Handler
|
|
|
|
|
|
;******************************
|
|
|
-;;;;; Первичная инициализация
|
|
|
+;;;;; Первичная инициализация
|
|
|
RESET:
|
|
|
ldi temp,high(RAMEND); Main program start
|
|
|
out SPH,temp
|
|
|
ldi temp,low(RAMEND)
|
|
|
out SPL,temp; Set Stack Pointer to top of RAM
|
|
|
|
|
|
-;;; выкл. аналог, компаратор
|
|
|
+;;; выкл. аналог, компаратор
|
|
|
ldi temp,1<<ACD
|
|
|
out ACSR,temp
|
|
|
|
|
|
-;;; настроим АЦП. опора - Vcc, канал 1, 62.5 kHz
|
|
|
+;;; настроим АЦП. опора - Vcc, канал 1, 62.5 kHz
|
|
|
ldi temp,1<<MUX0
|
|
|
out ADMUX,temp
|
|
|
ldi temp,(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)
|
|
@@ -149,35 +149,35 @@ RESET:
|
|
|
ldi temp,(1<<ADC1D)
|
|
|
out DIDR0,temp
|
|
|
|
|
|
-;;; таймер0 интервалы в 4 мсек (250 Hz). прескалер = 256
|
|
|
+;;; таймер0 интервалы в 4 мсек (250 Hz). прескалер = 256
|
|
|
; ldi temp,(1<<CS02)
|
|
|
; out TCCR0B,temp
|
|
|
; ldi temp,T0DIV
|
|
|
-; out TCNT0,temp ; запустили таймер
|
|
|
-; прерывания от таймеров
|
|
|
+; out TCNT0,temp ; запустили таймер
|
|
|
+; прерывания от таймеров
|
|
|
; ldi temp,(1<<TOIE0)
|
|
|
-; out TIMSK0,temp ; разрешим прерывание по переполнению
|
|
|
+; out TIMSK0,temp ; разрешим прерывание по переполнению
|
|
|
|
|
|
-;; timer1 - частота 200 гц, при тактовой 8МГц, прескалер=64
|
|
|
+;; timer1 - частота 200 гц, при тактовой 8МГц, прескалер=64
|
|
|
ldi temp,(3<<CS10)
|
|
|
out TCCR1B,temp
|
|
|
ldi temp,T1DIVH
|
|
|
out TCNT1H,temp
|
|
|
ldi temp,T1DIVL
|
|
|
- out TCNT1L,temp ; запустили таймер 1
|
|
|
-; разрешаем прерывание от таймера
|
|
|
+ out TCNT1L,temp ; запустили таймер 1
|
|
|
+; разрешаем прерывание от таймера
|
|
|
ldi temp,1<<TOIE1
|
|
|
out TIMSK1,temp
|
|
|
|
|
|
;;; init
|
|
|
- ldi LEDN,FIRST_LED ; первый индикатор
|
|
|
+ ldi LEDN,FIRST_LED ; первый индикатор
|
|
|
ldi temp,IND_LA
|
|
|
out DISP_DDR,temp
|
|
|
out DISP_PORT,temp
|
|
|
ldi temp,(1<<SCK)|(1<<DATA)|(1<<LOCK)
|
|
|
out SER_DDR,temp
|
|
|
clr YH
|
|
|
- ldi YL,AtLED1 ; загружаем адрес 1-го индикатора
|
|
|
+ ldi YL,AtLED1 ; загружаем адрес 1-го индикатора
|
|
|
ldi temp,0x30
|
|
|
mov LED1,temp
|
|
|
mov LED2,temp
|
|
@@ -187,53 +187,53 @@ RESET:
|
|
|
;;; Enable interrupts
|
|
|
sei
|
|
|
;******************************
|
|
|
-;;;;; Основная программа
|
|
|
+;;;;; Основная программа
|
|
|
BEGIN:
|
|
|
|
|
|
-;;; Подготовимся к новым измерениям
|
|
|
+;;; Подготовимся к новым измерениям
|
|
|
clr msrL
|
|
|
- clr msrH ; очистили хранилище результата
|
|
|
- ldi cnt1,64 ; загрузили счётчик измерений
|
|
|
- sbi ADCSRA,ADIE ; разрешаем прерывания от АЦП
|
|
|
+ clr msrH ; очистили хранилище результата
|
|
|
+ ldi cnt1,64 ; загрузили счётчик измерений
|
|
|
+ sbi ADCSRA,ADIE ; разрешаем прерывания от АЦП
|
|
|
|
|
|
-;;; Конец цикла, в начале :-)
|
|
|
+;;; Конец цикла, в начале :-)
|
|
|
MAIN_END:
|
|
|
rcall WAIT_IRQ
|
|
|
|
|
|
-;;; Если при выходе из прерывания стоит флаг -- запускаем измерения
|
|
|
- sbrs flags,MEASURE ; пора мерять?
|
|
|
- rjmp CHECK_MEASURE ; если нет -- идём дальше
|
|
|
- cbr flags,1<<MEASURE ; сбросим флаг
|
|
|
+;;; Если при выходе из прерывания стоит флаг -- запускаем измерения
|
|
|
+ sbrs flags,MEASURE ; пора мерять?
|
|
|
+ rjmp CHECK_MEASURE ; если нет -- идём дальше
|
|
|
+ cbr flags,1<<MEASURE ; сбросим флаг
|
|
|
|
|
|
-;;; запускаем новый цикл измерений
|
|
|
+;;; запускаем новый цикл измерений
|
|
|
START_MEASURE:
|
|
|
- sbi ADCSRA,ADSC ; запуск нов. преобразования
|
|
|
- rjmp MAIN_END ; и спим дальше
|
|
|
+ sbi ADCSRA,ADSC ; запуск нов. преобразования
|
|
|
+ rjmp MAIN_END ; и спим дальше
|
|
|
|
|
|
-;;; Если нет флага, значит прерывание было от АЦП
|
|
|
+;;; Если нет флага, значит прерывание было от АЦП
|
|
|
CHECK_MEASURE:
|
|
|
- tst cnt1 ; закончили измерения?
|
|
|
- brne MAIN_END ; если нет -- спим дальше
|
|
|
+ tst cnt1 ; закончили измерения?
|
|
|
+ brne MAIN_END ; если нет -- спим дальше
|
|
|
|
|
|
-;; закончили, отключим прерывания
|
|
|
+;; закончили, отключим прерывания
|
|
|
cbi ADCSRA,ADIE
|
|
|
|
|
|
-;;; Здесь происходят все преобразования
|
|
|
+;;; Здесь происходят все преобразования
|
|
|
ML1:
|
|
|
-;; у нас 64 измерения, оверсэмплинг. пока делим на 8
|
|
|
+;; у нас 64 измерения, оверсэмплинг. пока делим на 8
|
|
|
lsr msrH
|
|
|
ror msrL
|
|
|
lsr msrH
|
|
|
ror msrL
|
|
|
lsr msrH
|
|
|
- ror msrL ; поделили результат на 2^3
|
|
|
+ ror msrL ; поделили результат на 2^3
|
|
|
|
|
|
-;; теперь нужно умножить на Vref и поделить на 8192 -- получим миливольты на входе АЦП
|
|
|
-;; а затем умножить на 4, чтобы получить напряжение на входе делителя.
|
|
|
-;; т.е. делим на 2048
|
|
|
+;; теперь нужно умножить на Vref и поделить на 8192 -- получим миливольты на входе АЦП
|
|
|
+;; а затем умножить на 4, чтобы получить напряжение на входе делителя.
|
|
|
+;; т.е. делим на 2048
|
|
|
ldi temp,low(VREF)
|
|
|
ldi tmp1,high(VREF)
|
|
|
- rcall MPY16U ; отбросили job0 == поделили на 256
|
|
|
+ rcall MPY16U ; отбросили job0 == поделили на 256
|
|
|
lsr job1
|
|
|
ror job0
|
|
|
lsr job1
|
|
@@ -241,80 +241,80 @@ ML1:
|
|
|
lsr job1
|
|
|
ror job0
|
|
|
|
|
|
-;; в реале нужно будет множить например на 400 и делить на 100 -- под реальный делитель.
|
|
|
-; тут можно добавить коррекцию усиления.
|
|
|
+;; в реале нужно будет множить например на 400 и делить на 100 -- под реальный делитель.
|
|
|
+; тут можно добавить коррекцию усиления.
|
|
|
|
|
|
-; сейчас текущий результат измерний в job1:job0. Перенесём в msr
|
|
|
+; сейчас текущий результат измерний в job1:job0. Перенесём в msr
|
|
|
mov msrH,job1
|
|
|
mov msrL,job0
|
|
|
-; наш результат, это по сути среднее за 64 измерения, в миливольтах, по входу.
|
|
|
+; наш результат, это по сути среднее за 64 измерения, в миливольтах, по входу.
|
|
|
|
|
|
-;;; преобразуем msr в десятичный вид и положим в буфер индикатора
|
|
|
+;;; преобразуем msr в десятичный вид и положим в буфер индикатора
|
|
|
rcall bin2BCD16
|
|
|
- ; 5 значащих цифр в job2:job1:job0
|
|
|
+ ; 5 значащих цифр в job2:job1:job0
|
|
|
ldi XL,AtLED1
|
|
|
clr XH
|
|
|
-;; первый, старший разряд -- десятки вольт, младший нибл job2
|
|
|
+;; первый, старший разряд -- десятки вольт, младший нибл job2
|
|
|
mov temp,job2
|
|
|
- ; проверим на ведущий 0
|
|
|
- andi temp,0x0F ; отсекаем ст ниббл
|
|
|
+ ; проверим на ведущий 0
|
|
|
+ andi temp,0x0F ; отсекаем ст ниббл
|
|
|
tst temp
|
|
|
brne MakeDigit3
|
|
|
- ldi temp,0xFF ; код пустого индикатора
|
|
|
+ ldi temp,0xFF ; код пустого индикатора
|
|
|
st X+,temp
|
|
|
rjmp MakeDigit2
|
|
|
MakeDigit3:
|
|
|
- rcall OUT_NIBBL ; ниббл 3, десятки
|
|
|
-;; второй разряд -- единицы вольт, старший нибл job1
|
|
|
+ rcall OUT_NIBBL ; ниббл 3, десятки
|
|
|
+;; второй разряд -- единицы вольт, старший нибл job1
|
|
|
MakeDigit2:
|
|
|
mov temp,job1
|
|
|
swap temp
|
|
|
sbr flags,1<<NEED_DOT
|
|
|
rcall OUT_NIBBL
|
|
|
cbr flags,1<<NEED_DOT
|
|
|
-;; третий разряд -- десятые вольта, младший нибл job1
|
|
|
+;; третий разряд -- десятые вольта, младший нибл job1
|
|
|
mov temp,job1
|
|
|
rcall OUT_NIBBL
|
|
|
-;; четвёртый разряд -- сотые вольта, старший нибл job0
|
|
|
+;; четвёртый разряд -- сотые вольта, старший нибл job0
|
|
|
mov temp,job0
|
|
|
swap temp
|
|
|
rcall OUT_NIBBL
|
|
|
|
|
|
-;;; и на новый виток
|
|
|
+;;; и на новый виток
|
|
|
rjmp BEGIN
|
|
|
|
|
|
|
|
|
;******************************
|
|
|
-;;;;; Подпрограммы
|
|
|
+;;;;; Подпрограммы
|
|
|
|
|
|
;******************************
|
|
|
-; делать нечего - поспим... ждём любое прерывание
|
|
|
+; делать нечего - поспим... ждём любое прерывание
|
|
|
WAIT_IRQ:
|
|
|
ldi temp,1<<SE
|
|
|
- out MCUCR,temp ; простой режим сна
|
|
|
- sleep ; спим.
|
|
|
+ out MCUCR,temp ; простой режим сна
|
|
|
+ sleep ; СЃРїРёРј.
|
|
|
clr temp
|
|
|
- out MCUCR,temp ; со сна
|
|
|
+ out MCUCR,temp ; СЃРѕ СЃРЅР°
|
|
|
ret
|
|
|
|
|
|
;******************************
|
|
|
-;** переводим младший ниббл temp в код для 7-сгм инд и кладём его в озу по адр X
|
|
|
+;** переводим младший ниббл temp в код для 7-сгм инд и кладём его в озу по адр X
|
|
|
OUT_NIBBL:
|
|
|
ldi ZL,low(LEDnd*2)
|
|
|
- ldi ZH,high(LEDnd*2); адрес кодов для индикатора
|
|
|
- andi temp,0x0F ; отсекаем ст ниббл. получаем смещение
|
|
|
+ ldi ZH,high(LEDnd*2); адрес кодов для индикатора
|
|
|
+ andi temp,0x0F ; отсекаем ст ниббл. получаем смещение
|
|
|
add ZL,temp
|
|
|
- adc ZH,XH ; добавили смещение
|
|
|
- lpm temp,Z ; прочитали код
|
|
|
- sbrc flags,NEED_DOT ; нужна точка?
|
|
|
- cbr temp,1<<DOT_BIT ; включаем точку
|
|
|
- st X+,temp ; записали код в позицию индикатора
|
|
|
+ adc ZH,XH ; добавили смещение
|
|
|
+ lpm temp,Z ; прочитали код
|
|
|
+ sbrc flags,NEED_DOT ; нужна точка?
|
|
|
+ cbr temp,1<<DOT_BIT ; включаем точку
|
|
|
+ st X+,temp ; записали код в позицию индикатора
|
|
|
ret
|
|
|
|
|
|
;******************************
|
|
|
-; перемножение двух 16-разрядных величин, результат 3 байта, рабочая
|
|
|
-; множимое msrH:msrL, множитель tmp1:temp, результат job2:job1:job0
|
|
|
-; использует cnt1
|
|
|
+; перемножение двух 16-разрядных величин, результат 3 байта, рабочая
|
|
|
+; множимое msrH:msrL, множитель tmp1:temp, результат job2:job1:job0
|
|
|
+; использует cnt1
|
|
|
MPY16U:
|
|
|
clr job2 ;clear 1 highest bytes of result
|
|
|
ldi cnt1,16 ;init loop counter
|
|
@@ -363,59 +363,59 @@ bBCDx_3:ld temp,-Z ;get (Z) with pre-decrement
|
|
|
|
|
|
|
|
|
;******************************
|
|
|
-;;;;; Обработчики прерываний
|
|
|
+;;;;; Обработчики прерываний
|
|
|
|
|
|
;******************************
|
|
|
; Timer1 Overflow Handler
|
|
|
TIM1_OVF:
|
|
|
-; выводим данные на 7-ми сегментные индикаторы
|
|
|
+; выводим данные на 7-ми сегментные индикаторы
|
|
|
PUSHF
|
|
|
|
|
|
ldi temp,T1DIVH
|
|
|
out TCNT1H,temp
|
|
|
ldi temp,T1DIVL
|
|
|
- out TCNT1L,temp ; перезапустили таймер 1
|
|
|
+ out TCNT1L,temp ; перезапустили таймер 1
|
|
|
|
|
|
;***************************
|
|
|
- ; вывод на индикатор очередной цифры
|
|
|
+ ; вывод на индикатор очередной цифры
|
|
|
in temp,DISP_PORT
|
|
|
- ori temp,IND_LA ; изменяем только нужные пины
|
|
|
- out DISP_PORT,temp ; погасили все индикаторы
|
|
|
- cbi SER_PORT,LOCK ; подгтовили защёлку
|
|
|
- ld temp,Y+ ; в темп - текущая цифра, адрес=+1
|
|
|
+ ori temp,IND_LA ; изменяем только нужные пины
|
|
|
+ out DISP_PORT,temp ; погасили все индикаторы
|
|
|
+ cbi SER_PORT,LOCK ; подгтовили защёлку
|
|
|
+ ld temp,Y+ ; в темп - текущая цифра, адрес=+1
|
|
|
|
|
|
-;;; выпихнем очередной байт в регистр
|
|
|
- ldi cnt2,8 ; счетчик бит
|
|
|
+;;; выпихнем очередной байт в регистр
|
|
|
+ ldi cnt2,8 ; счетчик бит
|
|
|
TLO1: cbi SER_PORT,SCK ; SCK=0
|
|
|
- lsl temp ; старший бит в перенос
|
|
|
- brcc TLO0 ; если в переносе 0 — перейти
|
|
|
- sbi SER_PORT,DATA ; выдали 1
|
|
|
+ lsl temp ; старший бит в перенос
|
|
|
+ brcc TLO0 ; если в переносе 0 — перейти
|
|
|
+ sbi SER_PORT,DATA ; выдали 1
|
|
|
rjmp TLOE
|
|
|
-TLO0: cbi SER_PORT,DATA ; выдали 0
|
|
|
-TLOE: sbi SER_PORT,SCK ; SCK=1, сдвиг данных
|
|
|
+TLO0: cbi SER_PORT,DATA ; выдали 0
|
|
|
+TLOE: sbi SER_PORT,SCK ; SCK=1, сдвиг данных
|
|
|
dec cnt2
|
|
|
brne TLO1
|
|
|
|
|
|
- sbi SER_PORT,LOCK ; из 0 в 1 -- защёлкивание данных в регистре
|
|
|
+ sbi SER_PORT,LOCK ; из 0 в 1 -- защёлкивание данных в регистре
|
|
|
in temp,DISP_PORT
|
|
|
ori temp,IND_LA
|
|
|
and temp,LEDN
|
|
|
- out DISP_PORT,temp ; включаем очередной индикатор
|
|
|
- lsl LEDN ; сдвинули - следующий индикатор
|
|
|
- brlo T1L2 ; вышли за границы? проверка
|
|
|
- ldi LEDN,FIRST_LED ; да, загружаем начальное значение
|
|
|
- ldi YL,AtLED1 ; загружаем адрес 1-го индикатора
|
|
|
+ out DISP_PORT,temp ; включаем очередной индикатор
|
|
|
+ lsl LEDN ; сдвинули - следующий индикатор
|
|
|
+ brlo T1L2 ; вышли за границы? проверка
|
|
|
+ ldi LEDN,FIRST_LED ; да, загружаем начальное значение
|
|
|
+ ldi YL,AtLED1 ; загружаем адрес 1-го индикатора
|
|
|
|
|
|
T1L2:
|
|
|
- sbr flags,1<<MEASURE ; пора мерять
|
|
|
- ;;; выход
|
|
|
+ sbr flags,1<<MEASURE ; пора мерять
|
|
|
+ ;;; выход
|
|
|
POPF
|
|
|
reti
|
|
|
|
|
|
|
|
|
;***************************
|
|
|
; ADC Conversion Handler
|
|
|
-; суммируем результаты измерений, уменьшаем счётчик.
|
|
|
+; суммируем результаты измерений, уменьшаем счётчик.
|
|
|
ADCC:
|
|
|
in temp,ADCL
|
|
|
add msrL,temp
|
|
@@ -425,7 +425,7 @@ ADCC:
|
|
|
reti
|
|
|
|
|
|
;***************************
|
|
|
-; байты для вывода 0-9 на индикаторы с ОА, без точки. точка вкл установкой бита 5
|
|
|
+; байты для вывода 0-9 на индикаторы с ОА, без точки. точка вкл установкой бита 5
|
|
|
LEDnd: .DB 0x30,0xF3,0x2A,0xA2,0xE1,0xA4,0x24,0xF2,0x20,0xA0
|
|
|
|
|
|
.exit
|