hallo co´ers

ik heb een vraagje over eenlichtkrant aansturen
en ik heb op de site al veel gelezen maar niet wat ik zocht

ik heb een lichtkrant liggen die ik met een pic wil aansturen
op het schema van de lichtkrant heb de signalen data clk en clr.

hier moet ik iets mee
maar ik snap niet goed hoe ik het moet doen.
graag een uitleg hoe zo iets werkt principe

Het is wel heel weinig info, maar ik ga mijn best doen.

'Data' lijkt me duidelijk, hierop moeten de bitpatronen voor de lichtkrant worden gezet.
'Clk' is de clock waarmee de 'Data' naar binnen worden gestuurd.
'Clr' is niet helemaal éénduidig. Het kan zijn dat deze de lichtkrant wist, maar het kan ook een soort van 'en- of disable' zijn.

Maar de grote vragen zijn natuurlijk:
- hoe hoog is de kloksnelheid die je moet/mag aanbieden?
- hoe ziet het bitpatroon er uit. Hier zijn twee basis variaties mogelijk: per rij of per kolom. Gegeven het feit dat het een lichtkrant is die moet kunnen lopen is de meest voor de hand liggende variant de kolom. Je stuurt dan telkens een bit voor die kolom en zodra die vol is zou de lichtkrant zomaar dit patroon laten zien. Bij de volgende schuift het dan gewoon door.

Zonder deze informatie kom je er niet uit.

Ik neem aan dat die lichtkrant ook nog een voedingsspanning nodig heeft. Als die afwijkt van de +5 van een uC zou het wel eens lastig kunnen worden, omdat je dan vermoedelijk je uitgangssignaal op dat nivo moet brengen.

Je zegt dat je het schema hebt, dat zou je met ons kunnen delen (via upload archief bv).

Wat je kunt doen is gewoon experimenteren.
Hang de Clk op een output-pin en genereer daar een kloksignaal op. Begin laag, zo'n 25 HZ.
Hang de Data op een andere output-pin.
Bij elke 'hoog' van de klok toggle je de data-pin.
Hang Clr aan de ground.
Doet-ie nix, kijk dan of het met Clr aan de +5 wel gaat.

Als je het schema kan posten, kun je gerichtere antwoorden verwachten.

hallo co´ers

als het goed is er een schema geupload.

graag hulp

http://www.uploadarchief.net/files/download/lichtkrant100.jpg

Een grotere versie, welke ook daadwerkelijk leesbaar is, zou flink helpen.

Hoeveel kennis heb je van PICs? Heb je al eens een LEDje laten knipperen? Heb je al eens een kleine (5x7 of 8x8 ofzo) LED matrix aangestuurd?

Ja ik heb enige kennis van pic programmeren

Zucht. We proberen het nog een keer.

  • Heb je al een groter formaat van het schema geupload, waar we daadwerkelijk kunnen lezen en zien wat welk IC is, en hoe het aangesloten is?
  • Hoeveel kennis heb je van PICs?
  • Heb je al eens een LEDje laten knipperen met een PIC?
  • Heb je al eens een kleine (5x7 of 8x8 ofzo) LED matrix aangestuurd met een PIC?

Nee ik heb nog geen groter schema
Ja ik heb enige kennis heb de cursus van Fritz' kieftenbelt door genomen
Ja ik heb een led laten knipperen
Ja ik heb een matrix aangestuurd

Op het schema zijn de data clk en clr te zijn en de zeven datalijnen

Waar ik iets mee moet graag hulp hoe ik dit aansluit. En programmeer

Je hebt niet 7 datalijnen, je hebt 7 row-select lijnen.
Je moet simpelweg het volgende doen:
data voor rij 1 inklokken
data latchen
rij 1 aanzetten
data voor rij 2 inklokken
rij 1 uitzetten
data latchen
rij 2 aanzetten
data voor rij 3 inklokken
rij 2 uitzetten
data latchen
rij 3 aanzetten

Et cetera.

Kleine kans overigens dat dit je in PIC basic gaat lukken, dat is te traag, VEEL TE TRAAG, voor multiplexen op deze schaal. Ga maar naar C of ASM.

Ik heb een lichtkrant gemaakt volgens dit schema:

http://www.uploadarchief.net/files/download/lichtkrant-klok2.gif

en :

