Code:
LIST P=16F84A
;
PORTB EQU 6
TRISB EQU 86H
OPTREG EQU 81H
STATUS EQU 3
CARRY EQU 0
RP0 EQU 5
RBPU EQU 7
LIMIT EQU 3 ;Pozicija najdalje led diode
;
BSF STATUS,RP0 ;Pristupam visokoj memoriji
MOVLW 0DH
MOVWF OPTREG^80H ;Podesi preskaler na (1:32) ka WDT
MOVLW b'11110000' ;RB0-3 izlazni, RB4-7 ulazni
MOVWF TRISB
BCF OPTREG, RBPU ;Ukljuci pullup otpornike na RB ulazima
BCF STATUS, RP0 ;Vrati se na nisku memoriju
CLRF PORTB ;Postavi sve pinove PORTB na nulu
BCF STATUS, CARRY ;Ocisti bit prenosa (ako ga ima)
BSF PORTB, 0
LEFT SLEEP ;Sacekaj WDT timeout
BTFSS PORTB, 4 ;Ako nije pritisnut, idi dalje
GOTO RIGHT
RLF PORTB, F ;Setaj led diode ulevo
BTFSS PORTB, LIMIT ;Ako je dosao do kraja, kreni ponovo
GOTO LEFT
CLRF PORTB
BSF PORTB, 0
GOTO LEFT
RIGHT SLEEP
BTFSS PORTB, 4 ;Ako nije pritisnut, idi dalje
GOTO LEFT
RRF PORTB, F ;Setaj led diode udesno
BTFSS PORTB, 0
GOTO RIGHT
CLRF PORTB
BSF PORTB, 3
GOTO RIGHT ;Pocni ponovo
END
LIST P=16F84A
;
PORTB EQU 6
TRISB EQU 86H
OPTREG EQU 81H
STATUS EQU 3
CARRY EQU 0
RP0 EQU 5
RBPU EQU 7
LIMIT EQU 3 ;Pozicija najdalje led diode
;
BSF STATUS,RP0 ;Pristupam visokoj memoriji
MOVLW 0DH
MOVWF OPTREG^80H ;Podesi preskaler na (1:32) ka WDT
MOVLW b'11110000' ;RB0-3 izlazni, RB4-7 ulazni
MOVWF TRISB
BCF OPTREG, RBPU ;Ukljuci pullup otpornike na RB ulazima
BCF STATUS, RP0 ;Vrati se na nisku memoriju
CLRF PORTB ;Postavi sve pinove PORTB na nulu
BCF STATUS, CARRY ;Ocisti bit prenosa (ako ga ima)
BSF PORTB, 0
LEFT SLEEP ;Sacekaj WDT timeout
BTFSS PORTB, 4 ;Ako nije pritisnut, idi dalje
GOTO RIGHT
RLF PORTB, F ;Setaj led diode ulevo
BTFSS PORTB, LIMIT ;Ako je dosao do kraja, kreni ponovo
GOTO LEFT
CLRF PORTB
BSF PORTB, 0
GOTO LEFT
RIGHT SLEEP
BTFSS PORTB, 4 ;Ako nije pritisnut, idi dalje
GOTO LEFT
RRF PORTB, F ;Setaj led diode udesno
BTFSS PORTB, 0
GOTO RIGHT
CLRF PORTB
BSF PORTB, 3
GOTO RIGHT ;Pocni ponovo
END
Kada ovo ubacim u moj mikrokontroler, on pali 1, 2, 3 led diodu, dok 4. nece da upali, a pritom i ne gasi one prethodno upaljene led diode. Znaci paljenje ide ovako: 1, 12, 123, pa se ponovo vraca na 1, 12, 123... Posle pritiska na taster, onda pocinje 4, 43, 432, i opet ponovo s tim sto opet nikad ne dodje do 1. led diode, i ne gasi prethodne.
Moje je pitanje u cemu je ovde problem i sta je resenje... Nemojte mi samo davati savete tipa uradi preko TMR0, ili interapta i sl... znaci interesuje me neko resenje na ovaj nacin.