.include "D:\Program Files\Atmel\AVR Studio\Appnotes\tn25def.inc" ;Автор: Кравченко А.В. ;Дата: 8.12.2012 ;Версия: 1.1.1 ;Имя файла: baunt.asm ;Микроконтроллер: AVR tiny25. ;Тактовая частота: 1,0 мГц ;Питание: нестабилизированное 3,6-5,0 В .def tmp = r16 .def tmp2 = r17 .def tmp3 = r18 .def tempo = r19 .def pir = r22 .def pur = r23 .def par = r20 .def cY = r29 .def cX = r21 .def M = r26 .def adr = r0 .def prg1 = r24 .def prg2 = r25 .def bt = r30 .def bu = r27 .cseg .org 0 rjmp RESET nop nop ;rjmp EXT_INT0 прерывание не используется nop ;rjmp EXT_PIN прерывание не используется nop ;rjmp TIMER1_COMPA прерывание от таймера ;rjmp TIMER1_OVF ;прерывание от таймера rjmp TIMER0_OVF ; nop ;rjmp EE_RDY прерывание не используется nop ;rjmp ANA_COMP прерывание не используется nop ;rjmp ADC nop ;rjmp TIMER1_COMPB прерывание от таймера nop ;rjmp TIMER0_COMPA прерывание от таймера nop ;rjmp TIMER0_COMPB прерывание от таймера nop ;rjmp WDT nop ;rjmp USI START nop ;rjmp USI OVF .org 20 ;настройка порта В RESET: nop clr tmp out DDRB, tmp out PORTB, tmp ;обнулить порт В clr tmp ldi tmp, $0F ;PB0,PB1,РВ2,РВ3-выходы out DDRB, tmp ;Начало программы ;сброс всех значений clr pir clr pur clr prg1 clr prg2 clr adr clr bu ;************************************ ;Запуск таймера формирование 6 С ldi tmp, $00 out GTCCR, tmp out TCCR0A,tmp ;режим работы нормальный ldi tmp,$05 ;режим работы переполнение Т1, запуск таймера /1024 out TCCR0B,tmp ;режим работы нормальный ldi tmp, $04 out TCNT0, tmp ldi tmp, $02 ;переполнение Т0 , out TIMSK,tmp ;разрешаем прерывания по совпадению от Т0, ldi bt, $00 ;**************************************************** ;основная программа nStart: nop rcall adcn nop rcall zader nop rcall opros rr: nop inc bu rtu21: nop sei wdr cln clz cpi bt, $DE breq rtu78 rjmp rtu21 rtu78: nop ldi tmp, $00 nop clr bt cln clz cpi bu, $19 breq ru rjmp rr ru: nop clr bu clr bt rjmp nStart ;**************************************************** ;Подпрограмма Настройка АЦП, adcn: nop nop clr tmp awe: nop cpi tmp, $04 brsh ass clr tmp3 ldi tmp3, $83 ;внутренний TOIE0 1 57источник, вход ADC3 out ADMUX, tmp3 ;коммутация входов АЦП clr tmp2 clr tmp3 ldi tmp2, $C4 ;одиночное, запуск, 1/16 out ADCSRA, tmp2 ;запуск АЦП на преобразование ;Сохранение данных АЦП in tmp2, ADCL in tmp3, ADCH mov r2, tmp2 mov r3, tmp3 mov r4, r2 mov r5, r3 mov r6, r4 mov r7, r5 inc tmp rjmp awe ass: nop clr r8 clc add tmp2, r2 adc r9, r8 add tmp2, r4 adc r9, r8 add tmp2, r6 adc r9, r8 clc lsr r9 ror tmp2 lsr r9 ror tmp2 clr r9 clc add tmp3, r3 adc r9, r8 add tmp3, r5 adc r9, r8 add tmp3, r7 adc r9, r8 clc lsr r9 ror tmp3 lsr r9 ror tmp3 nop ret ;**************************************************** ;Подпрограмма задержки включения светодиодов zader: nop wdr clr M clr cY ldi cY, $AF cpi tmp3, $00 brne goo ldi M, $01 add M, tmp3 nop goo: nop mov M, tmp3 dm: nop cpi tmp2, $00 brne goq ldi cX, $01 add cX, tmp2 nop goq: nop mov cX, tmp2 dv: nop wdr nop dx: dec cY brpl dx cln dec cX brpl dv cln dec M brne dm ret ;**************************************************** ;Подпрограмма опроса светодиодов opros: nop cpi pir, $0B breq prn2 ldi ZH, high(2*prog1) ldi ZL, Low(2*prog1) Add ZL, pir LPM mov prg1, adr out PORTB, prg1 inc pir rjmp got prn2: nop cpi pur, $11 breq prn3 ldi ZH, high(2*prog2) ldi ZL, Low(2*prog2) Add ZL, pur LPM mov prg2, adr out PORTB, prg2 inc pur rjmp got prn3: nop cpi par, $13 breq nasv ldi ZH, high(2*prog3) ldi ZL, Low(2*prog3) Add ZL, par LPM mov prg2, adr out PORTB, prg2 inc par rjmp got nasv: nop clr pir clr pur clr par clr adr clr prg1 clr prg2 got: nop ret ;**************************************************** ;Подпрограмма вектора прерывания TIMER0_OVF: nop ;Запуск таймера формирование 6 С ldi tmp, $00 out GTCCR, tmp out TCCR0A,tmp ;режим работы нормальный ldi tmp,$05 ;режим работы переполнение Т1, запуск таймера /1024 out TCCR0B,tmp ;режим работы нормальный ldi tmp, $04 out TCNT0, tmp ldi tmp, $02 ;переполнение Т0 , out TIMSK,tmp ;разрешаем прерывания по совпадению от Т0, ldi bt, $DE reti ;**************************************************** .org $200 prog1: .DB $02, $08, $07, $06, $03, $01, $00, $05 .DB $04, $09 prog2: .DB $08, $04, $07, $05, $06, $00, $03, $01 .DB $06, $00, $07, $05, $08, $04, $02, $09 prog3: .DB $02, $04, $09, $05, $04, $00, $05, $01 .DB $00, $03, $01, $06, $03, $07, $06, $08 .DB $07, $02 .EXIT