http://www.uploadarchief.net/files/download/lichtkrant-klok%2B.gif

Zie mijn post van zaterdag 16 april 2011 21:22:52 voor de picbasic code : DCF samen met de huisautomatisering .

Werkt prima in Picbasic

Groeten

Op 27 augustus 2012 22:24:20 schreef Tommyboy:
Kleine kans overigens dat dit je in PIC basic gaat lukken, dat is te traag, VEEL TE TRAAG, voor multiplexen op deze schaal. Ga maar naar C of ASM.

Waarom zou PIC basic hiervoor "VEEL TE TRAAG" zijn en C niet?
Wat een ongelooflijke flauwekul. Proton genereeert gewoon assembler, en die ziet er goed uit. Bovendien kun je in Proton ook met interrupts werken.

Ik heb een GPS gestuurde loopklok gebouwd met 4 stuks 8x8 led matrices.
In Proton.
Loopt als een speer!

Dus aub geen ongefundeerde onwaarheden verkondigen, zeker niet als het klaarblijkelijk om een nog niet heel erg ervaren TS gaat.

hallo beste looier

ik kan je inzending van 16 april niet vinden
ik vind wel een dcf voor huisautomatisering
maar die is van een ander persoon
ook op datum zoeken vindt ik niks
graag antwoord lijkt me interrsesant wat je doet

eventueele vragen volgen nog nu ga ik maar eens wat experimenteren
met jullie nuttige tips

groeten olan

In het artikel : DCF samen met de huisautomatisering, staat er op de laatste pagina mijn post.

Mijn code voor de lichtkrant:


 
'*******************************************
'*  Naam   : lichtkrantklok 5 x 7 16F628A  *
'*  Datum  : 12/04/2011 OK                 *
'*******************************************
;                                        PIC16F628A
;                                       +-----v-----+                                        
;                                      1[A.2     A.1]18> Data lijn voor de 74164         
;                                      2[A.3     A.0]17> Kloklijn voor de 74164                               
;                                      3[A.4     A.7]16< XTAL 20 MHz    
;                                      4[A.5     A.6]16< XTAL 20 MHz          
;                                 GND  5[           ]14  +5V                                   
;                                      6[B.0     B.7]13> stuurt A2 74238                         
;                        ontvangt code>7[B.1     B.6]12> stuurt A1 74238                         
;                                      8[B.2     B.5]11> stuurt A0 74238                      
;                                      9[B.3     B.4]10                               
;                                       +-----------+              
; 
Device 16F628A               ;We gebruiken een 16F628A type
Config WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, HS_OSC
XTAL 20                       ;Kristal van 20MHz
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
HSERIAL_BAUD  = 2400          ;Transmissiesnelheid van de data over de bus
HSERIAL_RCSTA = %10010000     ;Bit7:Enable serial port / Bit4:Continu ontvangen
HSERIAL_TXSTA = %00000000     ;Bit5:Transmitpin uitgeschakeld (TXEN (Transmit ENable) = 0)
 
;Algemene constanten
Symbol Baud2400I    = 16780   ;2400 Baud Inverted (baudrate voor SEROUT)
 
TRISA = %11111000             ;A.0,A.1 en A.2 sturen de 74164
TRISB = %00011111             ;B.5,B.6 en B.7 sturen de 74238
PORTA = 0
PORTB = 0
 
Symbol tijd  = 500 
Symbol klok  = PORTA.0  ; geeft klokpuls aan de 74164
Symbol Dat   = PORTA.1  ; geeft de Data aan de 74164
Symbol A0    = PORTB.5  ; stuurt A0 74238
Symbol A1    = PORTB.6  ; stuurt A1 74238 
Symbol A2    = PORTB.7  ; stuurt A2 74238  
Symbol SerieelIn    = PORTB.1 ;Ontvangt via HSERIN data van de bus (B.1 = USART ingang, RX)
 
Dim een[8]     As Byte
Dim twee[8]    As Byte
Dim drie[8]    As Byte
Dim vier[8]    As Byte
Dim vijf[8]    As Byte
Dim zes[8]     As Byte
Dim zeven[8]   As Byte
Dim acht[8]    As Byte
Dim negen[8]   As Byte
Dim nul[8]     As Byte
Dim blank[8]   As Byte 
Dim rij        As Byte
Dim kolom      As Byte
Dim digit[8]   As Byte
Dim w          As Byte
Dim x          As Byte
Dim y          As Byte
Dim z          As Byte
Dim VAR1       As Byte
Dim VAR2       As Byte
Dim VAR3       As Byte
Dim VAR4       As Byte
Dim Opdracht   As Word
 
