Zie code.
Met picsimulator werkt het niet zoals ik wil.
Wat doe ik hier fout??
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;eerste test om een ledje aan te doen
;op een pic16f628a
;geprogt in ASM
;ledje komt aan poort b0
;ledje moet aangaan wanneer poort a0 hoog wordt en visa versa
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Declaraties
status equ 03h
porta equ 05h
portb equ 06h
trisa equ 85h
trisb equ 86h
;Poorten instellen
bsf status,5 ;Switch naar bank 1 voor instellen trisa en trisb
bsf trisa,0 ;Poort a0 wordt een input
bcf trisb,0 ;Poort b0 wordt een output
bcf status,5 ;Switch naar bank 0
;Hoofd programma
start ;label
btfss porta,0 ;Kijk wat de toestand is van poort a0, als poort a0=0 dan doorgaan met programma anders 1 stap overslaan?
goto start ;Ga weer naar start
bsf portb,0 ;Zet het ledje aan
btfsc porta,0 ;Kijk wat de toestand is van poort a0, als poort a0=1 dan doorgaan met programma anders 1 stap overslaan?
goto start ;Ga weer naar start
bcf portb,0 ;Zet het ledje uit
goto start ;Ga weer naar start
end ;Einde programma
A0 is een analoge ingang, zet dit eens in het begin van de code (bij poorten instellen):
movlw 0x07
movwf CMCON
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Beter om i.p.v. register declaraties gewoon
#include <p16f828a.inc>te gebruiken. (Dan kun je ook bsf status,rp0 gebruiken ipv. status,5...)
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Nog een aanrader: leesvoer (bijvoorbeeld het gebruik van CBLOCK).
Lees ook eens de include-file van de processor door (P16F628A.INC onder windows) en gebruik die constanten.
[edit]
Hm, arco was me 48 seconden voor 
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Het LEDje knippert met de frequentie van het aangeboden signaal op PORTA. 0 
De logica klopt min of meer.
Alleen zit het qua structuur niet zo berijpelijk in elkaar.
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Je hebt gelijk, overheen gelezen.
Wel vreemd programma, waarom plaats je de LED niet rechtstreeks op het signaal dat op A0 binnenkomt?
Of is het gewoon om ASM te oefenen? 
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Yes: PIC d'r uit, signaal direct aan de R+LED en Bob's your uncle 
't kan ook nog korter:
; --- incomplete code verwijderd...
start
btfss porta,0
bcf portb,0
btfsc porta,0
bsf portb,0
goto start
[Bericht gewijzigd door picsels op (24%)]
Het is idd om te oefenen in asm.
Heb picsels progje ook getest in picsimulator en doet ook niet wat ik wil.
Ledje moet aan gaan als a0 hoog is en uit als a0 laag is.
[Bericht gewijzigd door ZAQ op (66%)]
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Tuurlijk: als jouw versie niet werkt, werkt de verkorte vorm ook niet.
Ik ben geen kenner van picsimulator.
Heb je gecontroleerd of PORTB.0 überhaupt verandert van 1 naar 0 en omgekeerd?
Als dat gebeurt moet je LEDje dús ook aan en uit aan.
En heb je de opmerkingen van Arco en Infrarood al verwerkt?
[Edit]
Heb even snel naar die picsimulator gekeken.
Matige software, maar goed.
Je moet gebruik maken van de 'Signal Generator'.
Kennelijk kun je alleen daarmee het inkomende signaal van een poort aanpassen.
Als je deze signal generator (Tools/Signal Generator) op 50 clock cycles zet en 50% duty cycle, zul je zien dat je ledje van tijd tot aan en uit gaat.
Simpelweg klikken op PORTA.0 in het IDE venster leidt niet tot aanpassing van het input signaal.
[Edit 2]
Als je voor 'Microcontroller view' kiest, kun je ook de poorten individueel aan en uitzetten. A0 in dit geval.
Houd er rekening mee dat er een logische fout in je programma zit!
Het voorbeeldje dat ik hierboven heb gegeven heeft die fout niet (meer).
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Hoe bedoel je?
In bovenstaand voorbeeld heb ik ook even gauw picsimulator gedownload en geprobeerd.
En al proberend bleek dat je met die 'Microcontroller view' het door jou gewenste resultaat kreeg.
In de help is daar niets van terug te vinden.
[Bericht gewijzigd door picsels op (11%)]
@picsels
Ik bedoel, hoe test jij je programma's droog. Dus niet met picsim.
Ik wil dus mijn progje testen op de pc waar ik het progje op schrijf zonder het eerst in een pic te moeten laden.
Turbokeu
Golden Member
I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"
Labcenter Electronics Proteus VSM.
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Op 16 oktober 2007 23:40:21 schreef ZAQ:
@picsels
Ik bedoel, hoe test jij je programma's droog. Dus niet met picsim.
Een hoop programmeerervaring (beroepsmatig) dus sowieso minder trial and error 
(Zolang P+ doet wat het moet doen...)
Maar ik werk altijd vanuit een prototype op breadboard en via ICSP.
't Is hobby, dus ik wil snel resultaat en dat werkt prima met een testopstelling.
Ik ben geen hardcore electronica specialist. Dus mijn 'uitdaging' zit hem meestal in de periferie.
Als die werkt is het programma kinderspel (min of meer).
