NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Atmega128 timer a ctc na displeji

Aktivity
Avatar
OxyK
Člen
Avatar
OxyK:30.1.2017 12:41

Ahoj, mám menší problém.
Dělám ve škole program, který běží na 4 displejích (Zadání: Vytvořte program v JSA, který bude zobrazovat na displeji postupně na všech pozicích čísla 1, 2, 3. Pro zpoždění využijte časovač.)
Každopádně poprvé čísla proběhnou pod timerem a podruhé pod CTCčkem. Můj program vypadá takto:
Je plně funkční a vypadá to, že dělá to, co má dělat, ale nevím, zda to mam pod timerem a CTCčkem (jestli je mam dobře naprogramovaný)
Děkuju za odpověď
PS: Dělam to v AVR studio, jazyk assembler

.NOLIST
.include "m128def.inc"
.DEF A=r16
.LIST
.CSEG

ldi R16, 0xFF
out DDRD, R16
LDI R16, LOW(RAMEND)
OUT SPL, R16
LDI R16, HIGH(RAMEND)
OUT SPH, R16

ldi r23, 0xFF
ldi r24, 0

ldi r17, 0xFF
out DDRB, r17
ldi r16, 0b00000111
out TCCR0, r16

start:
ldi r20,0b11111001
ldi r19,0b11110011
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b11111001
ldi r19,0b11110111
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b11111001
ldi r19,0b11111011
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b11111001
ldi r19,0b11111111
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10100100
ldi r19,0b11110011
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10100100
ldi r19,0b11110111
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10100100
ldi r19,0b11111011
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10100100
ldi r19,0b11111111
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10110000
ldi r19,0b11110011
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10110000
ldi r19,0b11110111
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10110000
ldi r19,0b11111011
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10110000
ldi r19,0b11111111
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10011001
ldi r19,0b11110011
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10011001
ldi r19,0b11110111
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10011001
ldi r19,0b11111011
out PORTB, r20
out PORTD, r19
rcall cekej

ldi r20,0b10011001
ldi r19,0b11111111
out PORTB, r20
out PORTD, r19
rcall cekej
rjmp start1

start1:
com r23
ldi r20,0b11111001
ldi r19,0b11110011
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b11111001
ldi r19,0b11110111
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b11111001
ldi r19,0b11111011
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b11111001
ldi r19,0b11111111
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10100100
ldi r19,0b11110011
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10100100
ldi r19,0b11110111
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10100100
ldi r19,0b11111011
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10100100
ldi r19,0b11111111
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10110000
ldi r19,0b11110011
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10110000
ldi r19,0b11110111
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10110000
ldi r19,0b11111011
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10110000
ldi r19,0b11111111
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10011001
ldi r19,0b11110011
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10011001
ldi r19,0b11110111
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10011001
ldi r19,0b11111011
out PORTB, r20
out PORTD, r19
rcall cekej1

ldi r20,0b10011001
ldi r19,0b11111111
out PORTB, r20
out PORTD, r19
rcall cekej1
rjmp start

cekej:
ldi r19, 10
cekejA:
plupe:
in a, TIFR
ANDI A, 0b00000010
BREQ PLUPE
ldi A, 0b00000010
out TIFR, A
dec r19
brne cekejA

ret

cekej1:
add r23, r24
brne skok
ldi r17, 0b00001111
out TCCR0, r17
ldi r22,50
out OCR0, r22
ldi r19,20
skok:
add r23, r24
BREQ ctc1
ldi r17, 0b00000111
out TCCR0, r17
ldi r19,5

ctc1:ldi r19, 25

ret

Editováno 30.1.2017 12:42
 
Odpovědět
30.1.2017 12:41
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na OxyK
ostrozan:30.1.2017 18:41

Proč asembler?
V C je to na pár řádků

 
Nahoru Odpovědět
30.1.2017 18:41
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na ostrozan
Jan Vargovský:1.2.2017 0:14

... Vytvořte program v JSA ...

 
Nahoru Odpovědět
1.2.2017 0:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.