VAR1 = 1
VAR2 = 2
VAR3 = 3
VAR4 = 4
 
y = 1
z = 1
 
een[1] = 4
een[2] = 6
een[3] = 5
een[4] = 4
een[5] = 4
een[6] = 4
een[7] = 31
twee[1] = 14
twee[2] = 17
twee[3] = 16
twee[4] = 12
twee[5] = 2
twee[6] = 1
twee[7] = 31
drie[1] = 31
drie[2] = 16
drie[3] = 8
drie[4] = 12
drie[5] = 16
drie[6] = 17
drie[7] = 14
vier[1] = 8
vier[2] = 12
vier[3] = 10
vier[4] = 9
vier[5] = 31
vier[6] = 8
vier[7] = 8
vijf[1] = 31
vijf[2] = 1
vijf[3] = 15
vijf[4] = 16
vijf[5] = 16
vijf[6] = 17
vijf[7] = 14
zes[1] = 28
zes[2] = 2
zes[3] = 1
zes[4] = 15
zes[5] = 17
zes[6] = 17
zes[7] = 14
zeven[1] = 31
zeven[2] = 16
zeven[3] = 8
zeven[4] = 4
zeven[5] = 2
zeven[6] = 2
zeven[7] = 2
acht[1] = 14
acht[2] = 17
acht[3] = 17
acht[4] = 14
acht[5] = 17
acht[6] = 17
acht[7] = 14
negen[1] = 14
negen[2] = 17
negen[3] = 17
negen[4] = 30
negen[5] = 16
negen[6] = 8
negen[7] = 7
nul[1] = 14
nul[2] = 17
nul[3] = 17
nul[4] = 17
nul[5] = 17
nul[6] = 17
nul[7] = 14
blank[1] = 0
blank[2] = 0
blank[3] = 0
blank[4] = 0
blank[5] = 0
blank[6] = 0
blank[7] = 0
 
;hoofdprogramma
GoSub wis
opnieuw:
 

OpdrachtUitvoeren:

 VAR1 = Dig Opdracht , 3 
 VAR2 = Dig Opdracht , 2
 VAR3 = Dig Opdracht , 1
 VAR4 = Dig Opdracht , 0
 If VAR1 = 0 Then VAR1 = 10 
 digit[1] = VAR1
 digit[2] = VAR2
 digit[3] = VAR3
 digit[4] = VAR4
 
     For rij = 1 To 7
      For x = 1 To 4
       z = digit[x]
       For kolom = 0 To 4       
        GoSub testen                   
        Dat = GetBit y , kolom              
       GoSub schuif
       Next kolom 
     If x < 4 Then GoSub schuif    ; spatie tussen de cijfers
     If x = 2 Then GoSub schuif    ; extra spatie tussen de tweede en derde cijfers 
      Next x  
 
   Select rij                ;We gaan PORT A sturen
 
         Case 1                     
          A0 = 1 ; Stuurt A0 van 74238
          DelayUS tijd 
          A0 = 0     
         Case 2                      
          A1 = 1 ; Stuurt A1 van 74238 
          DelayUS tijd
          A1 = 0        
         Case 3                      
          A0 = 1 
          A1 = 1 ; Stuurt A0 en A1 van 74238 
          DelayUS tijd
          A0 = 0
          A1 = 0
         Case 4                     
          A2 = 1 ; Stuurt  A2 van 74238 
          DelayUS tijd
          A2 = 0
         Case 5                     
          A0 = 1   
          A2 = 1 ;Stuurt A0 en A2 van 74238
          DelayUS tijd
          A0 = 0
          A2 = 0           
         Case 6                     
          A1 = 1 
          A2 = 1 ; Stuurt A1 en A2 van 74238  
          DelayUS tijd
          A1 = 0
          A2 = 0      
         Case 7                      
          A0 = 1
          A1 = 1 
          A2 = 1  ; Stuurt A0 en A1 en A2 van 74238 
          DelayUS tijd
          A0 = 0
          A1 = 0
          A2 = 0  
      EndSelect                     ;Einde SELECT CASE blok
 
      Next rij 
 
