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