Ik heb dit programmatje geschreven in basic:

'De Pic Declaren
Device 16F876

'LCD Declareen
Declare LCD_TYPE ALPHA 'Alpha Numeric Display
Declare LCD_LINES 2 'Aantal lijnen op Display
'Poorten
Declare LCD_RSPIN PortC.0 'RS pin instellen
Declare LCD_ENPIN PortC.1 'E Pin Instellen
Declare LCD_DTPin PortC.4 'Poort waar data heen moet

Declare LCD_INTERFACE 4

'Inputs Declaren
Input PortA 'Knoppen en sensoren input

'OutPuts Declaren
Output PortB

DelayMs 200 'Wachten tot LCD klaar is

Dim Scartie As Bit

Scartie = 0

Repeat 'De Main Loop

Gosub ButtonCheck

Until Scartie = 1 'End van de loop !!mag nooit gebeuren!!

ButtonCheck: 'kijken of er op knoppen wordt gedrukt

If PortA.0 = 1 then
Cls
DelayMs 20
Print "Settings"
Endif

If PortA.1 = 1 then
Cls
DelayMs 20
Print "Quit"
Endif

If PortA.2 = 1 then
Cls
DelayMs 20
Print "Down"
Endif

If PortA.3 = 1 then
Cls
DelayMs 20
Print "Up"
Endif

Return 'Terug naar de Main Loop

Maar al mijn toetsen die op PortA staan reageren niet is het een fout in mijn code?

Alvast bedankt voor de hulp
Scartie

misschien ligt het wel niet aan de software en is het wel een hardware probleem. Een schema zou dus wel handig zijn...

Tja ik zou graag mijn simpele schema hier neerzetten, alleen heb ik geen webspace om hem op te zetten,

Maar ik kan het misschien ook heel simpel uitleggen, het zijn gewoon 4 druk knoppen op PortA die zijn ook verbonden met een voedings bron om de poort hoog te maken (dat gebeurt ook want er gaat een tekentje branden in Proteus).
Dus ik ben dan van mening dat die poort hoog is dus 1 dus als ik dan PortA0 = 1 heb dan moet dat kloppen toch?

Ik heb gekeken bij andere schema's in Proteus maar daar hebben ze gewoon nog een weerstandje erover staan die met de ground is verbonden die hem denk weer laag maakt.

Wat kan het probleem zijn?
Alvast bedankt
Will

Op 2 mei 2004 11:19:08 schreef Scartie:
Tja ik zou graag mijn simpele schema hier neerzetten, alleen heb ik geen webspace om hem op te zetten,

Maar ik kan het misschien ook heel simpel uitleggen, het zijn gewoon 4 druk knoppen op PortA die zijn ook verbonden met een voedings bron om de poort hoog te maken (dat gebeurt ook want er gaat een tekentje branden in Proteus).
Dus ik ben dan van mening dat die poort hoog is dus 1 dus als ik dan PortA0 = 1 heb dan moet dat kloppen toch?

Ik heb gekeken bij andere schema's in Proteus maar daar hebben ze gewoon nog een weerstandje erover staan die met de ground is verbonden die hem denk weer laag maakt.

Wat kan het probleem zijn?
Alvast bedankt
Will

Het lijkt mij dat je de knoppen aan massa moet hangen, en eventueel de pull-up weerstanden moet enablen die in de PIC zitten (hebben PIC's dat ook net als AVR's ?), zo niet, dan moet je met een pull-up weerstand naar VCC werken, en dan de schakelaar aan massa leggen. Waarschijnlijk zie je uC nu altijd een 1 en gebeurd er dus niks.

port a zijn analoge ingangen

voeg dit eens toe aan je code om deze functies te disabelen

is wel JAL


bank_1
f877_adcon1 = 0b_1000_0111 -- all digital IO
bank_0

of wel moet je maken dat de waarde 1000_0111 in het register ADCON1 terecht komt :)

Hmm tja ik nou in mijn programma gezegt dat ze als ze aangezet worden standaard LOW zijn, maar als ik nu gewoon de schakelaar eraan koppen en druk hem in dan krijg ik een contencensie (of iets dergelijks) fout, en als ik er een PULLUP weerstand bijzet dan gebeurt er weer nix, poort veranderd in schema wel van LOW naar HIGH maar verder springt hij in het programma gewoon over de line If PortA.0=1 Then.

Dus met andere woorden ik snap er nu nix meer van :S

Als iemand Proteus 6 heeft met CLoaders dan wil ik hem wel ff mijn Project sturen om ff te kijken wat het kan wezen

*net bericht van Sp3ci3S gelezen en ga daar nu ff naar kijken*

Nope nogsteeds nix.

Dit is de error (wel ander schematje maar wel zelfde error)

Reading netlist...
Net VDD taken as alias for VCC
Net VSS taken as alias for GND
Reading SPICE models...
Building circuit...
Instantiating SPICE models...
[U1] PIC16 model release 6.01.00 simulating PIC16876 device.
[U1] Loaded 256 bytes of persistent EEPROM data.
[U1] Read total of 492 bytes from file 'PICSOU~1\Main.HEX'.
[U1] Loaded 241 program words and 0 data bytes.
DSIM ERROR: Contention on net [VCC] at time 2.35. State=3F
DSIM ERROR: Contention on net [#00000] at time 2.35. State=3F
[DSIM] RUN Error.

Real Time Simulation FAILED.

probeer maar eens dat register in orde te zetten heb ik vanmorgen ookgedaan met succes:)

@Sp3ci3S, heb ik al gedaan maar nogsteeds nix

'De Pic Declaren
Device 16F876

'Zeggen dat PortA digitaal moet zijn
ADCON1 = 7

'LCD Declareen
Declare LCD_TYPE ALPHA 'Alpha Numeric Display
Declare LCD_LINES 2 'Aantal lijnen op Display
'Poorten
Declare LCD_RSPIN PortC.0 'RS pin instellen
Declare LCD_ENPIN PortC.1 'E Pin Instellen
Declare LCD_DTPin PortC.4 'Poort waar data heen moet

Declare LCD_INTERFACE 4

'Inputs Declaren
Input PortA 'Knoppen en sensoren input
Low PortA 'PortA Laag maken

'OutPuts Declaren
Output PortB

DelayMs 200

Jongens laat maar ik heb het probleem al gevonden, het was het LOW maken van de porten dat veroorzaakte de fout, dus de line weg gehaald en werkt nu perfect

Bedankt voor de hulp
Scartie