HSerIn 7, Verder, [Opdracht] ;Time out staat op 7mSec
GoTo OpdrachtUitvoeren      ;Voer opdracht uit
Verder:    

 GoTo opnieuw   ;Spring naar 'Opnieuw' en ga zo steeds door 
 
 
; subroutines:
 
schuif:

   High klok
   Low klok
   Low Dat
 Return
 
wis:

  Low Dat
  For w = 1 To 25
   High klok
   Low klok
  Next w  
 Return 
 
blanko:  

 GoSub schuif
 GoSub schuif
 GoSub schuif
 GoSub schuif
 GoSub schuif
 
testen:

   Select z               ;We gaan de variabele z testen
  Case 0                      
   y = nul[rij]
 Case 1                     
   y = een[rij]         
 Case 2                      
   y = twee[rij]          
 Case 3                      
   y = drie[rij]
 Case 4                     
   y = vier[rij]
 Case 5                     
  y = vijf[rij]             
 Case 6                     
   y = zes[rij]         
 Case 7                      
   y = zeven[rij]
 Case 8                     
   y = acht[rij]            
 Case 9                    
   y = negen[rij]         
 Case 10                      
   y = blank[rij]
 
 EndSelect                     ;Einde SELECT CASE blok
 
 Return
 
End                           ;Einde programma


END

Mijn picbasiccode voor de DCF decodering die naar de lichtkrant gestuurd word:



'*******************************************************************
'*  Naam   : klok lcd 2x20 + zender van code naar tweede PIC16F628 *
'*  Datum  : 12/04/2011                                            *
'*******************************************************************
;           PIC16F628A:                      +----v----+                                        
;                          EN-PIN voor LCD <1[A.2   A.1]18> Een puls per seconde                  
;                          RS-PIN voor LCD <2[A.3   A.0]17< 12:00 (AM/PM) of 24:00 notatie   
;                            DCF77 module  >3[A.4   A.7]16< XTAL 16 MHz  
;                                      Vrij 4[A.5   A.6]15< XTAL 16 MHz
;                                      GND  5[         ]14  +5V                                   
;                                      Vrij 6[B.0   B.7]13> DB7 LCD                               
;                                      Vrij 7[B.1   B.6]12> DB6 LCD                               
;                           Zend SerieelUit<8[B.2   B.5]11> DB5 LCD                               
;                                      Vrij 9[B.3   B.4]10> DB4 LCD                               
;                                            +---------+                                        
Device = 16F628A
Config HS_OSC, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF ;Interne RC-oscillator
XTAL          = 16            ;Gebruik een kristal van 16MHz
HSERIAL_BAUD  = 2400          ;Transmissiesnelheid van de data over de bus
ALL_DIGITAL TRUE
 
;Algemene constanten
Symbol Baud2400I    = 16780   ;2400 Baud Inverted (baudrate voor SEROUT)
 
;Normale aliases (constanten)
Symbol Blokje      = 255      ;Maximaal   255: 255 is de ASCII code voor een blokje op de LCD tijdsbalk 
Symbol LCD_Char    = 16       ;Minimaal    16: Aantal karakters per regel (afhankelijk van het gebruikte LCD type)
Symbol MaxVindTijd = 65       ;Minimaal    65: (Sec)  Tijd om seconde 00 te vinden
Symbol OpStartTijd = 45000    ;Maximaal 65535: (mSec) 45 seconden opstart tijd voor de DCF77 module na power-on
Symbol PulsLengte  = 740      ;Minimaal 500! Maximaal 750: (mSec)
Symbol PulsLengteX = PulsLengte / 10
 
;Logische aliases (constanten)
Symbol AAN         = 0        ;Omgekeerd ON
Symbol FALSE       = 0
Symbol OFF         = 0
Symbol On          = 1
Symbol TRUE        = 1
Symbol UIT         = 1        ;Omgekeerd OFF
 
;Poort aliases
Symbol SecondePuls = PORTA.1  ;Iedere seconde een puls van 0,5 seconde
Symbol DCF_Signaal = PORTA.4  ;Ingang voor de DCF77 module (ontvanger) signaal (bv. Conrad BN641138)
Symbol SerieelUit   = PORTB.2 ;Stuurt via C naar de bus  (B.2 = USART uitgang, TX)
;        76543210
TRISA = %11110001
TRISB = %11110000
PORTB_PULLUPS On              ;Pull-up voor DCF77 ontvanger
 
