menu in picbasic

Arco

Special Member

Da's meer iets voor een Picbasic specialist... ;)
Met losse bits wordt de code wel veel langer; ik weet niet of dat nog in de lite versie past...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Is er hier ook iemand wie gespecialiseerd is in picbasic

Want ik ben ook met zoiets bezig maar misschien kunnen we elkaar wel assisteren. Dus als sjoerd contact met mij op wil nemen

[Bericht gewijzigd door Henry S. op vrijdag 1 juli 2016 20:40:50 (53%)

Beste Klaas

Dit topic heb ik geopend voor een simpel
Programma, ik snap dat u mij wil helpen.
maar om op dit topic te vragen als er een
Picbasic specialist is, hoeft niet van mij, dan kunt u beter een eigen topic openen wat aan uw
Wensen voldoet

Hallo
Nou het was maar gunst ik ben ook bezig met dat soort dingen als het tenminste voor een spel is kijk maar eens
Bij krediet schakeling dat is alvast het begin.
Voor mij dan. Met dank aan mgp
Je hoeft mij geen u te noemen ik ben nog jonger als u?

Lambiek

Special Member

Als je eerst eens wat meer info geeft, wat zijn bijv. de luiken en wat moet het precies gaan doen?

Als je haar maar goed zit, GROETEN LAMBIEK.

Hallo

In even terug te komen op het programma van
Arco. Kan dit over typen en gaat met s1 dan luik1 open en met s2 Luik 2, enz
Plus de andere dingen.

Arco

Special Member

Is een quick&dirty manier, maar doet wat je wilt. (als de luiken en schakelaars zitten aangesloten zoals ik zei. Moet alleen misschien nog wat getweaked voor Picbasic)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Als de materie nog onbekend is, is het sterk aan te raden om zo simpel mogelijk te beginnen.
Gewoon eerst code schrijven om alleen een ledje te laten knipperen, daarna een schakelaartje erbij om dat te stoppen, en zo langzaam uitbreiden.
Je loopt anders tegen te veel problemen te gelijk aan.
Picbasic.nl bied genoeg info om hier een tijdje zoet mee te zijn.

Code over typen waarvan je niet snapt hoe het werkt, doe je alleen als je iets snel aan het werk wilt hebben, en er daarna niet meer naar kijkt.(en maar hopen dat het überhaupt werkt)

Lambiek

Als ik alles nog eens goed uitleg kun
Je me dan helpen aan een goede duidelijke code
Arco niet dat uw code niet goed is maar
Een beetje dirty zei u.

Arco

Special Member

Quick&dirty is gewoon een uitdrukking; er is niks dirty aan... ;)
Op deze manier kun je met veel minder code hetzelfde doen als wanneer je het bit-voor-bit doet. Ik heb er nog wat commentaar bij gezet.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Op 30 juni 2016 20:34:39 schreef electronicfantasy:
Als ik alles nog eens goed uitleg kun
Je me dan helpen aan een goede duidelijke code

Als je wil mag je een mailtje sturen, mijn adres staat bij mijn gegevens.

Maar ik kan niet garanderen dat het in 50 regels past.
Heb je die van Arco al geprobeerd?

Als je haar maar goed zit, GROETEN LAMBIEK.

Beste lambiek

Ik ga alles goed op de mail zetten ( duidelijk)
Ik ben toch van plan om de volledige
Versie te kopen en dan kan het misschien
Ook wel met een 16f877 deze heeft flink
Veel pinnen in de toekomst wel handig.
alvast bedankt dat u mij wil helpen
Arco ook bedankt trouwens ik heb hem nog
Niet geprobeerd

Lambiek

Special Member

Ik heb nog niets ontvangen.

EDIT:
Het is binnen. :)

