Code:
LIST P=16F84, R=DEC
INCLUDE "P16F84.INC"
#DEFINE BANK0 BCF STATUS,5
#DEFINE BANK1 BSF STATUS,5
__CONFIG _CP_OFF & _XT_OSC & _PWRTE_ON &_WDT_OFF ;CODE PROTECTION-OFF
;OSCILATOR=XT
;POWER UP TIMER-ON
;WATCHDOG TIMER-OFF
CBLOCK 0X0C
BR0
BR1
BR2
NBR0
NBR1
NBR2
ENDC
ORG 0X00
GOTO MAIN
MAIN:
BANK1
MOVLW B'01111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BANK0
CLRF PORTA
CLRF PORTB
MOVLW D'4'
MOVWF NBR2
MOVLW D'3'
MOVWF NBR1
MOVLW D'2'
MOVWF NBR0
CALL PAUZA
LOOP: GOTO LOOP
PAUZA:
MOVF NBR0,W
MOVWF BR0
P3: MOVF NBR1,W
MOVWF BR1
P2: MOVF NBR2,W
MOVWF BR2
P1: DECFSZ BR2,F
GOTO P1
DECFSZ BR1,F
GOTO P2
DECFSZ BR0,F
GOTO P3
RETURN
END
Ovo sam izvadio iz neke stare arhive mozda ce biti od pomoci.
registri BR0, BR1, i BR2 ne smeju imati vrednosti 0 ili 1
Broj ciklusa u rutini pauza se mogu izracunati:
6+(BR0*(BR1*((BR2-1)*3)))+(BR0*(BR1*7))-(BR0*3)+((BR0-1)*7)+2
Konkretno sa ovim vrednostima rezultat je 105
call i return nisu uracunati
Pozdrav!