;WORD
Dim SignaalCheck   As Word
Dim Teller         As Word
Dim Tijd           As Word
; Hier stond Dim Tijd           As DWord
 
;BYTE
Dim AlgemeneTeller As Byte
Dim BitAantal      As Byte
Dim CursorPos      As Byte    ;Cursor x-positie op de LCD
Dim Dag            As Byte
Dim Jaar           As Byte
Dim Maand          As Byte
Dim Minuut         As Byte
Dim MinuutDCF      As Byte    ;Bevat de DCF minuut, is er een pariteitserror, dan wordt Minuut NIET gelijk gemaakt met MinuutDCF, maar alleen met 1 verhoogd
Dim OntvangByte    As Byte
Dim Seconde        As Byte
Dim Uur            As Byte
Dim UurDCF         As Byte    ;Bevat het DCF uur, is er een pariteitserror, dan wordt Uur NIET gelijk gemaakt met UurDCF 
Dim UurLCD         As Byte    ;Normaal gelijk aan Uur, alleen bij AM/PM notatie wijkt hij 's middags af
Dim WeekDag        As Byte
Dim BD1            As Byte    ;Byte Dummy 1
Dim VAR1           As Byte
Dim VAR2           As Byte
Dim VAR3           As Byte
Dim VAR4           As Byte
 
;BIT 
Dim Initialiseren  As Bit     ;TRUE bij initialiseren
Dim OntvangBit     As Bit
Dim PariteitsBit   As Bit
Dim PariteitsError As Bit
Dim Signaal        As Bit     ;TRUE als er een signaal is (gevonden)
Dim ID1            As Bit     ;Bit Dummy 1
 
PORTA = 0
PORTB = 0
Declare LCD_ENPIN PORTA.2
Declare LCD_RSPIN PORTA.3
Clear
DelayMS 200                   ;LCD stabilisering
 
Cls
Print "Signaal zoeken"
Initialiseren = TRUE
GoTo HoofdLus                 ;Spring over de subroutines
 
 
;SUBROUTINES                                                                                                            
OntvangBitAantal:             ;Vul het ontvangstbyte met het opgegeven aantal bits in BCD mode
 Clear OntvangByte
 For BD1 = 0 To BitAantal - 1
   GoSub OntvangEenBit
   If OntvangBit = 1 Then SetBit OntvangByte, BD1
 Next
 OntvangByte = ((OntvangByte >> 4) * 10) + (OntvangByte & 15) ;BCD (Binary-Coded Decimal) naar byte conversie
Return
 
 
OntvangEenBit:                ;Ontvang een bit en bewaar dit in OntvangBit
 Clear Teller
 While DCF_Signaal = AAN          
   DelayMS 1
   Inc Teller
   If Teller > 3000 Then ErrorOntvangst ;Tegen een eventuele 'hang up' 
 Wend  
 
 DelayMS 155                  ;135 - 175msec
 OntvangBit = DCF_Signaal
 
 If Initialiseren = TRUE Then
   CursorPos = (Seconde * LCD_Char) / 58    ;Bereken waar de cursor moet staan (afhankelijk van de wachttijd en LCD type)
   Print At 2, CursorPos, Blokje            ;Maak tijdsbalk actueel
 Else
    Print At 1, 7, DEC2 Seconde      ;Zet de seconden op het LCD
 
   PariteitsBit = PariteitsBit + OntvangBit ;Bit, dus 0+0=0 / 0+1=1 / 1+1=0 / 1+0=1
 EndIf
 
 Inc Seconde         ;Omdat we toch elke seconde in deze routine zijn, gebruiken we het ook om de seconden te tellen
    Print At 1, 7, DEC2 Seconde      ;Zet de seconden op het LCD
 SecondePuls = On             ;Uitgangssignaal seconde puls
 DelayMS 500
 SecondePuls = OFF
 DelayMS PulsLengte - 500
Return
 
 
 
