Hey, ben pas bezig met de PIC16 , nl de PIC16F628A (speciaal genomen voor de voorbeeldjes van http://www.picbasic.nl/)
heb ondertussen al enige voorbeeldjes uitgeprobeerd, duurde wel even vooraleer ik de eerste werkende kreeg. Tja, na enig zoekwerk die dan toch werkend gekregen.
Nu was ik wat met de select-functie aan het experimenteren. Maar hetgeen ik wil proberen krijg ik niet werkend. Ik snap niet wat ik juist verkeerd doe. Ik heb al enige tijd gezocht hier naar een oplossing maar vind het niet. Misschien dat er iemand is die mij kan helpen.

*het idee
een BCD-code (laatste 3 bits hiervan) gebruiken om een 7segment aan te sturen. Dus 3 ingangen van poort B gebruiken om poort A aan te sturen.

*de code


 Device = 16F628A        
        Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
        ALL_DIGITAL = True				' Set ports to digital mode
	OPTIMISER_LEVEL = 6				' Set for maximum optimiser level
        XTAL = 4                        ' Freq. osc 4MHz

       'instellingen poorten
        PORTA = %00000000               ' Alle niveaus van PORTA eerst laag maken
        PORTB = %00000000               ' Alle niveaus van PORTB eerst laag maken
	TRISB = %11111111               ' Set PORTB to all input
	TRISA = %00000000               ' Set PORTA to all output
	PORTB_PULLUPS On                ' PORTB pull-ups geactiveerd voor de toets

	'Logische constanten
	Symbol AAN          = 0	
		
	'Poortnamen
	Symbol Z_SEG = PORTA            ' PORTA heeft nu de naam Z_SEG 
	Symbol Knop = PORTB             ' PORTB heeft nu de naam Knop
        Symbol K1 = PORTB.0             ' Poort B.0 heeft nu de naam Sa (A-segment)
        Symbol K2 = PORTB.1             ' Poort B.1 heeft nu de naam Sb (B-segment)
	Symbol K3 = PORTB.2             ' Poort B.2 heeft nu de naam Sc (C-segment)
        
        Clear                           ' Wis alle RAM geheugen
	DelayMS 500				        ' Wait for PICmicro to stabilise

   	If K1 = AAN Or K2 = AAN Or K3 = AAN Then ' BCD-code aanwezig is, dan...
            Select Knop                 ' poort B opvragen naar de knopkeuze
          	 '76543210
                 'xGFEDCBA -> 7 segmentaansluitingen
                 Case 1                'BCDwaarde 1
                    PORTA = %00000110  ' segmenten B,C hoog, rest laag
                 Case 2                'BCDwaarde 2
                    PORTA = %01011011  ' segmenten A,B,D,E,G hoog, rest laag
                 Case 3                'BCDwaarde 3
                    PORTA = %01001111  ' segmenten A,B,C,D,G hoog, rest laag
                 Case 4                'BCDwaarde 4
                    PORTA = %01100110  ' segmenten B,C,F,G hoog, rest laag
                 Case 5                'BCDwaarde 5
                    PORTA = %01101101  ' segmenten A,C,D,F,G hoog, rest laag
                 Case 6                'BCDwaarde 6
                    PORTA = %01111101  ' segmenten A,C,D,E,F,G hoog, rest laag
                 Case 7                'BCDwaarde 7        
                    PORTA = %01000000  ' segmenten G hoog, rest laag
                 Case Else
    
    
            EndSelect
        EndIf

De ongebruikte ingangen zijn door de pullup hoog gemaakt, dus je zal nooit aan de voorwaarde voldoen.

Roel.

Yup yup yup.. inderdaad niet aan gedacht dat het probleem hardwarematig kon zijn.

'Select Knop' veranderd in 'Select ~Knop' -> opgelost
dank je

[Bericht gewijzigd door Viena op (42%)]