|
Gepost op zondag 17 Mei 2009 23:12:45 |
 |
Hier is wat code voor 1 zo een teller:
Code |
dim lightning as word
dim lightbit as bit
main:
if portb.0 = 0 and lightbit = 0then
inc lightning
lightbit = 1
elseif portb.0 = 1
lightbit= 0
endif
print at 1,1, dec3 lightning
goto main
|
|
Met vriendelijke groet, Stynus ||| www.elektronicastynus.be |
|
Gepost op maandag 18 Mei 2009 11:10:26 |
 |
Quote | Stynus schreef: Hier is wat code voor 1 zo een teller:
Code |
dim lightning as word
dim lightbit as bit
main:
if portb.0 = 0 and lightbit = 0then
inc lightning
lightbit = 1
elseif portb.0 = 1
lightbit= 0
endif
print at 1,1, dec3 lightning
goto main
|
|
hoe moet ik dit dan in mijn PIC zetten? aangezien er nog wat meer dingen bij moeten. |
vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk |
|
Gepost op maandag 18 Mei 2009 11:47:21 |
 |
Als er tegelijk dingen moeten gebeuren kan je best onder interrupt werken. |
Met vriendelijke groet, Stynus ||| www.elektronicastynus.be |
|
Gepost op maandag 18 Mei 2009 17:14:59 |
 |
Quote | Stynus schreef: Als er tegelijk dingen moeten gebeuren kan je best onder interrupt werken. |
de bedoeling is dat er als portb.0 of portb.1 er een nummer bij komt op de teller
Code |
'****************************************************************
'* Name : teller.BAS *
'* Author : electro_freakz *
'* Notice : Copyright (c) 2009 www.electrofreakz.tk *
'* : All Rights Reserved *
'* Date : 8-4-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE
;Algemene constanten
SYMBOL Lengte = 16
SYMBOL Schaal = 255
;Poortnamen
SYMBOL lightning = PORTA.1
SYMBOL batdetector = PORTA.0
dim lightning as word
dim lightbit as bit
dim batdetector as word
dim batbit as bit
;*****************************************************************
main:
if portb.0 = 0 and lightbit = 0then
inc lightning
lightbit = 1
elseif portb.0 = 1
lightbit= 0
endif
print at 1,1, dec3 "lightning"
if portb.0 = 0 and batbit = 0then
inc batdetector
batbit = 1
elseif portb.0 = 1
batbit= 0
endif
print at 1,5, dec3 "batdetector"
|
dit heb ik nu, maar er klopt nog niets van, zou je misschien dit even willen corrigeren?
goto main
goto main
|
vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk |
|
Gepost op maandag 18 Mei 2009 17:28:44 |
 |
werkt e display wel want die staat toch helemaal niet gedefineerd
timo |
|
|
Gepost op maandag 18 Mei 2009 18:01:54 |
 |
hmm, probleempje.
die 2 texten gaan nooit op mijn display passen. ik zou ze graag laten ''afwisselen'' hoe doe ik dat?
@stynus, zou jij mischien even een stukkie code willen maken? |
vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk |
|
Gepost op maandag 18 Mei 2009 18:49:43 |
 |
Dat kan die zeker 
Maar heb je niet nog wat beter op picbasic gekeken, want daar staat echt veel info. Allemaal lekker in het Nederlands dus dat moe je dan denk ik toch wel goed snappen. |
nu nog het nubke van schematheek :p |
|
Gepost op maandag 18 Mei 2009 18:50:31 |
 |
Hoe heb je het lcd aangesloten?
En ik mis nog een "goto main" onder je code. En daar een "end" onder.
PS: zou je een link naar de SchemaTheek op je site kunnen plaatsen? Hier bij de links staat er ook 1 naar jouw site. |
Met vriendelijke groet, Stynus ||| www.elektronicastynus.be |
|
Gepost op maandag 18 Mei 2009 19:06:44 |
 |
ik heb de LCD aangesloten op de ''picbasic'' manier.
Code |
'****************************************************************
'* Name : teller.BAS *
'* Author : electro_freakz *
'* Notice : Copyright (c) 2009 www.electrofreakz.tk *
'* : All Rights Reserved *
'* Date : 8-4-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE
;Algemene constanten
SYMBOL Lengte = 16
SYMBOL Schaal = 255
;Poortnamen
SYMBOL s1 = PORTA.1
SYMBOL s2 = PORTA.0
DIM lightning AS WORD
DIM lightbit AS BIT
CLEAR
DELAYMS 500
CLS
;*****************************************************************
main:
IF PORTB.0 = 0 AND lightbit = 0 THEN
INC s1
lightbit = 1
ELSEIF PORTB.0 = 1
lightbit= 0
ENDIF
PRINT AT 1,1, DEC3 "lightning"
IF PORTB.0 = 0 AND batbit = 0THEN
INC s2
batbit = 1
ELSE IF PORTB.0 = 1
batbit= 0
ENDIF
PRINT AT 1,5, DEC3 "batdetector"
GOTO main
END
|
ik krijg hier 2 errors:
Quote |
THEN directive missing from ELSEIF command
misplaced of incorrect ENDIF also check its corresponding IF command |
linkje neergezet |
vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk |
|
Gepost op maandag 18 Mei 2009 19:38:46 |
 |
