Warning: Use of undefined constant admin - assumed 'admin' (this will throw an Error in a future version of PHP) in /disk/site/hcc.nl/interessegroep/forth/www/w/cookbook/userauth2/userauth2-permchecklib.php on line 927 Warning: Use of undefined constant admin - assumed 'admin' (this will throw an Error in a future version of PHP) in /disk/site/hcc.nl/interessegroep/forth/www/w/cookbook/userauth2/userauth2-permchecklib.php on line 927 Deprecated: Function create_function() is deprecated in /disk/site/hcc.nl/interessegroep/forth/www/w/pmwiki.php on line 470 Warning: Use of undefined constant admin - assumed 'admin' (this will throw an Error in a future version of PHP) in /disk/site/hcc.nl/interessegroep/forth/www/w/cookbook/userauth2/userauth2-permchecklib.php on line 927 Warning: Cannot modify header information - headers already sent by (output started at /disk/site/hcc.nl/interessegroep/forth/www/w/cookbook/userauth2/userauth2-permchecklib.php:927) in /disk/site/hcc.nl/interessegroep/forth/www/w/pmwiki.php on line 1257 HCC!Forth | ByteForth / ProgrammaVoorbeeld
Warning: Use of undefined constant admin - assumed 'admin' (this will throw an Error in a future version of PHP) in /disk/site/hcc.nl/interessegroep/forth/www/w/cookbook/userauth2/userauth2-permchecklib.php on line 927 Deprecated: Function create_function() is deprecated in /disk/site/hcc.nl/interessegroep/forth/www/w/pmwiki.php on line 470 Deprecated: Function create_function() is deprecated in /disk/site/hcc.nl/interessegroep/forth/www/w/pmwiki.php on line 470
HCC!Forth Warning: Use of undefined constant admin - assumed 'admin' (this will throw an Error in a future version of PHP) in /disk/site/hcc.nl/interessegroep/forth/www/w/cookbook/userauth2/userauth2-permchecklib.php on line 927

HCC!forth

ByteForth


7. Voorbeeld van een compleet programma

Het volgende programma krijgt analoge input binnen die gedigitaliseerd wordt. Het resultaat komt als een binair getal op 8 leds te staan.

\ Analoog naar digitaal omzetting met de TLC549IP
\ Codelengte voor de AT89C2051=201 bytes, voor de AT90S2313=292 bytes).

89C2051  TARGET                    \ Compileer voor AT89C2051
$90 SFR LEDS                       \ Poort 1 met 8 leds
$B4 BIT-SFR ADC-KLOK               \ Klokpuls invoer P3.4
$B5 BIT-SFR ADC-DATA               \ Data uitvoer P3.5
$B7 BIT-SFR ADC-SELECTEER          \ Activeer invoer P3.7

: ADC               ( -- u )       \ Doe een AD-omzetting
    FALSE TO ADC-KLOK              \ Stop lezen van analoge invoer
    TRUE TO ADC-SELECTEER          \ Start AD-omzetting
    4 0 DO  LOOP                   \ Conversie duurt min. 17 us 
    FALSE TO ADC-SELECTEER         \ Start uitlezen
    ADC-DATA 1 AND                 \ Lees databit 7
    7 0 DO                         \ Lees resterende 7 databits
        TRUE TO ADC-KLOK
        FALSE TO ADC-KLOK          \ Schuif volgend bit naar buiten
        2 *  ADC-DATA  1 AND  OR   \ Schaal data in en lees volgend bit
    LOOP
    TRUE TO ADC-KLOK               \ Blijf analoge invoer lezen
    ;

: NAAR-LEDS     ( u -- )           \ Print data binair
    INVERT TO LEDS
    ;

: KNIPPER       ( -- )             \ Visualiseer opstarten
    -1 NAAR-LEDS  250 MS           \ Alle leds aan
    0 NAAR-LEDS   250 MS           \ Alle leds uit
    ;

: TOON-ADC      ( -- )             \ Toon omzetting op LEDS
    SETUP  KNIPPER
    BEGIN  ADC  NAAR-LEDS  AGAIN   \ Lees ADC, en toon uitkomst
    ;

' TOON-ADC   RESET-VEC  SET-VECTOR \ Installeer ADC omzetter

\ Einde