Вольтметр на микроконтроллере ATtiny15L

Текст программы прошивки вольтметра

;**************************************************************
;ПРОГРАММА ВОЛЬТМЕТРА С ЖКИ НА ATTINY15. АВТОР ОЗОЛИН М.А
;**************************************************************
.INCLUDE»TN15DEF.INC»
.DEF LC=R6
.DEF HC=R7
.DEF H=R15
.ORG 000
RESET:
CLR R10
LDI R16,222
MOV LC,R16
LDI R16,3
MOV HC,R16
LDI R16,100
MOV H,R16
LDI R16,10
MOV R8,R16
LDI R16,198
OUT ADCSR,R16
LDI R16,130
OUT ADMUX,R16
SBI DDRB,0
OUT PORTB,R10
LDI R20,2
CLR R19
CLR R2
CLR R3
CLR R4
CLR R5
START:
CLR R17
IN R16,ADCSR ;ИЗМЕРЯЕМ НАПРЯЖЕНИЕ НА ADC2
SBRS R16,4
RJMP PC-2
IN R18,DDRB ;АНАЛИЗ СОСТОЯНИЯ
ANDI R18,6 ;ВХОДНОГО ДЕЛИТЕЛЯ
IN R4,ADCL ;ЧТЕНИЕ
IN R5,ADCH ;ДАННЫХ
LDI R25,16
DEC R25
BRNE PC-1
SBI ADMUX,0 ;ПОДКЛЮЧАЕМ ВХОД ADC3
SBI ADCSR,6 ;ЗАПУСК ПРЕОБРАЗОВАНИЯ
CP R4,LC ;ЕСЛИ
CPC R5,HC ;ПЕРЕГРУЗКИ НЕТ
BRLO A1 ;ПЕРЕХОД НА ПРОВЕРКУ МИНИМАЛЬНОГО ЗНАЧЕНИЯ
CPI R18,4 ;ЕСЛИ ПЕРЕГРУЗКА ПРИ МАКСИМАЛЬНОМ КОЗФФ.ДЕЛ
BREQ S1 ;ВКЛЮЧАЕМ ИНДИКАЦИЮ ПЕРЕГРУЗКИ
CPI R18,0 ;ЕСЛИ КОЭФФ. ДЕЛЕНИЯ МИНИМАЛЬНЫЙ
BREQ S2 ;УВЕЛИЧИВАЕМ ЕГО В 10 РАЗ
SBI DDRB,2 ;В ПРОТИВНОМ СЛУЧАЕ УСТАНАВЛИВАЕМ
CBI DDRB,1 ;МАКСИМАЛЬНЫЙ КОЭФФИЦИЕНТ ДЕЛЕНИЯ
RJMP EX
S2:
SBI DDRB,1
CBI DDRB,2
RJMP EX
S1:
SER R17
RJMP EX
A1:
CP R4,H
CPC R5,R10
BRLO A2
RJMP EX
A2:
CPI R18,4
BREQ M1
CPI R18,2
BREQ M2
RJMP EX
M1:
SBI DDRB,1
CBI DDRB,2
RJMP EX
M2:
CBI DDRB,1
CBI DDRB,2
EX:
CLR R26
IN R16,ADCSR ;КОНТРОЛЬ НАПРЯЖЕНИЯ БАТАРЕИ,
SBRS R16,4 ;ИЛИ ТОКА
RJMP EX
IN R2,ADCL ;ЧТЕНИЕ
IN R3,ADCH ;ДАННЫХ
LDI R25,16
DEC R25
BRNE PC-1
CBI ADMUX,0 ;ПОДКЛЮЧАЕМ ВХОД ADC2
SBI ADCSR,6
CP R2,LC
CPC R3,HC
BRLO PC+2
SER R26
DEC R19
BRNE START
DEC R20
BRNE START
LDI R20,2
MOV R22,R2
MOV R23,R3
RCALL DECOD
MOV R2,R12
MOV R3,R13
SWAP R3
MOV R22,R4
MOV R23,R5
RCALL DECOD
;**************************************************************
;ФОРМИРОВАНИЕ ПУСТОГО ЗНАКОМЕСТА (РАЗДЕЛЕНИЕ ЦЕЛЫХ И ДЕСЯТЫХ)
;**************************************************************
CPI R18,0
BRNE PC+2
SWAP R13
CPI R18,2
BRNE PC+8
SWAP R13
MOV R24,R12
SWAP R24
ANDI R24,15
OR R13,R24
LDI R24,15
AND R12,R24
CPI R26,255
BRNE PC+3
CLR R3
MOV R2,R26
CPI R17,255
BRNE IND
CLR R13
MOV R12,R17
;**************************************************************
IND:
LDI R21,8
SBI PORTB,0
LDI R25,2
DEC R25
BRNE PC-1
ROL R3
BRCS PC+2
RJMP PC+2
RCALL PP
CBI PORTB,0
LDI R25,55
DEC R25
BRNE PC-1
DEC R21
BRNE PC-13
LDI R21,8
SBI PORTB,0
LDI R25,2
DEC R25
BRNE PC-1
ROL R2
BRCS PC+2
RJMP PC+2
RCALL PP
CBI PORTB,0
LDI R25,55
DEC R25
BRNE PC-1
DEC R21
BRNE PC-13
LDI R21,8
GG:
CLR R9
SBI PORTB,0
LDI R25,2
DEC R25
BRNE PC-1
ROL R9
BRCS PC+2
RJMP PC+2
RCALL PP
CBI PORTB,0
LDI R25,55
DEC R25
BRNE PC-1
DEC R21
BRNE GG
LDI R21,8
SBI PORTB,0
LDI R25,2
DEC R25
BRNE PC-1
ROL R13
BRCS PC+2
RJMP PC+2
RCALL PP
CBI PORTB,0
LDI R25,55
DEC R25
BRNE PC-1
DEC R21
BRNE PC-13
LDI R21,8
SBI PORTB,0
LDI R25,2
DEC R25
BRNE PC-1
ROL R12
BRCS PC+2
RJMP PC+2
RCALL PP
CBI PORTB,0
LDI R25,55
DEC R25
BRNE PC-1
DEC R21
BRNE PC-13
RJMP START
;**************************************************************
;ПОДПРОГРАММА ДЕКОДИРОВАНИЯ
;**************************************************************
DECOD:
CLR R13
CP R22,H
CPC R23,R10
BRLO PC+5
INC R13
SUB R22,H
SBC R23,R10
RJMP PC-6
TST R13
BRNE PC+2
MOV R13,R8
CLR R12
CP R22,R8
CPC R23,R10
BRLO PC+5
INC R12
SUB R22,R8
SBC R23,R10
RJMP PC-6
TST R12
BRNE PC+2
MOV R12,R8
SWAP R12
TST R22
BRNE PC+2
MOV R22,R8
OR R12,R22
RET
;**************************************************************
;ПОДПРОГРАММА ПАУЗЫ
;**************************************************************
PP:
LDI R25,50
DEC R25
BRNE PC-1
RET

Скачать архив с прошивкой и текстом программы



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *