Cleanup, reorganization
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
.device attiny13
|
||||
.def cnt=r17
|
||||
.def P0=r20
|
||||
.def P1=r21
|
||||
.def P2=r22
|
||||
.def P3=r23
|
||||
.def P4=r24
|
||||
.def chc=r18
|
||||
.def faze=r19
|
||||
|
||||
;### NASTAVENI ###
|
||||
.equ CChDelay=6 ;DELAY pro zmenu barev - cim min tim rychlejsi je zmena
|
||||
.equ ColDepth=128 ;Barevna hloubka - urcuje na kolik kroku se rozdeli prepinani 2 barev
|
||||
.equ TIMEROV=2 ;porovnavaci hodnota pro timer - konstanta
|
||||
|
||||
.org 0x0000 ;RESET
|
||||
rjmp RESET ;skok na start po resetu
|
||||
.org 0x0006 ;TC0 overflow
|
||||
rjmp CASOVAC
|
||||
.org 0x0007
|
||||
rjmp casovac
|
||||
|
||||
.org 0x0010
|
||||
RESET:
|
||||
ldi r16,low(RAMEND) ;nastavi stack pointer
|
||||
out SPL,r16
|
||||
|
||||
cli ;zakazat vsechna preruseni
|
||||
|
||||
ldi r16,0b00011111 ;výstupní = 1
|
||||
out DDRB,r16
|
||||
|
||||
ldi r16,0 ;vypnout PullUp
|
||||
out PORTB,r16
|
||||
|
||||
ldi r16,0b00000001 ;TC0 prescaler na 1 - velice plynule, bez blikani
|
||||
out TCCR0B,r16 ;4800000Hz
|
||||
|
||||
ldi r16,0b00000010 ;TC0 je v rezimu CTC
|
||||
out TCCR0A,r16
|
||||
|
||||
ldi r16,TIMEROV ;overflow 32 clks - upravuje rychlost prepinani (konstanta)
|
||||
out OCR0A,r16 ;
|
||||
|
||||
in r16, TIMSK0 ;interrupt enable
|
||||
ori r16, 0b00000100
|
||||
out timsk0,r16
|
||||
|
||||
ldi P0,0 ;0
|
||||
ldi P1,ColDepth ;1
|
||||
ldi P2,ColDepth ;2
|
||||
ldi P3,ColDepth ;3
|
||||
ldi P4,ColDepth ;4
|
||||
clr cnt
|
||||
clr chc
|
||||
clr faze ;faze: 0 = 0->1, 1=1->2, 2=2->3 atd
|
||||
|
||||
sei ;zapnout globalne interrupt
|
||||
|
||||
LOOP:
|
||||
rjmp LOOP ;skok na loop
|
||||
|
||||
CASOVAC:
|
||||
inc cnt ;cnt=cnt+1
|
||||
|
||||
cpi cnt,ColDepth ;cnt==ColorDepth? ANO->pokracovat, NE->skok na NOV
|
||||
brne nov
|
||||
|
||||
clr cnt ;CNT je ColorDepth -> vymazat CNT
|
||||
;vynulovat LED kanaly:
|
||||
cbi portb,0 ; (0)
|
||||
cbi portb,1 ; (1)
|
||||
cbi portb,2 ; (2)
|
||||
cbi portb,3 ; (3)
|
||||
cbi portb,4 ; (4)
|
||||
|
||||
inc chc ;Zvysime citac pro zmenu barvy CHC o 1
|
||||
cpi chc,CChDelay ;CHC==delay? ANO->pokracovat, NE->skok na NOV
|
||||
brne nov
|
||||
|
||||
clr chc ;MENI SE BARVY
|
||||
|
||||
cpi faze,0
|
||||
brne FazeNot0
|
||||
;FAZE je 0
|
||||
inc P0
|
||||
dec P1
|
||||
cpi P1,0
|
||||
brne nov
|
||||
inc faze
|
||||
|
||||
FazeNot0:
|
||||
cpi faze,1
|
||||
brne FazeNot1
|
||||
;FAZE je 1
|
||||
inc P1
|
||||
dec P2
|
||||
cpi P2,0
|
||||
brne nov
|
||||
inc faze
|
||||
|
||||
FazeNot1:
|
||||
cpi faze,2
|
||||
brne FazeNot2
|
||||
;FAZE je 2
|
||||
inc P2
|
||||
dec P3
|
||||
cpi P3,0
|
||||
brne nov
|
||||
inc faze
|
||||
FazeNot2:
|
||||
cpi faze,3
|
||||
brne FazeNot3
|
||||
;FAZE je 3
|
||||
inc P3
|
||||
dec P4
|
||||
cpi P4,0
|
||||
brne nov
|
||||
inc faze
|
||||
FazeNot3:
|
||||
;FAZE je 4
|
||||
inc P4
|
||||
dec P0
|
||||
cpi P0,0
|
||||
brne nov
|
||||
clr faze
|
||||
|
||||
;sprava PWM kanalu - podminene zapnuti LED
|
||||
nov: ;NOV label
|
||||
cp cnt,P0 ;P0==CNT? ANO->zapni P0, NE->skok na NOT0
|
||||
brne not0
|
||||
sbi portb,0
|
||||
not0: ;NOTR label
|
||||
cp cnt,P1 ;P1==CNT? ANO->zapni P1, NE->skok na NOT1
|
||||
brne not1
|
||||
sbi portb,1
|
||||
not1: ;NOTG label
|
||||
cp cnt,P2 ;P2==CNT? ANO->zapni P2, NE->skok na NOT2
|
||||
brne not2
|
||||
sbi portb,2
|
||||
not2: ;NOTG label
|
||||
cp cnt,P3 ;P3==CNT? ANO->zapni P3, NE->skok na NOT3
|
||||
brne not3
|
||||
sbi portb,4
|
||||
not3: ;NOTG label
|
||||
cp cnt,P4 ;P4==CNT? ANO->zapni P4, NE->skok na NOT4
|
||||
brne endcounter
|
||||
sbi portb,3
|
||||
endcounter: ;ENDCOUNTER label - konec preruseni
|
||||
reti ;navrat z obsluhy preruseni
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
;pokus
|
||||
|
||||
.include "tn13def.inc"
|
||||
|
||||
.def POM=r16
|
||||
|
||||
.org 0x0000 ;zacatek kodu
|
||||
RJMP RESET ;skok na start po resetu
|
||||
|
||||
|
||||
.org 0x0010 ;zacatek vlastniho programu
|
||||
|
||||
RESET:
|
||||
LDI POM,low(RAMEND) ;nastavi stack pointer
|
||||
OUT SPL,POM
|
||||
|
||||
LDI POM,0B00000011 ;nastavi vystupni piny
|
||||
OUT DDRB,POM
|
||||
|
||||
LOOP:
|
||||
SBI PORTB,0 ;PB0=0, PB1=1
|
||||
CBI PORTB,1
|
||||
RCALL CEKANI ;CEKACI SUB
|
||||
CBI PORTB,0 ;PB0=1, PB1=0
|
||||
SBI PORTB,1
|
||||
RCALL CEKANI ;CEKACI SUB
|
||||
RJMP LOOP ;znovu na navesti LOOP
|
||||
|
||||
CEKANI:
|
||||
PUSH r18 ;ulozit pouzivane registry do STACKU
|
||||
PUSH r17
|
||||
PUSH r16
|
||||
|
||||
LDI r16, 100
|
||||
L1: DEC r16
|
||||
LDI r17, 100
|
||||
L2: DEC r17
|
||||
LDI r18, 125
|
||||
L3: DEC r18
|
||||
CPI r18, 0
|
||||
BRNE L3
|
||||
CPI r17, 0
|
||||
BRNE L2
|
||||
CPI r16, 0
|
||||
BRNE L1
|
||||
|
||||
POP r16 ;nacist puvodni obsah registru ze STACKU
|
||||
POP r17
|
||||
POP r18
|
||||
|
||||
RET ;navrat do hlavniho programu
|
||||
|
||||
|
||||
@@ -0,0 +1,287 @@
|
||||
|
||||
AVRASM ver. 2.1.12 C:\Documents and Settings\Ondra\Dokumenty\AVR projekty\pokus\pokus.asm Tue Sep 04 20:36:18 2007
|
||||
|
||||
|
||||
EQU SIGNATURE_000 0000001e
|
||||
EQU SIGNATURE_001 00000090
|
||||
EQU SIGNATURE_002 00000007
|
||||
EQU SREG 0000003f
|
||||
EQU SPL 0000003d
|
||||
EQU GIMSK 0000003b
|
||||
EQU GIFR 0000003a
|
||||
EQU TIMSK0 00000039
|
||||
EQU TIFR0 00000038
|
||||
EQU SPMCSR 00000037
|
||||
EQU OCR0A 00000036
|
||||
EQU MCUCR 00000035
|
||||
EQU MCUSR 00000034
|
||||
EQU TCCR0B 00000033
|
||||
EQU TCNT0 00000032
|
||||
EQU OSCCAL 00000031
|
||||
EQU TCCR0A 0000002f
|
||||
EQU DWDR 0000002e
|
||||
EQU OCR0B 00000029
|
||||
EQU GTCCR 00000028
|
||||
EQU CLKPR 00000026
|
||||
EQU WDTCR 00000021
|
||||
EQU EEAR 0000001e
|
||||
EQU EEDR 0000001d
|
||||
EQU EECR 0000001c
|
||||
EQU PORTB 00000018
|
||||
EQU DDRB 00000017
|
||||
EQU PINB 00000016
|
||||
EQU PCMSK 00000015
|
||||
EQU DIDR0 00000014
|
||||
EQU ACSR 00000008
|
||||
EQU ADMUX 00000007
|
||||
EQU ADCSRA 00000006
|
||||
EQU ADCH 00000005
|
||||
EQU ADCL 00000004
|
||||
EQU ADCSRB 00000003
|
||||
EQU MUX0 00000000
|
||||
EQU MUX1 00000001
|
||||
EQU ADLAR 00000005
|
||||
EQU REFS0 00000006
|
||||
EQU ADPS0 00000000
|
||||
EQU ADPS1 00000001
|
||||
EQU ADPS2 00000002
|
||||
EQU ADIE 00000003
|
||||
EQU ADIF 00000004
|
||||
EQU ADATE 00000005
|
||||
EQU ADSC 00000006
|
||||
EQU ADEN 00000007
|
||||
EQU ADCH0 00000000
|
||||
EQU ADCH1 00000001
|
||||
EQU ADCH2 00000002
|
||||
EQU ADCH3 00000003
|
||||
EQU ADCH4 00000004
|
||||
EQU ADCH5 00000005
|
||||
EQU ADCH6 00000006
|
||||
EQU ADCH7 00000007
|
||||
EQU ADCL0 00000000
|
||||
EQU ADCL1 00000001
|
||||
EQU ADCL2 00000002
|
||||
EQU ADCL3 00000003
|
||||
EQU ADCL4 00000004
|
||||
EQU ADCL5 00000005
|
||||
EQU ADCL6 00000006
|
||||
EQU ADCL7 00000007
|
||||
EQU ADTS0 00000000
|
||||
EQU ADTS1 00000001
|
||||
EQU ADTS2 00000002
|
||||
EQU ADC1D 00000002
|
||||
EQU ADC3D 00000003
|
||||
EQU ADC2D 00000004
|
||||
EQU ADC0D 00000005
|
||||
EQU ACME 00000006
|
||||
EQU ACIS0 00000000
|
||||
EQU ACIS1 00000001
|
||||
EQU ACIE 00000003
|
||||
EQU ACI 00000004
|
||||
EQU ACO 00000005
|
||||
EQU ACBG 00000006
|
||||
EQU AINBG 00000006
|
||||
EQU ACD 00000007
|
||||
EQU AIN0D 00000000
|
||||
EQU AIN1D 00000001
|
||||
EQU EEARL 0000001e
|
||||
EQU EEAR0 00000000
|
||||
EQU EEAR1 00000001
|
||||
EQU EEAR2 00000002
|
||||
EQU EEAR3 00000003
|
||||
EQU EEAR4 00000004
|
||||
EQU EEAR5 00000005
|
||||
EQU EEDR0 00000000
|
||||
EQU EEDR1 00000001
|
||||
EQU EEDR2 00000002
|
||||
EQU EEDR3 00000003
|
||||
EQU EEDR4 00000004
|
||||
EQU EEDR5 00000005
|
||||
EQU EEDR6 00000006
|
||||
EQU EEDR7 00000007
|
||||
EQU EERE 00000000
|
||||
EQU EEWE 00000001
|
||||
EQU EEPE 00000001
|
||||
EQU EEMWE 00000002
|
||||
EQU EEMPE 00000002
|
||||
EQU EERIE 00000003
|
||||
EQU EEPM0 00000004
|
||||
EQU EEPM1 00000005
|
||||
EQU SREG_C 00000000
|
||||
EQU SREG_Z 00000001
|
||||
EQU SREG_N 00000002
|
||||
EQU SREG_V 00000003
|
||||
EQU SREG_S 00000004
|
||||
EQU SREG_H 00000005
|
||||
EQU SREG_T 00000006
|
||||
EQU SREG_I 00000007
|
||||
EQU SP0 00000000
|
||||
EQU SP1 00000001
|
||||
EQU SP2 00000002
|
||||
EQU SP3 00000003
|
||||
EQU SP4 00000004
|
||||
EQU SP5 00000005
|
||||
EQU SP6 00000006
|
||||
EQU SP7 00000007
|
||||
EQU ISC00 00000000
|
||||
EQU ISC01 00000001
|
||||
EQU SM0 00000003
|
||||
EQU SM1 00000004
|
||||
EQU SE 00000005
|
||||
EQU PUD 00000006
|
||||
EQU PORF 00000000
|
||||
EQU EXTRF 00000001
|
||||
EQU BORF 00000002
|
||||
EQU WDRF 00000003
|
||||
EQU CAL0 00000000
|
||||
EQU CAL1 00000001
|
||||
EQU CAL2 00000002
|
||||
EQU CAL3 00000003
|
||||
EQU CAL4 00000004
|
||||
EQU CAL5 00000005
|
||||
EQU CAL6 00000006
|
||||
EQU CLKPS0 00000000
|
||||
EQU CLKPS1 00000001
|
||||
EQU CLKPS2 00000002
|
||||
EQU CLKPS3 00000003
|
||||
EQU CLKPCE 00000007
|
||||
EQU DWDR0 00000000
|
||||
EQU DWDR1 00000001
|
||||
EQU DWDR2 00000002
|
||||
EQU DWDR3 00000003
|
||||
EQU DWDR4 00000004
|
||||
EQU DWDR5 00000005
|
||||
EQU DWDR6 00000006
|
||||
EQU DWDR7 00000007
|
||||
EQU SPMEN 00000000
|
||||
EQU PGERS 00000001
|
||||
EQU PGWRT 00000002
|
||||
EQU RFLB 00000003
|
||||
EQU CTPB 00000004
|
||||
EQU PORTB0 00000000
|
||||
EQU PB0 00000000
|
||||
EQU PORTB1 00000001
|
||||
EQU PB1 00000001
|
||||
EQU PORTB2 00000002
|
||||
EQU PB2 00000002
|
||||
EQU PORTB3 00000003
|
||||
EQU PB3 00000003
|
||||
EQU PORTB4 00000004
|
||||
EQU PB4 00000004
|
||||
EQU PORTB5 00000005
|
||||
EQU PB5 00000005
|
||||
EQU DDB0 00000000
|
||||
EQU DDB1 00000001
|
||||
EQU DDB2 00000002
|
||||
EQU DDB3 00000003
|
||||
EQU DDB4 00000004
|
||||
EQU DDB5 00000005
|
||||
EQU PINB0 00000000
|
||||
EQU PINB1 00000001
|
||||
EQU PINB2 00000002
|
||||
EQU PINB3 00000003
|
||||
EQU PINB4 00000004
|
||||
EQU PINB5 00000005
|
||||
EQU GICR 0000003b
|
||||
EQU PCIE 00000005
|
||||
EQU INT0 00000006
|
||||
EQU PCIF 00000005
|
||||
EQU INTF0 00000006
|
||||
EQU PCINT0 00000000
|
||||
EQU PCINT1 00000001
|
||||
EQU PCINT2 00000002
|
||||
EQU PCINT3 00000003
|
||||
EQU PCINT4 00000004
|
||||
EQU PCINT5 00000005
|
||||
EQU TOIE0 00000001
|
||||
EQU OCIE0A 00000002
|
||||
EQU OCIE0B 00000003
|
||||
EQU TOV0 00000001
|
||||
EQU OCF0A 00000002
|
||||
EQU OCF0B 00000003
|
||||
EQU OCR0_0 00000000
|
||||
EQU OCR0_1 00000001
|
||||
EQU OCR0_2 00000002
|
||||
EQU OCR0_3 00000003
|
||||
EQU OCR0_4 00000004
|
||||
EQU OCR0_5 00000005
|
||||
EQU OCR0_6 00000006
|
||||
EQU OCR0_7 00000007
|
||||
EQU WGM00 00000000
|
||||
EQU WGM01 00000001
|
||||
EQU COM0B0 00000004
|
||||
EQU COM0B1 00000005
|
||||
EQU COM0A0 00000006
|
||||
EQU COM0A1 00000007
|
||||
EQU TCNT0_0 00000000
|
||||
EQU TCNT0_1 00000001
|
||||
EQU TCNT0_2 00000002
|
||||
EQU TCNT0_3 00000003
|
||||
EQU TCNT0_4 00000004
|
||||
EQU TCNT0_5 00000005
|
||||
EQU TCNT0_6 00000006
|
||||
EQU TCNT0_7 00000007
|
||||
EQU CS00 00000000
|
||||
EQU CS01 00000001
|
||||
EQU CS02 00000002
|
||||
EQU WGM02 00000003
|
||||
EQU FOC0B 00000006
|
||||
EQU FOC0A 00000007
|
||||
EQU PSR10 00000000
|
||||
EQU TSM 00000007
|
||||
EQU WDP0 00000000
|
||||
EQU WDP1 00000001
|
||||
EQU WDP2 00000002
|
||||
EQU WDE 00000003
|
||||
EQU WDCE 00000004
|
||||
EQU WDP3 00000005
|
||||
EQU WDTIE 00000006
|
||||
EQU WDTIF 00000007
|
||||
EQU LB1 00000000
|
||||
EQU LB2 00000001
|
||||
EQU CKSEL0 00000000
|
||||
EQU CKSEL1 00000001
|
||||
EQU SUT0 00000002
|
||||
EQU SUT1 00000003
|
||||
EQU CKDIV8 00000004
|
||||
EQU WDTON 00000005
|
||||
EQU EESAVE 00000006
|
||||
EQU SPIEN 00000007
|
||||
EQU RSTDISBL 00000000
|
||||
EQU BODLEVEL0 00000001
|
||||
EQU BODLEVEL1 00000002
|
||||
EQU DWEN 00000003
|
||||
EQU SELFPRGEN 00000004
|
||||
DEF XH r27
|
||||
DEF XL r26
|
||||
DEF YH r29
|
||||
DEF YL r28
|
||||
DEF ZH r31
|
||||
DEF ZL r30
|
||||
EQU FLASHEND 000001ff
|
||||
EQU IOEND 0000003f
|
||||
EQU SRAM_START 00000060
|
||||
EQU SRAM_SIZE 00000040
|
||||
EQU RAMEND 0000009f
|
||||
EQU XRAMEND 00000000
|
||||
EQU E2END 0000003f
|
||||
EQU EEPROMEND 0000003f
|
||||
EQU EEADRBITS 00000006
|
||||
EQU PAGESIZE 00000010
|
||||
EQU INT0addr 00000001
|
||||
EQU PCI0addr 00000002
|
||||
EQU OVF0addr 00000003
|
||||
EQU ERDYaddr 00000004
|
||||
EQU ACIaddr 00000005
|
||||
EQU OC0Aaddr 00000006
|
||||
EQU OC0Baddr 00000007
|
||||
EQU WDTaddr 00000008
|
||||
EQU ADCCaddr 00000009
|
||||
EQU INT_VECTORS_SIZE 0000000a
|
||||
DEF POM r16
|
||||
CSEG RESET 00000010
|
||||
CSEG LOOP 00000014
|
||||
CSEG CEKANI 0000001b
|
||||
CSEG L1 0000001f
|
||||
CSEG L2 00000021
|
||||
CSEG L3 00000023
|
||||
@@ -0,0 +1,100 @@
|
||||
.device attiny13
|
||||
.def cnt=r17
|
||||
.def P0=r20
|
||||
.def chc=r18
|
||||
.def faze=r19
|
||||
|
||||
;### NASTAVENI ###
|
||||
.equ CChDelay=8 ;DELAY pro zmenu barev - cim min tim rychlejsi je zmena
|
||||
.equ TIMEROV=2 ;porovnavaci hodnota pro timer - konstanta
|
||||
|
||||
.org 0x0000 ;RESET
|
||||
rjmp RESET ;skok na start po resetu
|
||||
.org 0x0006 ;TC0 overflow
|
||||
rjmp CASOVAC
|
||||
.org 0x0007
|
||||
rjmp casovac
|
||||
|
||||
.org 0x0010
|
||||
RESET:
|
||||
ldi r16,low(RAMEND) ;nastavi stack pointer
|
||||
out SPL,r16
|
||||
|
||||
cli ;zakazat vsechna preruseni
|
||||
|
||||
ldi r16,0b00011111 ;výstupní = 1
|
||||
out DDRB,r16
|
||||
|
||||
ldi r16,0 ;vypnout PullUp
|
||||
out PORTB,r16
|
||||
|
||||
ldi r16,0b00000001 ;TC0 prescaler na 1 - velice plynule, bez blikani
|
||||
out TCCR0B,r16 ;4800000Hz
|
||||
|
||||
ldi r16,0b00000010 ;TC0 je v rezimu CTC
|
||||
out TCCR0A,r16
|
||||
|
||||
ldi r16,TIMEROV ;overflow 32 clks - upravuje rychlost prepinani (konstanta)
|
||||
out OCR0A,r16 ;
|
||||
|
||||
in r16, TIMSK0 ;interrupt enable
|
||||
ori r16, 0b00000100
|
||||
out timsk0,r16
|
||||
|
||||
ldi P0,0 ;0
|
||||
clr cnt
|
||||
clr chc
|
||||
clr faze ;faze: 0 = nahoru 1=dolu
|
||||
|
||||
sei ;zapnout globalne interrupt
|
||||
|
||||
LOOP:
|
||||
rjmp LOOP ;skok na loop
|
||||
|
||||
CASOVAC:
|
||||
inc cnt ;cnt=cnt+1
|
||||
|
||||
cpi cnt,128 ;cnt==128? ANO->pokracovat, NE->skok na NOV
|
||||
brne nov
|
||||
|
||||
clr cnt ;CNT je 128 -> vymazat CNT
|
||||
;vynulovat LED kanaly:
|
||||
cbi portb,0 ; (0)
|
||||
cbi portb,1 ; (1)
|
||||
cbi portb,2 ; (2)
|
||||
cbi portb,3 ; (3)
|
||||
cbi portb,4 ; (4)
|
||||
|
||||
inc chc ;Zvysime citac pro zmenu barvy CHC o 1
|
||||
cpi chc,CChDelay ;CHC==delay? ANO->pokracovat, NE->skok na NOV
|
||||
brne nov
|
||||
|
||||
clr chc ;MENI SE BARVY
|
||||
|
||||
cpi faze,0
|
||||
brne FazeNot0
|
||||
;FAZE je 0
|
||||
inc P0
|
||||
cpi P0,85
|
||||
brne nov
|
||||
inc faze
|
||||
|
||||
FazeNot0:
|
||||
;FAZE je 1
|
||||
dec P0
|
||||
cpi P0,0
|
||||
brne nov
|
||||
clr faze
|
||||
|
||||
;sprava PWM kanalu - podminene zapnuti LED
|
||||
nov: ;NOV label
|
||||
cp cnt,P0 ;P0==CNT? ANO->zapni P0, NE->skok na NOT0
|
||||
brne endcounter
|
||||
sbi portb,0
|
||||
sbi portb,1
|
||||
sbi portb,2
|
||||
sbi portb,3
|
||||
sbi portb,4
|
||||
endcounter: ;ENDCOUNTER label - konec preruseni
|
||||
reti ;navrat z obsluhy preruseni
|
||||
|
||||
+179
@@ -0,0 +1,179 @@
|
||||
;pracuje jako 5-ti bitovy binarni citac
|
||||
;vystupy 3 a 4 jsou prohozene kvuli desce
|
||||
.device attiny13
|
||||
.def cnt=r18
|
||||
.def RED=r19
|
||||
.def GREEN=r20
|
||||
.def BLUE=r21
|
||||
.def chc=r22
|
||||
.def faze=r23
|
||||
|
||||
.org 0x0000 ;RESET
|
||||
RJMP RESET ;skok na start po resetu
|
||||
.org 0x0006 ;TC0 overflow
|
||||
RJMP CASOVAC
|
||||
.org 0x0007
|
||||
rjmp casovac
|
||||
|
||||
.org 0x0010
|
||||
RESET:
|
||||
ldi r16,low(RAMEND) ;nastavi stack pointer
|
||||
out SPL,r16
|
||||
|
||||
cli ;zakazat vsechna preruseni
|
||||
|
||||
ldi r16,0b00011111 ;výstupní = 1
|
||||
out DDRB,r16
|
||||
|
||||
ldi r16,0 ;vypnout PullUp
|
||||
out PORTB,r16
|
||||
|
||||
ldi r16,0b00000011 ;TC0 prescaler na 64
|
||||
out TCCR0B,r16 ;4800000/32
|
||||
|
||||
ldi r16,0b00000010 ;TC0 je v rezimu CTC
|
||||
out TCCR0A,r16
|
||||
|
||||
ldi r16,20 ;overflow 22
|
||||
out OCR0A,r16 ;
|
||||
|
||||
in r16, TIMSK0 ;interrupt enable
|
||||
ORI r16, 0b00000100
|
||||
out timsk0,r16
|
||||
|
||||
ldi RED,0 ;R
|
||||
ldi GREEN,16 ;G
|
||||
ldi BLUE,32 ;B
|
||||
clr cnt
|
||||
clr chc
|
||||
clr faze
|
||||
|
||||
sei ;zapnout globalne interrupt
|
||||
|
||||
LOOP:
|
||||
rjmp LOOP ;skok na loop
|
||||
|
||||
CASOVAC:
|
||||
inc cnt
|
||||
|
||||
cpi cnt,32
|
||||
breq ov0
|
||||
rjmp nov
|
||||
ov0:
|
||||
clr cnt
|
||||
cbi portb,0
|
||||
cbi portb,1
|
||||
cbi portb,2
|
||||
|
||||
inc chc
|
||||
cpi chc,30
|
||||
breq ov1
|
||||
rjmp nov
|
||||
ov1:
|
||||
inc faze
|
||||
clr chc
|
||||
cpi faze,12
|
||||
brne fazenov
|
||||
clr faze
|
||||
fazenov:
|
||||
cpi faze,0
|
||||
breq f0
|
||||
cpi faze,1
|
||||
breq f1
|
||||
cpi faze,2
|
||||
breq f2
|
||||
cpi faze,3
|
||||
breq f3
|
||||
cpi faze,4
|
||||
breq f4
|
||||
cpi faze,5
|
||||
breq f5
|
||||
cpi faze,6
|
||||
breq f6
|
||||
cpi faze,7
|
||||
breq f7
|
||||
cpi faze,8
|
||||
breq f8
|
||||
cpi faze,9
|
||||
breq f9
|
||||
cpi faze,10
|
||||
breq f10
|
||||
cpi faze,11
|
||||
breq f11
|
||||
f0:
|
||||
ldi RED,0
|
||||
ldi GREEN,32
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f1:
|
||||
ldi RED,0
|
||||
ldi GREEN,16
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f2:
|
||||
ldi RED,8
|
||||
ldi GREEN,8
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f3:
|
||||
ldi RED,16
|
||||
ldi GREEN,0
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f4:
|
||||
ldi RED,32
|
||||
ldi GREEN,0
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f5:
|
||||
ldi RED,32
|
||||
ldi GREEN,0
|
||||
ldi BLUE,16
|
||||
rjmp nov
|
||||
f6:
|
||||
ldi RED,32
|
||||
ldi GREEN,8
|
||||
ldi BLUE,8
|
||||
rjmp nov
|
||||
f7:
|
||||
ldi RED,32
|
||||
ldi GREEN,16
|
||||
ldi BLUE,0
|
||||
rjmp nov
|
||||
|
||||
f8:
|
||||
ldi RED,32
|
||||
ldi GREEN,32
|
||||
ldi BLUE,0
|
||||
rjmp nov
|
||||
f9:
|
||||
ldi RED,16
|
||||
ldi GREEN,32
|
||||
ldi BLUE,0
|
||||
rjmp nov
|
||||
f10:
|
||||
ldi RED,8
|
||||
ldi GREEN,32
|
||||
ldi BLUE,8
|
||||
rjmp nov
|
||||
f11:
|
||||
ldi RED,0
|
||||
ldi GREEN,32
|
||||
ldi BLUE,16
|
||||
rjmp nov
|
||||
|
||||
nov:
|
||||
cp cnt,RED
|
||||
brne notr
|
||||
sbi portb,0
|
||||
|
||||
notr: cp cnt,GREEN
|
||||
brne notg
|
||||
sbi portb,1
|
||||
|
||||
notg: cp cnt,BLUE
|
||||
brne notb
|
||||
sbi portb,2
|
||||
notb:
|
||||
reti
|
||||
|
||||
+133
@@ -0,0 +1,133 @@
|
||||
;pracuje jako 5-ti bitovy binarni citac
|
||||
;vystupy 3 a 4 jsou prohozene kvuli desce
|
||||
.device attiny13
|
||||
.def cnt=r18
|
||||
.def RED=r19
|
||||
.def GREEN=r20
|
||||
.def BLUE=r21
|
||||
.def chc=r22
|
||||
.def faze=r23
|
||||
|
||||
.org 0x0000 ;RESET
|
||||
RJMP RESET ;skok na start po resetu
|
||||
.org 0x0006 ;TC0 overflow
|
||||
RJMP CASOVAC
|
||||
.org 0x0007
|
||||
rjmp casovac
|
||||
|
||||
.org 0x0010
|
||||
RESET:
|
||||
ldi r16,low(RAMEND) ;nastavi stack pointer
|
||||
out SPL,r16
|
||||
|
||||
cli ;zakazat vsechna preruseni
|
||||
|
||||
ldi r16,0b00011111 ;výstupní = 1
|
||||
out DDRB,r16
|
||||
|
||||
ldi r16,0 ;vypnout PullUp
|
||||
out PORTB,r16
|
||||
|
||||
ldi r16,0b00000011 ;TC0 prescaler na 64
|
||||
out TCCR0B,r16 ;4800000/32
|
||||
|
||||
ldi r16,0b00000010 ;TC0 je v rezimu CTC
|
||||
out TCCR0A,r16
|
||||
|
||||
ldi r16,20 ;overflow 22
|
||||
out OCR0A,r16 ;
|
||||
|
||||
in r16, TIMSK0 ;interrupt enable
|
||||
ORI r16, 0b00000100
|
||||
out timsk0,r16
|
||||
|
||||
ldi RED,0 ;R
|
||||
ldi GREEN,16 ;G
|
||||
ldi BLUE,32 ;B
|
||||
clr cnt
|
||||
clr chc
|
||||
clr faze
|
||||
|
||||
sei ;zapnout globalne interrupt
|
||||
|
||||
LOOP:
|
||||
rjmp LOOP ;skok na loop
|
||||
|
||||
CASOVAC:
|
||||
inc cnt
|
||||
|
||||
cpi cnt,32
|
||||
brne nov
|
||||
|
||||
clr cnt
|
||||
cbi portb,0
|
||||
cbi portb,1
|
||||
cbi portb,2
|
||||
|
||||
inc chc
|
||||
cpi chc,255
|
||||
brne nov
|
||||
inc faze
|
||||
cpi faze,6
|
||||
brne fazenov
|
||||
clr faze
|
||||
fazenov:
|
||||
cpi faze,0
|
||||
breq f0
|
||||
cpi faze,1
|
||||
breq f1
|
||||
cpi faze,2
|
||||
breq f2
|
||||
cpi faze,3
|
||||
breq f3
|
||||
cpi faze,4
|
||||
breq f4
|
||||
cpi faze,5
|
||||
breq f5
|
||||
|
||||
f0:
|
||||
ldi RED,0
|
||||
ldi GREEN,32
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f1:
|
||||
ldi RED,0
|
||||
ldi GREEN,0
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f2:
|
||||
ldi RED,32
|
||||
ldi GREEN,0
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f3:
|
||||
ldi RED,32
|
||||
ldi GREEN,0
|
||||
ldi BLUE,10
|
||||
rjmp nov
|
||||
f4:
|
||||
ldi RED,32
|
||||
ldi GREEN,32
|
||||
ldi BLUE,0
|
||||
rjmp nov
|
||||
f5:
|
||||
ldi RED,0
|
||||
ldi GREEN,32
|
||||
ldi BLUE,0
|
||||
rjmp nov
|
||||
|
||||
nov:
|
||||
cp cnt,RED
|
||||
brne notr
|
||||
sbi portb,0
|
||||
|
||||
notr: cp cnt,GREEN
|
||||
brne notg
|
||||
sbi portb,1
|
||||
|
||||
notg: cp cnt,BLUE
|
||||
brne notb
|
||||
sbi portb,2
|
||||
notb:
|
||||
reti
|
||||
|
||||
+156
@@ -0,0 +1,156 @@
|
||||
;pracuje jako 5-ti bitovy binarni citac
|
||||
;vystupy 3 a 4 jsou prohozene kvuli desce
|
||||
.device attiny13
|
||||
.def cnt=r18
|
||||
.def RED=r19
|
||||
.def GREEN=r20
|
||||
.def BLUE=r21
|
||||
.def chc=r22
|
||||
.def faze=r23
|
||||
|
||||
.org 0x0000 ;RESET
|
||||
RJMP RESET ;skok na start po resetu
|
||||
.org 0x0006 ;TC0 overflow
|
||||
RJMP CASOVAC
|
||||
.org 0x0007
|
||||
rjmp casovac
|
||||
|
||||
.org 0x0010
|
||||
RESET:
|
||||
ldi r16,low(RAMEND) ;nastavi stack pointer
|
||||
out SPL,r16
|
||||
|
||||
cli ;zakazat vsechna preruseni
|
||||
|
||||
ldi r16,0b00011111 ;výstupní = 1
|
||||
out DDRB,r16
|
||||
|
||||
ldi r16,0 ;vypnout PullUp
|
||||
out PORTB,r16
|
||||
|
||||
ldi r16,0b00000011 ;TC0 prescaler na 64
|
||||
out TCCR0B,r16 ;4800000/32
|
||||
|
||||
ldi r16,0b00000010 ;TC0 je v rezimu CTC
|
||||
out TCCR0A,r16
|
||||
|
||||
ldi r16,20 ;overflow 22
|
||||
out OCR0A,r16 ;
|
||||
|
||||
in r16, TIMSK0 ;interrupt enable
|
||||
ORI r16, 0b00000100
|
||||
out timsk0,r16
|
||||
|
||||
ldi RED,0 ;R
|
||||
ldi GREEN,16 ;G
|
||||
ldi BLUE,32 ;B
|
||||
clr cnt
|
||||
clr chc
|
||||
clr faze
|
||||
|
||||
sei ;zapnout globalne interrupt
|
||||
|
||||
LOOP:
|
||||
rjmp LOOP ;skok na loop
|
||||
|
||||
CASOVAC:
|
||||
inc cnt
|
||||
|
||||
cpi cnt,32
|
||||
breq ov
|
||||
rjmp nov
|
||||
ov:
|
||||
clr cnt
|
||||
cbi portb,0
|
||||
cbi portb,1
|
||||
cbi portb,2
|
||||
|
||||
inc chc
|
||||
cpi chc,150
|
||||
brne nov
|
||||
inc faze
|
||||
cpi faze,9
|
||||
brne fazenov
|
||||
clr faze
|
||||
fazenov:
|
||||
cpi faze,0
|
||||
breq f0
|
||||
cpi faze,1
|
||||
breq f1
|
||||
cpi faze,2
|
||||
breq f2
|
||||
cpi faze,3
|
||||
breq f3
|
||||
cpi faze,4
|
||||
breq f4
|
||||
cpi faze,5
|
||||
breq f5
|
||||
cpi faze,6
|
||||
breq f6
|
||||
cpi faze,7
|
||||
breq f7
|
||||
cpi faze,8
|
||||
breq f8
|
||||
|
||||
f0:
|
||||
ldi RED,0
|
||||
ldi GREEN,32
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f1:
|
||||
ldi RED,0
|
||||
ldi GREEN,16
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f2:
|
||||
ldi RED,16
|
||||
ldi GREEN,0
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f3:
|
||||
ldi RED,32
|
||||
ldi GREEN,0
|
||||
ldi BLUE,32
|
||||
rjmp nov
|
||||
f4:
|
||||
ldi RED,32
|
||||
ldi GREEN,0
|
||||
ldi BLUE,16
|
||||
rjmp nov
|
||||
f5:
|
||||
ldi RED,32
|
||||
ldi GREEN,16
|
||||
ldi BLUE,0
|
||||
rjmp nov
|
||||
|
||||
f6:
|
||||
ldi RED,32
|
||||
ldi GREEN,32
|
||||
ldi BLUE,0
|
||||
rjmp nov
|
||||
f7:
|
||||
ldi RED,16
|
||||
ldi GREEN,32
|
||||
ldi BLUE,0
|
||||
rjmp nov
|
||||
f8:
|
||||
ldi RED,0
|
||||
ldi GREEN,32
|
||||
ldi BLUE,16
|
||||
rjmp nov
|
||||
|
||||
nov:
|
||||
cp cnt,RED
|
||||
brne notr
|
||||
sbi portb,0
|
||||
|
||||
notr: cp cnt,GREEN
|
||||
brne notg
|
||||
sbi portb,1
|
||||
|
||||
notg: cp cnt,BLUE
|
||||
brne notb
|
||||
sbi portb,2
|
||||
notb:
|
||||
reti
|
||||
|
||||
Reference in New Issue
Block a user