;HOOFDPROGRAMMA                                                                                                         
HoofdLus:

 Clear AlgemeneTeller
 Seconde = 00                 ;Start met de eerste seconde
 Signaal = FALSE
 
 While Signaal = FALSE        ;Wacht tot het DCF signaal hoog is
   Clear Teller
   While DCF_Signaal = UIT
     Inc Teller
     DelayMS 1
     If Teller > OpStartTijd Then ErrorOntvangst ;Opstart tijd voor de DCF77 ontvanger bij power-on
   Wend
 
   Clear Teller
   While DCF_Signaal = AAN    ;Meet de tijd tussen de pulsen
     Inc Teller
     DelayMS 10
     If Initialiseren = FALSE Then
       Select Case Teller
         Case 85  - PulsLengteX       ;85 = (1000mSec - 155mSec) / 10
         Case 25
           SecondePuls = On
         Case 75
           SecondePuls = OFF
         Case 250
           GoTo ErrorOntvangst;Signaal is niet binnen de tijd van niveau veranderd
       EndSelect   
     Else
       If Teller > (OpStartTijd / 10) Then ErrorOntvangst ;Opstart tijd voor de DCF77 ontvanger bij power-on
     EndIf
   Wend
 
   If AlgemeneTeller >= MaxVindTijd Then ErrorOntvangst ;Als er meer dan 'MaxVindTijd' seconden zijn geteld dan hebben we een probleem
   Inc AlgemeneTeller
   If Teller > 100 Then Signaal = TRUE ;We tellen per 10mSec, dus we hebben minstens 100x10mSec nodig om het begin te vinden
 
   If Initialiseren = TRUE Then
     CursorPos = (AlgemeneTeller * LCD_Char) / MaxVindTijd ;Bereken waar de cursor moet staan (afhankelijk van de wachttijd en LCD type)
     Print At 1, 1, "Signaal gevonden"
     Print At 2, CursorPos , Blokje ;Zet blokjes op het LCD tijdens wachten op het init signaal
   EndIf 
 Wend
 
 If Initialiseren = TRUE Then
   Cls
   Print "Initialiseren..."
   Print At 2, 1, Rep "_" \ LCD_Char ;Teken een dunne lijn die aangeeft hoe lang de tijdsbalk wordt
 Else
   CursorPos = LCD_Char - 9   ;X-positie van tijd op het LCD
   Cursor 1, CursorPos
 EndIf
   If PariteitsError = TRUE Then ;Tijd onbetrouwbaar, de PIC zorgt nu zelf voor actualisering van de tijd
     If Minuut < 59 Then 
       Inc Minuut
     Else
       Minuut = 00            ;\
       If Uur < 23 Then       ;-Tijd wordt gelijk gezet, ondanks pariteitserror
         Inc Uur              ;/
       Else
         Uur = 00             ;De datum verhogen heeft geen zin, die wordt bij een error nl. niet gewijzigd
       EndIf
     EndIf
   Else                       ;Geen error, dus gewoon de DCF tijd neerzetten
     Minuut = MinuutDCF
     Uur    = UurDCF          ;Het uur wordt alleen geactualiseerd als er geen pariteitserror is
   EndIf
 
 
