Zdravím pánové, dělám program v prostředí WinAVR a snažím se sestrojit program pro ATtiny2313 (později úprava pro ATtiny13) který by měřil délku impulzu servo signálu a v závyslosti na tom sepnul např LED diodu na nějakém portu. Prostě náhrada řídící jednotky do meho rc auta pro rozsvěcování světel příp. klakson.
Impulz již dokážu změřit a jeho hodnotu mám v R31. Po přepočítání do dek. soustavy je tam hodnota 11-19. Nyní se mi však nedaří zapsat část programu kdy by se při splnění podmínky “R31<=13” nastavil bit “PORT,0” např do log0 a při splnění podmínky “R31>=17” by se nastavil bit “PORT,1” např do log0. Při splnění podmínky “R31==15” by se nastavily bity “PORT,0” a “PORT,1” do log1. Snažím se to sepsat již asi hodinu a nedaříse, kdyby někdo poradil bud velice vděčný
[code].DEVICE ATtiny2313 ; volba typu mikroprocesoru ( instrukční sada)
.LOFUSE 0B01100010
.HIFUSE 0B11010001
; code segment - programová část
LDI R16, $FF ; do registru r16 data 255
OUT DDRB, R16 ; nastaví celý port d jako výstupní
OUT PORTB, R16 ; zapíše na port d 255 ( zhasne led )
LDI R16, 0 ; do registru r16 data 0
OUT DDRD, R16 ; nastaví celý port b jako vstupní
LDI R16, $FF ; do registru r16 data 255
OUT PORTD, R16 ; zapíše na port d 255 ( zhasne led )
;**********hlavní program *********************************************************
ZAC: SBIS PIND,0 ;preskoci nasledujci instrukci je-li na
rcall zobraz ; PIND,0 LOG 1
SBIC PIND,1 ;preskoci nasledujci instrukci je-li na
rcall pocitej ; PIND,0 LOG 0
rjmp zac
;podprogramy**********************************************
zobraz: OUT PORTB, R31 ;<<<< místo tohoto kodu
;porovnávání registru
SBIS PIND,0
rjmp zobraz
LDI R31, 0
RET
pocitej:inc R31
RCALL DELAY
RET
delay: LDI R18,89 ;přesně [ms]: 0,1001
LDI R17,1
LDI R16,1
DEC R16
BRNE PC-1
DEC R17
BRNE PC-4
DEC R18
BRNE PC-7
RET
.EXIT
[/code]
něco jsem našel:
ori r18,bitmask*(c1<=c2)+1
ale hlásí mi to chybu
neznámý symbol Bitmask*
administrator: přesunuto z "Programátory"