[Bericht gewijzigd door Lambiek op vrijdag 1 juli 2016 12:09:26 (34%)

Als je haar maar goed zit, GROETEN LAMBIEK.

O had .nl ipv .com
Nu moet hij aangekomen zijn

Topic is geslaagd
lambiek heeft voor mij een code geschreven
???

Shiptronic

Overleden

Jammer dat dit via de mail gegaan is, zo leert niemand er iets van , en lijkt me het doel van een forum voorbij te schieten :(

Wie de vraag stelt, zal met het antwoord moeten leren leven.

Hallo

Zou er de volgende keer om denken.
?

Lambiek

Special Member

Je hebt wel een beetje gelijk. Maar dan zetten we het toch gewoon hier neer.

pic basic code:


'*  Name    : ELEKTRONISCH KNIKKERSPEL.                                     
'*  Author  : H van Zwieten.                                    
'*  Notice  : Copyright (c) 2016 H.v.Z.                         
'*          : All Rights Reserved                               
'*  Date    : 1-7-2016                                         
'*  Version : 1.0                                              
'*  Notes   :                                                   
                                                  
Device 16F887                     ; Processor type

Xtal 10                           ; Cristal 10Mhz

Asm                               ; Config settings
CONFIG_REQ            
__CONFIG _CONFIG1, HS_OSC & WDT_OFF & DEBUG_OFF & FCMEN_OFF & LVP_OFF & IESO_OFF & BOR_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON 
__CONFIG _CONFIG2, WRT_OFF & BOR40V 
EndAsm
   
All_Digital true                  ; Alle poorten digitaal

Symbol LUIK_1 = PORTA.0           ; Uitgang luik - 1
Symbol LUIK_2 = PORTA.1           ; Uitgang luik - 2
Symbol LUIK_3 = PORTA.2           ; Uitgang luik - 3
Symbol LUIK_4 = PORTA.3           ; Uitgang luik - 4
Symbol LAMP = PORTA.5             ; Uitgang lamp
Symbol LOSKLEP = PORTE.0          ; Uitgang losklep
      
Symbol BUIS_1 = PORTB.0           ; Ingang detectie buis - 1
Symbol BUIS_2 = PORTB.1           ; Ingang detectie buis - 2
Symbol BUIS_3 = PORTB.2           ; Ingang detectie buis - 3
Symbol BUIS_4 = PORTB.3           ; Ingang detectie buis - 4
Symbol KEUZE_SCHAK = PORTB.4      ; Ingang keuzeschakelaar menu
Symbol EINDSCHAK_KLEP = PORTB.5   ; Ingang eindschakelaar losklep

Symbol WACHT_IR_DETECTIE = 250    ; Wachttijd lezen ir detectie

Dim BIT_BUIS_1 As Bit             ; Variabele bit buis - 1
Dim BIT_BUIS_2 As Bit             ; Variabele bit buis - 2
Dim BIT_BUIS_3 As Bit             ; Variabele bit buis - 3
Dim BIT_BUIS_4 As Bit             ; Variabele bit buis - 4

DelayMS 500                       ; Wacht 0.5 sec 

Clear                             ; Wis geheugen

         ;543210                  ; Hulpregel poort A
PORTA  = %000000                  ; Maak poort A laag
TRISA  = %000000                  ; Poort_A I/O

         ;543210                  ; Hulpregel poort B
PORTB  = %000000                  ; Maak poort B laag
TRISB  = %111111                  ; Poort_B I/O

         ;76543210                ; Hulpregel poort C
PORTC  = %00000000                ; Maak poort C laag
TRISC  = %00000000                ; Poort_C I/O

         ;76543210                ; Hulpregel poort D
PORTD  = %00000000                ; Maak poort D laag
TRISD  = %00000000                ; Poort_D I/O

         ;210                     ; Hulpregel poort E 
PORTE  = %000                     ; Maak poort E laag
TRISE  = %000                     ; Poort_E I/O

         ;76543210                ; Hulpregel analoog
ADCON0 = %00000001                ; ADCON0 register analoog

         ;543210                  ; Hulpregel analoog poort_B
ANSELH = %000000                  ; ANSEL register analoog poort_B

;--------------------------------------
; VARIABELE EN INGANGEN OP NUL ZETTEN.
;--------------------------------------

BIT_BUIS_1 = 0
BIT_BUIS_2 = 0
BIT_BUIS_3 = 0
BIT_BUIS_4 = 0

LUIK_1 = 0
LUIK_2 = 0
LUIK_3 = 0
LUIK_4 = 0
LAMP = 0
LOSKLEP = 0

;-------------------------------------
; KEUZE MENU EEN LUIK OF TWEE LUIKEN.
;-------------------------------------

MENU:

    BIT_BUIS_1 = 0
    BIT_BUIS_2 = 0
    BIT_BUIS_3 = 0
    BIT_BUIS_4 = 0

    If KEUZE_SCHAK = 0 Then
     GoSub EEN_LUIK
    EndIf
    
    If KEUZE_SCHAK = 1 Then
     GoSub TWEE_LUIKEN
    EndIf
GoTo MENU

;--------------------------------------------------------------------------
; PROGRAMMALUS BUIS1 - LUIK1, BUIS2 - LUIK2, BUIS3 - LUIK3, BUIS4 - LUIK4.
;--------------------------------------------------------------------------

EEN_LUIK:

    If BUIS_1 = 1 Then
     BIT_BUIS_1 = 1
      DelayMS WACHT_IR_DETECTIE
    EndIf 
    
    If BIT_BUIS_1 = 1 And BUIS_1 = 1 Then
     LAMP = 1
      LOSKLEP = 1
     BIT_BUIS_1 = 0
    EndIf
    
    If BUIS_1 = 0 Then
     BIT_BUIS_1 = 0
    EndIf
    
    If EINDSCHAK_KLEP = 1 Then
     LUIK_1 = 1
      BIT_BUIS_1 = 0 
       DelayMS 1500
       LOSKLEP = 0
      LUIK_1 = 0
     GoTo KLEP_DICHT
    EndIf

    If BUIS_2 = 1 Then
     BIT_BUIS_2 = 1
      DelayMS WACHT_IR_DETECTIE
    EndIf 
    
    If BIT_BUIS_2 = 1 And BUIS_2 = 1 Then
     LAMP = 1
      LOSKLEP = 1
     BIT_BUIS_2 = 0
    EndIf
    
    If BUIS_2 = 0 Then
     BIT_BUIS_2 = 0
    EndIf
    
    If EINDSCHAK_KLEP = 1 Then
     LUIK_2 = 1
      BIT_BUIS_2 = 0 
       DelayMS 1500
       LOSKLEP = 0
      LUIK_2 = 0
     GoTo KLEP_DICHT
    EndIf
    
    If BUIS_3 = 1 Then
     BIT_BUIS_3 = 1
      DelayMS WACHT_IR_DETECTIE
    EndIf 
    
    If BIT_BUIS_3 = 1 And BUIS_3 = 1 Then
     LAMP = 1
      LOSKLEP = 1
     BIT_BUIS_3 = 0
    EndIf
    
    If BUIS_3 = 0 Then
     BIT_BUIS_3 = 0
    EndIf
    
    If EINDSCHAK_KLEP = 1 Then
     LUIK_3 = 1
      BIT_BUIS_3 = 0 
       DelayMS 1500
       LOSKLEP = 0
      LUIK_3 = 0
     GoTo KLEP_DICHT
    EndIf
    
    If BUIS_4 = 1 Then
     BIT_BUIS_4 = 1
      DelayMS WACHT_IR_DETECTIE
    EndIf 
    
    If BIT_BUIS_4 = 1 And BUIS_4 = 1 Then
     LAMP = 1
      LOSKLEP = 1
     BIT_BUIS_4 = 0
    EndIf
    
    If BUIS_4 = 0 Then
     BIT_BUIS_4 = 0
    EndIf
    
    If EINDSCHAK_KLEP = 1 Then
     LUIK_4 = 1
      BIT_BUIS_4 = 0 
       DelayMS 1500
       LOSKLEP = 0
      LUIK_4 = 0
     GoTo KLEP_DICHT
    EndIf
    
    Return  
      
GoTo EEN_LUIK 

;-------------------------------------------------------
; PROGRAMMALUS TWEE LUIKEN BUIS1 - LUIK1, BUIS2 - LUIK2. 
; BUIS3 - LUIK3, BUIS4 - LUIK4, VOOR DE GROTE PRIJZEN.
;-------------------------------------------------------         
       
TWEE_LUIKEN:

    If BUIS_1 = 1 Then
     BIT_BUIS_1 = 1
      DelayMS WACHT_IR_DETECTIE
    EndIf
    
    If BUIS_2 = 1 Then
     BIT_BUIS_2 = 1
      DelayMS WACHT_IR_DETECTIE
    EndIf  
    
    If BIT_BUIS_1 = 1 And BUIS_1 = 1 Then
     If BIT_BUIS_2 = 1 And BUIS_2 = 1 Then
      LAMP = 1
       LOSKLEP = 1
       BIT_BUIS_1 = 0
      BIT_BUIS_2 = 0
     EndIf
    EndIf
    
    If BUIS_1 = 0 And BUIS_2 = 0 Then
     BIT_BUIS_1 = 0
     BIT_BUIS_2 = 0
    EndIf
    
    If EINDSCHAK_KLEP = 1 Then
     LUIK_1 = 1
      LUIK_2 = 1
       BIT_BUIS_1 = 0
        BIT_BUIS_2 = 0 
         DelayMS 1500
        LOSKLEP = 0
       LUIK_1 = 0
      LUIK_2 = 0
     GoTo KLEP_DICHT
    EndIf
       
    If BUIS_3 = 1 Then
     BIT_BUIS_3 = 1
      DelayMS WACHT_IR_DETECTIE
    EndIf
    
    If BUIS_4 = 1 Then
     BIT_BUIS_4 = 1
      DelayMS WACHT_IR_DETECTIE
    EndIf  
    
    If BIT_BUIS_3 = 1 And BUIS_3 = 1 Then
     If BIT_BUIS_4 = 1 And BUIS_4 = 1 Then
      LAMP = 1
       LOSKLEP = 1
       BIT_BUIS_3 = 0
      BIT_BUIS_4 = 0
     EndIf
    EndIf
    
    If BUIS_3 = 0 And BUIS_4 = 0 Then
     BIT_BUIS_3 = 0
     BIT_BUIS_4 = 0
    EndIf
    
    If EINDSCHAK_KLEP = 1 Then
     LUIK_3 = 1
      LUIK_4 = 1
       BIT_BUIS_3 = 0
        BIT_BUIS_4 = 0 
         DelayMS 1500
        LOSKLEP = 0
       LUIK_3 = 0
      LUIK_4 = 0
     GoTo KLEP_DICHT
    EndIf
    
    Return
    
GoTo TWEE_LUIKEN

;--------------------------------------------------------
; PROGRAMMALUS EINDSCHAKELAAT IS UIT, LOSKLEP KAN DICHT.
;--------------------------------------------------------  

KLEP_DICHT:

    If EINDSCHAK_KLEP = 0 Then
     BIT_BUIS_1 = 0
      BIT_BUIS_2 = 0
       BIT_BUIS_3 = 0
        BIT_BUIS_4 = 0
       LOSKLEP = 0
      LAMP = 0
     GoTo MENU
    EndIf
GoTo KLEP_DICHT  
    
End

Hier het plan voor de knikkerbuizen, misschien brengt het anderen nog op een idee. :)
http://www.uploadarchief.net/files/download/resized/voorbeeld%20-%20spel%20-%20sjoerd.jpg

Ik hoop niet dat de TS het erg vindt. :+

Als je haar maar goed zit, GROETEN LAMBIEK.

Het is in ieder geval niet gelukt om onder de 50 regels te blijven :p
Ziet er netjes uit hoor!

Shiptronic

Overleden

Wie de vraag stelt, zal met het antwoord moeten leren leven.
Lambiek

Special Member

Op 4 juli 2016 09:45:44 schreef RVL-Electronics:
Het is in ieder geval niet gelukt om onder de 50 regels te blijven :p

Nee maar dat kon ook niet, toen ik de beschrijving kreeg van de TS bleek dat iets uitgebreider te zijn dan ik in eerste instantie dacht. :)

