Dvojita podminka v ASM PIC16F84A
Petr Krc
pekr
Středa Březen 17 14:27:35 CET 2004
Sa?a (Alexandra) wrote:
> Nasledujici kousek kodu by mel pri dosazeni nuly v registru JEDNOU pipnout.
> Jenze ono to pipne 3 :( Ale pocet pipnuti neni stejny, kdyz je rychlejsi
> pipaci smycka, tak to stihne i 5x.
> Plan je ze kdyz se pipne, tak se nastavi priznak PRIZ,0 na log1, tim se
> zakaze dalsi pipani. Po dosazeni Seconds,1=1 se pipani zase povoli prechodem
> PRIZ,0 zpet do log 0.
> ...
> dalsi1 call PIP ; Jestli muzes, tak pipni
> ; (take se zakaze pipani)
> hlav btfss Seconds,1 ; Jsou 2 sekundy ?
> bcf priz,0 ; ANO -> povol pipani
Tipl bych, ze v PIP sice zakazes pipani, ale hned potom testujes
bit 1 v Seconds, ktery bude pravdepodobne stale 0, takze to pipani
zase povolis. Tedy ten komentar 'Jsou 2 sekundy ? a ANO' zrejme
neodpovida testovane podmince. Mozna by stacilo zamenit btfss
za btfsc, ale to uz musis vedet ty.
--
Regards
Petr Krc
> A ted ten kousek kodu:
> .
> .
> .
>
> movf Seconds,w ; Seconds do W
> sublw .0 ; odecti od W
> "0"
> btfsc STATUS,Z ; Je Z=0 ?
> goto dalsi ; ANO
> goto hlav ; NE
> dalsi btfss priz,0 ; je povoleno
> PIPANI ?
> goto dalsi1 ; ANO
> goto hlav ; NE
> dalsi1 call PIP ; Jestli muzes,
> tak pipni (take se zakaze pipani)
> hlav btfss Seconds,1 ; Jsou 2 sekundy ?
> bcf priz,0 ; ANO ->
> povol pipani
> .
> .
> .
>
> ;/////////////////////////////////////////////////////////
> ;// Pipnuti na repracku //
> ;/////////////////////////////////////////////////////////
> PIP movlw .255
> movwf TMP2 ; doba zvukoveho signalu
> loop4 movlw .80
> movwf TMP ; ton zvuku, doba trvani 0
> loop2 bcf REPRO
> decfsz TMP,f
> goto loop2
> movlw .80
> movwf TMP ; ton zvuku, doba trvani
> loop3 bsf REPRO
> decfsz TMP,f
> goto loop3
> decfsz TMP2,f
> goto loop4
> bsf priz,0
> return ; navrat do hlavni smycky
Další informace o konferenci Hw-list