#include #include Start: clrf PORTD clrf Counter1 clrf Counter2 Main: movlw 0xff ;minden bit értéke legyen 1 movwf PORTD ;elozo érték kiadása a kimenetre =minden LED világít. call Delay ;0,5s késleltetés clrf PORTD ;kimenetek értékeinek törlése call Delay ;0,5s késleltetés btfss PORTB,0 ;nyomógomb figyelése, ha megnyomom következo sort kihagyja goto Main call Delay ;pergésmentesítés céljából 0,5s késleltetés call upcount ;felfelé számláló szubrutin call Delay goto Main upcount: incf Counter1 ;Ebbe a tárolóba fogja számolni felfelé a biteket movlw Counter1 ;itt adja ki counter1 nek az értéket, amit elobb számolt (?) movwf PORTD ;kihelyezi a kimenetre az értéket, tehát binárisan fog felfelé pötyögni a 8 led btfsc PORTB,0 ;ha elengedem a nyomógombot nem kezdi el megint a számlálást, hanem visszatér. goto $-4 ;ha nem történik gomb elengedés elolrol kezdi (?) Kell ez ide? goto downcount ;ha történt gomb elengedés átlép a downcount szubrutinba (azért goto és nem call, hogy ne ide térjen vissza returnnel) downcount: decf Counter2 ;dekrementálja a counter 2 értékét, tehát 255-tol pörög visszafelé movlw Counter2 ;itt adja ki counter1 nek az értéket, amit elobb számolt (?) movwf PORTD ;kihelyezi a kimenetre az értéket, tehát binárisan fog felfelé pötyögni a 8 led btfss PORTB,0 ;amennyiben megnyomom a gombot visszatér a fo programba, amennyiben nem, elolrol kezdi a számlálást lefelé? goto $-4 Return Delay: decfsz Delay1,f goto $-1 decfsz Delay2,f goto Delay return end