; Nejjednodussi stereo indikator vybuzeni s ATtiny24A / 24 / 24V ; int. RC 8MHz, BOD 2,7V ; VI. 2013 ; vytvoril: DANYK ; http://danyk.cz/avr_iv.html .NOLIST .INCLUDE "tn24def.inc" .LIST .DEF REG=R16 ; docasny registr .DEF VYSLEDEK=R17 ; docasny registr 2 .DEF DELREG=R18 ; registr deleni frekvence .DEF MULTREG=R19 ; registr si pamatuje stav multiplexu .DEF LK=R20 ; levy kanal .DEF PK=R21 ; pravy kanal .DEF KANAL=R22 ; prepinani kanalu .DEF DELREG2=R23 ; registr deleni frekvence 2 .EQU SMER=DDRA ;PORT - katody a ADC .EQU PORT=PORTA .EQU SMER2=DDRB ;PORT - anody, jedna prebyvajici katoda .EQU PORT2=PORTB .CSEG .ORG 0 RJMP START ; sem skoci program pri preruseni .ORG OC0Aaddr RJMP CITAC0 START: ;nastavi port LDI REG,0b11111100 OUT SMER,REG LDI REG,0b11111100 OUT PORT,REG ;nastaví port LDI REG,0b111 OUT SMER2,REG LDI REG,0b100 OUT PORT2,REG LDI REG,LOW(RAMEND) OUT SPL,REG ; vypne analogovy komparator (setri energii). LDI REG,0b10000000 OUT ACSR,REG ; sleep mod IDLE LDI REG,0b00100000 OUT MCUCR,REG ; vypne USI (setri energii). LDI REG,0b00000010 OUT PRR,REG ; vypne digitalni vstupy (setri energii). LDI REG,0b11111111 OUT DIDR0,REG ; nastavi ADC - f/8, povoli ho LDI REG,0b10000011 OUT ADCSRA,REG ; nastavi ADC - zarovnani doleva LDI REG,0b00010000 OUT ADCSRB,REG ; NASTAVENI CITACU/CASOVACU LDI REG,0b00000010 ; nastavi citac0 na nulovani pri dosazeni porovnavane... OUT TCCR0A,REG ; ...hodnoty (tzv. CTC), OC0 nevyuzit, LDI REG,0b00000010 ; deleni 8 OUT TCCR0B,REG LDI REG,30 ; porovnavana hodnota OUT OCR0A,REG ; LDI REG,0b00000010 ; povoli preruseni OUT TIMSK0,REG ; (bit 1 povoli preruseni CTC) ; vynuluje/prednastavi registry LDI DELREG,1 LDI DELREG2,1 LDI MULTREG,1 CLR LK CLR PK CLR KANAL SEI ;povoli globalni preruseni ;hlavni smycka SMYCKA: SLEEP RJMP SMYCKA MULT: LDI REG,0b11111100 OUT PORT,REG LDI REG,0b100 OUT PORT2,REG CP LK,MULTREG BRLO L_NE SBI PORT2,0 L_NE: CP PK,MULTREG BRLO P_NE SBI PORT2,1 P_NE: MOV REG,MULTREG DEC REG LDI ZL,LOW(SKOK) LDI ZH,HIGH(SKOK) ADD ZL,REG CLR REG ADC ZH,REG IJMP SKOK: RJMP MULT1 RJMP MULT2 RJMP MULT3 RJMP MULT4 RJMP MULT5 RJMP MULT6 RJMP MULT7 MULT1: CBI PORT,2 RET MULT2: CBI PORT,3 RET MULT3: CBI PORT,4 RET MULT4: CBI PORT,5 RET MULT5: CBI PORT,6 RET MULT6: CBI PORT,7 RET MULT7: CBI PORT2,2 RET PADEJ: CPI LK,0 BREQ LEVY_0 DEC LK LEVY_0: CPI PK,0 BREQ PRAVY_0 DEC PK PRAVY_0: RET ; preruseni ridici multiplex a zdroj casovani CITAC0: IN VYSLEDEK,ADCH MOV REG,KANAL ANDI REG,0b00000001 ORI REG,0b10000000 OUT ADMUX,REG SBI ADCSRA,6 CLR REG CPI VYSLEDEK,8 BRLO MENSI INC REG CPI VYSLEDEK,14 BRLO MENSI INC REG CPI VYSLEDEK,25 BRLO MENSI INC REG CPI VYSLEDEK,45 BRLO MENSI INC REG CPI VYSLEDEK,80 BRLO MENSI INC REG CPI VYSLEDEK,143 BRLO MENSI INC REG CPI VYSLEDEK,254 BRLO MENSI INC REG MENSI: INC KANAL SBRC KANAL,0 RJMP LEVY_NE CP LK,REG BRSH L_NENI_VYSSI MOV LK,REG L_NENI_VYSSI: RJMP PRAVY_NE LEVY_NE: CP PK,REG BRSH P_NENI_VYSSI MOV PK,REG P_NENI_VYSSI: PRAVY_NE: DEC DELREG BRNE HOP LDI DELREG,46 RCALL MULT DEC MULTREG BRNE HOP LDI MULTREG,7 DEC DELREG2 BRNE HOP LDI DELREG2,7 ; !!! DOBA SESTUPU / FALL TIME (7 = 500ms, 14 = 1s) !!! RCALL PADEJ HOP: RETI