Op 4 juli 2016 10:22:02 schreef Shiptronic:
Mooi opgelost zo !!

en nogmaals je had natuurlijk gelijk wat het plaatsen betreft, op deze manier heeft iemand anders er misschien ook nog iets aan. En ik moet zeggen dat het wel een leuk idee is van de TS om zoiets te maken, het heeft voor de kinderen ook weer iets extra's.

Als je haar maar goed zit, GROETEN LAMBIEK.

http://www.protonbasic.co.uk/content.php/1450-Proton-Compiler-Updates

Ik lees in de laatste Proton (Picbasic) update het volgende:

Additions and Fixes made in version 3.5.8.1 of the Proton Compiler and version 1.0.3.3 of the Proton24 Compiler.

Proton Fixes
Adjusted unsigned variable assignment into a signed variable. i.e. SWord = Byte. It no longer sign extends the operand.
Corrected Signed > comparison with a signed word variable and a constant.

Proton Additions
Added support for devices 16F1574, 16F1575, 16F1578, 16F1579, 16LF1574, 16LF1575, 16LF1578, 16LF1579.
Also added support for these unusual 8-bit devices: MCP19110, MCP19111, MCP19114, MCP19115, MCP19117, MCP19118 and MCP19119. These are standard 14-bit PICs but have dedicated high current PWM capabilities.
Added several devices that do not require the USB key. All the free 8-bit devices are now: 18F25K20, 18F25K22, 18F45K20, 18F45K22, 18F26K20, 18F26K22, 18F46K20, 18F46K22, 18F452, 16F877, and 16F877A. This means that the Amicus18 board can use the full Proton compiler.

Oftewel, de 16F877 (en meer) doet het nu ook zonder USB license key
Wel even uitzoeken hoe die download werkt.

De nieuwste versie is 3.5.8.6, hier is de link.

Just find out what you like and let it kill you
Lambiek

Special Member

Dat is misschien wel handig voor sommigen onder ons. :)

Als je haar maar goed zit, GROETEN LAMBIEK.