Attiny 13;
Proteus 8.
код правда без украшательств, я его еще ковыряю..
Спойлер
;==============; Main.asm file generated by New Project wizard
;
; Created: Пн авг 7 2017
; Processor: ATtiny13
; Compiler: AVRASM (Proteus)
;==============
;==============
.org 0 ;Задание нулевого адреса старта программы
rjmp reset ;Безусловный переход к метке reset
.org 9 ;Задание адреса прерывания по окончанию преобразования АЦП
rjmp ADC_complete;Безусловный переход к метке ADC_complete
reset: ;Начало раздела инициализации контроллера
ldi r16,RAMEND ;Загрузка в регистр r16 адреса верхней границы ОЗУ
out SPL, r16 ;Копирование значения из r16 в регистр указателя стека SPL
ldi r16,0b11110111;Загрузка в r16 единиц в нулевой и четвертый биты
out DDRB,r16 ;Переключение выводов PB0 и PB4 на выход
;ldi r16,(1<<ADLAR)|(1<<MUX0)|(1<<MUX1);См. описание программы
ldi r16,(1<<MUX0)|(1<<MUX1);См. описание программы
out ADMUX,r16 ;Копирование из r16 в ADMUX
ldi r16,(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS1);См.опис.
out ADCSRA,r16 ;Копирование из r16 в ADCSRA
ldi r17,0
sei ;Глобальное разрешение прерываний
main: ;Основной цикл программы
ldi r16,(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS1);См.опис.
out ADCSRA,r16 ;Копирование из r16 в ADCSRA
ldi r20,255
d:
dec r20
brne d
rcall shift
rjmp main ;Конец основного цикла программы
ADC_complete:;Начало обработчика прерывания от АЦП
in r17,ADCL
in r16,ADCH ;Копирование в регистр r16 результата преобразования
reti ;Возврат из прерывания
shift:
cbi portb,0
ldi r19,16
mov r18,r16
mov r21,r17
sh1:
sbrs r18,7 ;Если 7-й бит в регистре r16 равен 1, пропустить след. строку
cbi PORTB,1 ;Установить 4-й бит PORTB (выключить LED2)
sbrc r18,7 ;Если 7-й бит в регистре r16 равен 0, пропустить след. строку
sbi PORTB,1 ;Сбросить 4-й бит в регистре PORTB (включить LED2)
nop
nop
sbi portb,0
cbi portb,0
rol r21
rol r18
dec r19
nop
brne sh1
cbi portb,2
sbi portb,2
cbi portb,2
ret
- Вложения
-
- ADC_volt.zip
- (100.28 КБ) 243 скачивания