UurLCD = Uur
   Cls
   If UurLCD < 10 Then Print " " ;Wis de eerste nul (08:00:00 --> 8:00:00) (Nul onderdrukking)
   Print Dec UurLCD, ":", DEC2 Minuut, ":" ;Zet elke minuut de actuele tijd op het LCD
 
   Tijd = UurLCD * 100
   Tijd = Tijd + Minuut
 
   Print At 1, 10, Dec Tijd 
    VAR1 = Dig Tijd , 3 
    VAR2 = Dig Tijd , 2
    VAR3 = Dig Tijd , 1
    VAR4 = Dig Tijd , 0 
    Print At 2, 1, Dec VAR1
    Print At 2, 4, Dec VAR2 
    Print At 2, 7, Dec VAR3 
    Print At 2, 10, Dec VAR4 
 
  RCSTA = %00000000           ;Zet USART uit, anders ontvangt deze zijn eigen verzonden data
  SerOut SerieelUit, Baud2400I, [Tijd] ;Geinverteerd verzenden (vanwege BC547) 
 
 If Signaal = TRUE Then       ;Startbit succesvol ontvangen, start met het vullen van data
   GoSub OntvangEenBit        ;0: Bit 0 (gereserveerd (DCF77 protocol)
 
Verder:                       ;Als de gong klinkt, wordt bit 0 genegeerd, na de gong, wordt hier verder gegaan
   For BD1 = 1 To 14          ;1...14: deze bits zijn gereserveerd (info zie www.picbasic.nl --> DCF77 info)
     GoSub OntvangEenBit
   Next
 
   Clear PariteitsBit         ;Als PariteitsError is geset, dan is PariteitsBit ook verminkt (geweest), even resetten
   Clear PariteitsError       ;Reset PariteitsError (Deze 2 resets op deze plek laten staan ivm. pariteitserror tijdens initialiseren)
 
   GoSub OntvangEenBit        ;15: Welke zend antenne is gebruikt?
 
   GoSub OntvangEenBit        ;16: Omschakeling naar zomer/winter volgend uur?
;  IF OntvangBit = 1 THEN...  ;Dit bit wordt niet gebruikt in dit programma
 
   GoSub OntvangEenBit        ;17: Zomer- of wintertijd?
 
   For BD1 = 18 To 19         ;18...19: Deze bits worden niet gebruikt (Time Zone bit 2 en schrikkel-seconde bit)
     GoSub OntvangEenBit
   Next
 
   GoSub OntvangEenBit        ;20: Startbit, normaal altijd 1, dit bit wordt niet gebruikt in dit programma
;  IF OntvangBit = 0 THEN...  ;Dit bit wordt niet gebruikt in dit programma
 
   BitAantal = 7              ;21...27: Ontvang minuut (7 bits)
   GoSub OntvangBitAantal
   MinuutDCF = OntvangByte    ;Wordt eerst in MinuutDCF opgeslagen, als blijkt dat er geen pariteitserror is, dan wordt het aan Minuut gegeven, bij een error niet
 
   GoSub OntvangEenBit        ;28: Pariteitsbit 1, minuten
   If PariteitsBit = On Then PariteitsError = TRUE
 
   BitAantal = 6              ;29...34: Ontvang uur (6 bits)
   GoSub OntvangBitAantal
   UurDCF    = OntvangByte    ;Wordt eerst in UurDCF opgeslagen, als blijkt dat er geen pariteitserror is, dan wordt het aan Uur gegeven, bij een error niet
 
   GoSub OntvangEenBit        ;35: Pariteitsbit 2, uren
   If PariteitsBit = On Then PariteitsError = TRUE
 
   BitAantal = 6              ;36...41: Ontvang dag (6 bits)
   GoSub OntvangBitAantal
   Dag       = OntvangByte
 
   BitAantal = 3              ;42...44: Ontvang weekdag (3 bits)
   GoSub OntvangBitAantal
   WeekDag   = OntvangByte
 
   BitAantal = 5              ;45...49: Ontvang maand (5 bits)
   GoSub OntvangBitAantal
   Maand     = OntvangByte
 
   BitAantal = 8              ;50...57: Ontvang jaar (8 bits)
   GoSub OntvangBitAantal
   Jaar      = OntvangByte
 
   GoSub OntvangEenBit        ;58: Pariteitsbit 3, datum
   If PariteitsBit = On Then PariteitsError = TRUE
 
   If Initialiseren = TRUE Then
     If PariteitsError = FALSE Then ;Als er GEEN pariteitserror is, dan zijn we... 
       Initialiseren = FALSE  ;...klaar met initialiseren (Dus opnieuw initialiseren als er WEL een pariteitserror tijdens initialiseren was
     EndIf
     Cls
   EndIf
   EndIf
 
GoTo HoofdLus
 
GoTo Verder                   ;Ga verder met het lezen van de DCF77 bits vanaf bit 1 (We slaan de DCF77 bit 0 over)
 
 
ErrorOntvangst:

 Cls
 Print "Geen signaal"         ;Startbit niet gevonden of geen signaal?
 
 Repeat
   Clear                      ;Wis alle RAM
   ID1 = DCF_Signaal
   While DCF_Signaal = ID1    ;Wacht op signaal verandering
     Inc SignaalCheck
     DelayMS 1
   Wend
   ID1 = ID1 ^ 1
   While DCF_Signaal = ID1    ;Wacht op signaal verandering
     Inc SignaalCheck
     DelayMS 1
   Wend
 Until SignaalCheck < 990
 
 Initialiseren = TRUE         ;Na een error moet er weer worden geinitialiseerd
GoTo HoofdLus
 
END

Dit werkt echt perfekt, ik hoop dat je er iets aan hebt.