maar als ik nu kijk heb je toch nog steeds niet gedefineerd waar je lcd zit??
timo |
|
|
Gepost op maandag 18 Mei 2009 19:43:29 |
 |
is ook niet nodig, dat gebeurt allemaal via het woordje PRINT |
vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk |
|
Gepost op maandag 18 Mei 2009 20:11:56 |
 |
o die wist ik nog niet.
timo |
|
|
Gepost op maandag 18 Mei 2009 20:31:05 |
 |
bij je tweede tel lusje staat "else if" dat moet "elseif" worden. Dus zonder spatie.
Verder gebeurd dat defini?ren idd automatisch als je de aansluitingen uit de help file gebruikt. Maar best zet je ze er zelf ook even bij.
Verder moet er een delay van een 300mS na die cls staan. |
Met vriendelijke groet, Stynus ||| www.elektronicastynus.be |
|
Gepost op maandag 18 Mei 2009 20:52:33 |
 |
hier geeft ie een error:
|
vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk |
|
Gepost op maandag 18 Mei 2009 21:10:50 |
 |
Probeer eerst eens je display aan het werkt te krijgen.
1 regel in je programma
Code |
'****************************************************************
'* Name : teller.BAS *
'* Author : electro_freakz *
'* Notice : Copyright (c) 2009 www.electrofreakz.tk *
'* : All Rights Reserved *
'* Date : 8-4-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE
CLEAR
CLS
DELAYMS 500
print at 1,1,"test"
end
|
Werkt dit ja, dan kun je een stap verder gaan met je programma. |
Veel te weinig tijd voor mijn projecten of heb ik er soms te veel? |
|
Gepost op maandag 18 Mei 2009 21:24:46 |
 |
Quote | electro_freakz schreef: hier geeft ie een error:
|
Moet een then achter
Code |
ELSEIF PORTB.0 = 1 then
|
Maar idd eens eerst testen of het lcd werkt zoals Reddevil al zei. |
Met vriendelijke groet, Stynus ||| www.elektronicastynus.be |
|
Gepost op maandag 18 Mei 2009 21:38:56 |
 |
nu alle errors eruit zijn, is het meeste opgelost.
helaas komen er geen nummers bij, als ik op de schakelaars druk.
|
vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk |
|
Gepost op maandag 18 Mei 2009 21:52:14 |
 |
Je inc stukjes kloppen nietmeer in de laatste code die je poste. |
Met vriendelijke groet, Stynus ||| www.elektronicastynus.be |
|
Gepost op maandag 18 Mei 2009 22:10:48 |
 |
dit is de code die ik nu gebruik
Code |
'****************************************************************
'* Name : teller.BAS *
'* Author : electro_freakz *
'* Notice : Copyright (c) 2009 www.electrofreakz.tk *
'* : All Rights Reserved *
'* Date : 8-4-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE
;Algemene constanten
SYMBOL Lengte = 16
SYMBOL Schaal = 255
;Poortnamen
SYMBOL S1 = PORTA.1
SYMBOL S2 = PORTA.0
DIM lightning AS WORD
DIM lightbit AS BIT
DIM batdetector AS WORD
DIM batbit AS BIT
;*****************************************************************
main:
IF PORTB.0 = 0 AND lightbit = 0 THEN
INC S1
lightbit = 1
ELSEIF PORTB.0 = 1 THEN
lightbit= 0
ENDIF
PRINT AT 1,1, DEC3 lightning
IF PORTB.0 = 0 AND batbit = 0 THEN
INC S2
batbit = 1
ELSEIF PORTB.0 = 1 THEN
batbit= 0
ENDIF
PRINT AT 1,5, DEC3 batdetector
GOTO main
END
|
ik krijg nu op het display: 534 en 086
wat betekend dat?
@stynus, bedankt dat je me wil blijven helpen, ik snap er echt niets meer van |
vallen doet geen pijn, het neerkomen wel | www.electrofreakz.tk |
|
Gepost op maandag 18 Mei 2009 22:19:21 |
 |
Ok, Dan is het misschien handiger dat ik de code even uitleg
Op deze manier maak je normaal een teller:
Code |
IF PORTB.0 = 0 THEN
INC S1
ENDIF
|
Nu is het probleem met deze code dat een pic die code meerdere keren per seconde uitvoert en dus telkens 1 bijtelt. Daarom hebben we iets nodig dat ervoor zorgt dat de teller maar 1 keer bijtelt.
Dit gebeurd door bij het optellen een bit op 1 te zetten. Alleen als die bit 0 is mag er dus bijgeteld worden.
Dan krijgen we dit
Quote | IF PORTB.0 = 0 AND lightbit = 0 THEN
INC S1
lightbit = 1
ENDIF |
Nu moet die bit natuurlijk terug op 0 komen als de ingang terug hoog is.
Code |
IF PORTB.0 = 0 AND lightbit = 0 THEN
INC S1
lightbit = 1
ELSEIF PORTB.0 = 1 THEN
lightbit= 0
ENDIF
|
Probeer eens wat het doet als je gewoon dec doet ipv dec3 bij het printen naar het display. |
Met vriendelijke groet, Stynus ||| www.elektronicastynus.be |
|
2 » |
|
|