ik heb geprobeerd een stukje assembly te schrijven die niets anders doet dan met een knopje(1 ingangspin) een led (1 uitgangspin) aan en uit te schakelen.
Men code werkt helaas niet, en ik vind men fout niet. Kan er hem iemand es bekijken?
Ik veronderstel dat dit een veel gebruikte functie is dus als er mensen zijn met een betere code, zou die erg welkom zijn.
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
cblock 0x20
Display ; define a variable to hold the display
endc
org 0
Start:
bsf STATUS,RP0 ; select bank1
bcf STATUS,RP1
clrf TRISC ; PortC all output
movlw 0xFF ; PortA all input
movwf TRISA
bcf STATUS,RP0 ; back to bank0
bcf STATUS,RP1
bcf STATUS,RP0 ; select bank2
bsf STATUS,RP1
movlw 0x00 ; PortA is digital
movwf ANSEL
bcf STATUS,RP0 ; back to bank0
bcf STATUS,RP1
clrf Display
Werking:
btfsc Display,0
goto LEDON
LEDOFF:
btfsc PORTA,0 ; check switch
bsf Display,0 ; LED0 on
goto Refresh
LEDON:
btfsc PORTA,0 ; check switch
bcf Display,0 ; LED0 off
goto Refresh
Refresh:
movf Display,w ; Copy display to LEDs
movwf PORTC
goto Werking
endfree_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
dergelijke code moet er zo uit zien
1) is de switch laag ?
- neen -> ga naar 1
- ja -> ga naar 2
2) inverteer de led ( led = not ( led ) )
3) is de switch hoog ?
- neen -> ga naar 3
- ja -> ga naar 1
na het detecteren van een toets moet je wachten tot de toets terug losgelaten word.
FullPower
De grootste moeilijkheden liggen daar waar we ze niet zoeken. [Goethe]