Dnes som vytvoril z toho čo už viem "svoj" prvý program. Je jednoduchý ako moje vedomosti
Skrátka prihadzujem bit do registra a keď dosiahnem 0xFF, začnem bit odčítavať do nuly. Register je PORTB v režime výstupu a na ňom sú ledky.
Pred tým som už čosi skúšal s hadíkom a to funguje v pohode, takže PIC16F88 je OK.
Môj program však nejde! Aké prekvapivé, však?
Problém je v tom, že v simulácii sa to javí OK, ale v PICku mi to dôjde po výstup RB6, ktorý sa síce prehodí na log1, ale keď má prísť ďalší bit, akoby sa to resetovalo, ide to od začiatku.
Neviete prosím kde som spravil chybu?
Kód: Vybrať všetko
;------------------------------------------------------------------------------
; PROCESSOR DECLARATION
;------------------------------------------------------------------------------
LIST p=16F88
#INCLUDE <P16F88.INC>
;------------------------------------------------------------------------------
; CONFIGURATION WORD SETUP
;------------------------------------------------------------------------------
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
;------------------------------------------------------------------------------
; VARIABLE DEFINITIONS
;------------------------------------------------------------------------------
CBLOCK 0x20
COUNT_LOOP
ENDC
;------------------------------------------------------------------------------
; RESET VECTOR
;------------------------------------------------------------------------------
RESET ORG 0x0000 ; processor reset vector
;------------------------------------------------------------------------------
; INICIALIZÁCIA PORTOV
;------------------------------------------------------------------------------
BSF STATUS, RP0
CLRF TRISB
BCF STATUS, RP0
CLRF COUNT_LOOP
CLRF PORTB
;------------------------------------------------------------------------------
; VLASTNÝ PROGRAM
;------------------------------------------------------------------------------
INCR
INCF PORTB, f
CALL WAIT_LOOP
MOVLW 0XFF
XORWF PORTB, W
BTFSS STATUS, Z
GOTO INCR
DECR
DECF PORTB, f
CALL WAIT_LOOP
CLRW
XORWF PORTB, W
BTFSS STATUS, Z
GOTO DECR
GOTO INCR
;------------------------------------------------------------------------------
; ČAKACIA SĽUČKA
;------------------------------------------------------------------------------
WAIT_LOOP
MOVLW 0XFF
MOVWF COUNT_LOOP
LOOP_DELAY
DECFSZ COUNT_LOOP, f
GOTO LOOP_DELAY
RETURN
END