mainTitle = "Test interruption via télécommande infrarouge"; 
$this->asideSection = "Permet de vérifier le bon fonctionnement du récepteur KY-022 " 
."via une interruption matérielle."; 
?> 
\ ****************************************************************************** 
\ Test interruption via télécommande infrarouge 
\ 
\ Forth version: Flash Forth (http://flashforth.com/)  
\ author: M PETREMANN 
\ Creation:     01 juillet 2019 
\ Modification: 11 juillet 2019 
\ ****************************************************************************** 
-tstI 
marker -tstI 
 
37 constant PORTB    \ define register PORT port B 
36 constant DDRB     \ define register DDR  port B 
35 constant PINB     \ define register PIN  port B 
 
%00000001 constant pin19    \ mask 00000001 for pin 19 (PB0) 
%10000000 constant pin26    \ mask 10000000 for pin 26 (PB7) 
 
: init-ddrb ( ---) 
    pin19 DDRB mclr         \ init PORTB to input for PB0 
    pin26 DDRB mset         \ init PORTB to output for PB7 
  ; 
 
\ WARNING: specific Mega 2560 
10 constant PCINT0          \ Pin Change Interrupt Request 0 
 
107 constant PCMSK0         \ Pin Change Mask Register 0 $6b 
 
104 constant PCICR          \ Pin Change Interrupt Control Register $68 
\  $07 constant PCICR_PCIE  \ Pin Change Interrupt Enables 
 
: toggleLed ( ---) 
    %00000001 PCMSK0 mclr   \ mask interrupt for PB0 
    pin26 PORTB mtst 
    if      pin26 PORTB mclr 
    else    pin26 PORTB mset 
    then 
    %00000001 PCMSK0 mset   \ enable interrupt for PB0 
    ;i 
 
 
: init-tgLed 
    ['] toggleLed PCINT0 int! 
    %00000001 PCMSK0 mset \ mask interrupt for PB0 
    %00000111 PCICR  mset 
    ei                    \ ei = Enable Interrupt 
; 
 
init-tgLed 
init-ddrb