Hallo Allemaal ,
Ik heb het volgende ge probeert mar dit lukt me niet
Dezen coden hier onder leest binair in en zet het dec op het display
Het zijn 3 tellers maar bij de eerste teller value1 wil ik graag zo dra er een verandering is naar boven of naar beneden en op het display komt een verandering dec waarden dat er dan een Letje op portb.0 heel kort op blinkt een 10 millie sec
Zo dra de value1 met 1 verhoogd of verlaagd dat dan weer de led even op blinkt
Wie weet hier wat er bij value1 moet gezet worden
Led hangt aan portb.0
Device 16F876A ;Gebruik een 16F628A type
Config hs_osc , WDT_OFF, PWRTE_ON, LVP_OFF,
; Hier stond eerst nog een , aan het einde, dat mag niet!set xtal
Xtal = 16 ;Gebruik een kristal van 16MH
All_Digital TRUE
ADCON1 = 7
Cls; 76543210
TRISA = %11111111
TRISB.0 = 0
TRISC = %11111111Symbol Lengte = 16 ;Dit getal bepaalt de lengte van de lijn (display breedte)
Symbol Minuut = 100 ;Een minuut heeft 60 seconden
Symbol led1 = PORTB.0Dim teller As Byte
Dim value1 As Byte
Dim value2 As Byte
Dim value3 As Byte
Clear ;Wis alle RAM geheugen
DelayMS 1000 ;LCD stabiliseringCls
Print At 1, 6, "LOADING!!" ;Scherm wissen
Print At 2, 1, Rep "*"\Lengte ;Teken een lijn van underscore (lage) streepjesRepeat
Inc teller
Print At 1, 1, Dec teller ;Zet actuele stand van 'Teller' op de eerste regel
Print At 2, 1, Rep 255\(teller * Lengte) / Minuut ;Aantal blokjes afhankelijk van 'Teller'
DelayMS 18 ;1 seconde
Until teller = Minuut ;Blokjes tekenen totdat de minuut voorbij is
;LCD stabilisering
DelayMS 1000Cls
While 1 = 1 ;Oneindige lus
Print At 1, 4, "Address."
Print At 2 , 1, "Bank."
Print At 2, 8, "Program."value1 = PORTC & 0x7F ;lees port in (& 0x3F zorgt voor dat alleen eerste 6 bits gelezen worden)
Print At 1, 12, Dec3 value1 ;Plaats actuele waarde van PORTA
DelayMS 2
If value1 = value1 + 1 Then
led1 = 1
DelayMS 2
led1 = 0
EndIfvalue2 = PORTA & 0x3 ;lees port in (& 0x3F zorgt voor dat alleen eerste 2 bits gelezen worden)
Print At 2, 6, Dec1 value2 ;Plaats actuele waarde van PORTA ;Oneindige lusvalue3 = PORTA & 0x1c >> 2 ;lees port in (& 0x1C zorgt voor dat alleen 3 TO 5 bits gelezen worden DIT WERKTPrint At 2, 15, Dec1 value3 ;Plaats actuele waarde van PORTA
Print At 2, 16, Dec1 value3 ;Plaats actuele waarde van PORTAWend
End
End
wie kan me hier in helpen heb all wat dingen ge probeerd maar ik weet het nu niet meer ja het zal wel weer simpel zijn maar nu weet ik het dus niet
Alvast bedankt,!!
Je leest de teller in en plaatst de waarde in Value1.
Vervolgens ga je vergelijken:
Is Value1 gelijk aan Value1 + 1? Antwoord: nee!!
Je kan het oplossen door value1 op te slaan in Oldvalue1.
...
Value1 = teller1
if(Value1 niet gelijk aan Oldvalue1)
laat led knipperen
else
led uit
Oldvalue1 = Value1
...
ik doe dn toch geloof ik iets vekeerd
kunt u me vertellen hoe die coden er ongever uit moet zien
ik heb nu all 12 keer iets gedaan maar wil nog niet echt lukken
led is portb.0
Werkt de weergave via het display wel?
Probeer anders eerste eens een ledje continue te laten knipperen?
En 2 ms (0,002 sec)is een heel kort knippertje...! Kun je niet zien.
Probeer eerts eens met iets van 300 ms of zo.
Ja dezen code werkt helemaal alle 3 de value 1,2,3 op het display doen het . wil dan graag bij value1 dat er een ledje blinkt 30ms als de waarde verandert om hoog of omlaag het ledje dan even blinkt
Device 16F876A ;Gebruik een 16F628A type
Config hs_osc , WDT_OFF, PWRTE_ON, LVP_OFF,
; Hier stond eerst nog een , aan het einde, dat mag niet!set xtal
Xtal = 16 ;Gebruik een kristal van 16MH
All_Digital TRUE
ADCON1 = 7
Cls; 76543210
TRISA = %11111111
TRISB.0 = 0
TRISC = %11111111Symbol Lengte = 16 ;Dit getal bepaalt de lengte van de lijn (display breedte)
Symbol Minuut = 100 ;Een minuut heeft 60 seconden
Symbol led1 = PORTB.0Dim teller As Byte
Dim value1 As Byte
Dim value2 As Byte
Dim value3 As Byte
Clear ;Wis alle RAM geheugen
DelayMS 1000 ;LCD stabiliseringCls
Print At 1, 6, "LOADING!!" ;Scherm wissen
Print At 2, 1, Rep "*"\Lengte ;Teken een lijn van underscore (lage) streepjesRepeat
Inc teller
Print At 1, 1, Dec teller ;Zet actuele stand van 'Teller' op de eerste regel
Print At 2, 1, Rep 255\(teller * Lengte) / Minuut ;Aantal blokjes afhankelijk van 'Teller'
DelayMS 18 ;1 seconde
Until teller = Minuut ;Blokjes tekenen totdat de minuut voorbij is
;LCD stabilisering
DelayMS 1000Cls
While 1 = 1 ;Oneindige lus
Print At 1, 4, "Address."
Print At 2 , 1, "Bank."
Print At 2, 8, "Program."value1 = PORTC & 0x7F ;lees port in (& 0x3F zorgt voor dat alleen eerste 6 bits gelezen worden)
Print At 1, 12, Dec3 value1 ;Plaats actuele waarde van PORTAvalue2 = PORTA & 0x3 ;lees port in (& 0x3F zorgt voor dat alleen eerste 2 bits gelezen worden)
Print At 2, 6, Dec1 value2 ;Plaats actuele waarde van PORTA ;Oneindige lusvalue3 = PORTA & 0x1c >> 2 ;lees port in (& 0x1C zorgt voor dat alleen 3 TO 5 bits gelezen worden DIT WERKTPrint At 2, 15, Dec1 value3 ;Plaats actuele waarde van PORTA
Print At 2, 16, Dec1 value3 ;Plaats actuele waarde van PORTAWend
End
End
Dim OldValue1 as byte
... jouw code
value1 = PORTC & 0x7F
if value1 = Oldvalue1 ; wanneer opgeslagen waarde niet gelijk
; is aan nieuwe waarde gaat led aan,
; totdat nieuwe waarde gelijk is die van
; de vorige keer dan gaat led uit.
Led = 1
else
Led = 0
WAITMS 300
Oldvalue1 = value1 ; De nieuwe waarde wordt bewaart
... vervolg jouw code
alvast bedankt ik ga hem uit proberen
oke dit werkt heel erg bedankt voor jullie hulp, ben hier blij mee
dit is de code geworden
value1 = PORTC & 0x7F ;lees port in (& 0x3F zorgt voor dat alleen eerste 6 bits gelezen worden)
Print At 1, 12, Dec3 value1 ;Plaats actuele waarde van PORTAIf value1 = Oldvalue1 Then ; wanneer opgeslagen waarde niet gelijk
; is aan nieuwe waarde gaat led aan,
; totdat nieuwe waarde gelijk is die van
; de vorige keer dan gaat led uit.
led = 0
Else
led = 1DelayMS 5
Oldvalue1 = value1 ; De nieuwe waarde wordt bewaart
EndIf
dan heb ik eigenlijk nog 1 vraag ,
als je het nu anders wil doen bij een 16f876
en je gebruikt alle ingangen en bij verandering van de ingang hoog laag welke poort dan ook moet die de code van serout verzenden
hoe pak je dit dan aan
[Bericht gewijzigd door ricardo12345 op (92%)]