Ik heb een microproccor de 16F876A en heb hierop een 4MHz kristal aangesloten.

Nu maak ik één poort hoog op (poortA) op het velleman kitje VM111.

Maar nu wil ik de tijd zelf bepalen, en volgens mijn berekeningen moet dit zijn 4000 000 000 /4 = 1000 000 000
oftwel 1/1000 000 000 is 1ns per instructie.

Maar nu wil ik kijken of it klopt op de scoop, maar krijg er 12,5 us uit ...

De code

porta EQU 05h
portb EQU 06h
portc EQU 07h

teller EQU 40h
teller2 EQU 41h
teller3 EQU 42h
instelporta EQU 85h
instelportb EQU 86h
instelportc EQU 87h

ORG 00h ;beginadres kiezen

BSF 03,5 ;kies bank 1
CLRF instelporta ;
BCF 03,5 ;kies bank 0
CALL knipperkeer

led1 MOVLW 01h MOVWF porta
CALL tijdjewachten
MOVLW 00h
MOVWF porta ; zet alle leds weer uit dus LED0
CALL tijdjewachten

DECFSZ teller3, 1
GOTO led1
CALL knipperkeer

led2 MOVLW 02h
MOVWF porta ;zet 1 ledje aan
CALL tijdjewachten

MOVLW 00h
MOVWF porta
CALL tijdjewachten

DECFSZ teller3, 1
GOTO led2
CALL knipperkeer
GOTO led1

;---------SUB ROUTINES------------------
knipperkeer MOVLW 05h
MOVWF teller3
RETURN

tijdjewachten
MOVLW 002h
MOVWF teller2

verder MOVLW 002h
MOVWF teller

opnieuw DECFSZ teller, 1
GOTO opnieuw

DECFSZ teller2, 1
GOTO verder

RETURN

ps is een stukje van het politieproject.... (ben net weer begonnen dus moet het weer even opfrissen)

Bij voorbaat dank,

ik ben geen ster in asm maar de fout die je in je berekning al maakt is dat je 4mhz als 4 miljard ziet, terwijl het 4 miljoen is. dus ipv 1 miljard instructies is het 1 miljoen instructies per seconde.

@erik, je bent me net voor, maar inderdaad:

4MHz = 4000000 en niet 4000000000

En tussen het knipperen zitten meerdere instructies dus het zal ook langer duren dan 1 instructie.