mainTitle = "définition mots pinMode, digitalRead et digtalWrite en FORTH"; $this->asideSection = "Définition en langage FORTH des mots pinMode, digitalRead et digtalWrite " . "qui existent en langage C pour Arduino"; ?> \ ****************************************************************************** \ définition mots pinMode, digitalRead et digtalWrite en FORTH \ \ Forth version: Flash Forth (http://flashforth.com/) \ author: M PETREMANN \ Creation: 24 mai 2019 \ Modification: -- ----- ---- \ ****************************************************************************** decimal flash \ selection mémoire FLASH -readwrite \ supprime les précédentes définitions crées après -readwrite marker -readwrite \ définit le marqueur -readwrite decimal \ les PORTS B, C et D sont présents sur toutes les cartes Arduino \ PORTB 37 constant PORTB \ Port B Data Register 36 constant DDRB \ Port B Data Direction Register 35 constant PINB \ Port B Input Pins \ PORTC \ 40 constant PORTC \ Port C Data Register \ 39 constant DDRC \ Port C Data Direction Register \ 38 constant PINC \ Port C Input Pins \ PORTD 43 constant PORTD \ Port D Data Register 42 constant DDRD \ Port D Data Direction Register 41 constant PIND \ Port D Input Pins \ les ports E, F, G, H, J, K, L sont spécifiques à certaines cartes Arduino \ PORTE 46 constant PORTE \ Data Register, Port E 45 constant DDRE \ Data Direction Register, Port E 44 constant PINE \ Input Pins, Port E \ PORTF 49 constant PORTF \ Data Register, Port F 48 constant DDRF \ Data Direction Register, Port F 47 constant PINF \ Input Pins, Port F \ PORTG 52 constant PORTG \ Data Register, Port G 51 constant DDRG \ Data Direction Register, Port G 50 constant PING \ Input Pins, Port G \ PORTH 258 constant PORTH \ PORT H Data Register 257 constant DDRH \ PORT H Data Direction Register 256 constant PINH \ PORT H Input Pins \ PORTJ 261 constant PORTJ \ PORT J Data Register 260 constant DDRJ \ PORT J Data Direction Register 259 constant PINJ \ PORT J Input Pins \ PORTK 264 constant PORTK \ PORT K Data Register 263 constant DDRK \ PORT K Data Direction Register 262 constant PINK \ PORT K Input Pins \ PORTL 267 constant PORTL \ PORT L Data Register 266 constant DDRL \ PORT L Data Direction Register 265 constant PINL \ PORT L Input Pins : defPin: ( PORTx mask ---| create c, c, \ compile PORT et masque du pin à définir does> dup c@ \ empile masque du pin swap 1+ c@ \ empile PORT du pin ; $ff constant OUTPUT $00 constant INPUT \ exemple \ PORTB $80 defPin: pin13 : pinMode (--- mask port) state ---) 0= if 1- dup c@ \ récupère valeur DDR rot $ff xor \ XOR logique avec $ff and swap c! \ ET logique avec résultat, remet valeur dans DDR else 1- dup c@ \ récupère valeur DDR rot or \ OU logique avec mask swap c! \ remet valeur dans DDR then ; \ Exemple: \ pin13 OUTPUT pinMode \ pin13 INPUT pinMode : digitalRead (--- fl) 1- 1- c@ and \ récupère valeur registre PIN, fait un AND logique if true \ si valeur pas nulle, empile TRUE else false \ si valeur nulle, empile FALSE then ; \ Exemple: \ pin13 digitalRead true constant ON false constant OFF : digitalWrite (fl ---) 0= if dup c@ \ récupère valeur registre PORT rot $ff xor and \ fait un XOR sur masque suivi de AND swap c! \ met résultat dans registre else dup c@ \ récupère valeur registre PORT rot or \ fait un OR logique swap c! \ met résultat dans registre then ; \ Exemple: \ pin13 ON digitalWrite -pins marker -pins \ définition pinXX PORTB $80 defPin: pin13 PORTB $40 defPin: pin12 PORTB $20 defPin: pin11 PORTB $10 defPin: pin10 PORTH $20 defPin: pin09 PORTH $10 defPin: pin08 PORTH $08 defPin: pin07 PORTH $04 defPin: pin06 : pin13-on ( ---) pin13 ON digitalWrite ; : pin13-off ( ---) pin13 OFF digitalWrite ; : pin12-on ( ---) pin12 ON digitalWrite ; : pin12-off ( ---) pin12 OFF digitalWrite ; : pin11-on ( ---) pin11 ON digitalWrite ; : pin11-off ( ---) pin11 OFF digitalWrite ; : init-feux ( ---) pin11 OUTPUT pinMode pin12 OUTPUT pinMode pin13 OUTPUT pinMode ; : feu-vert ( n ---) pin11-on ms \ n est la valeur du délai d'allumage en millisecondes pin11-off ; : feu-orange ( n ---) pin12-on ms \ n est la valeur du délai d'allumage en millisecondes pin12-off ; : feu-rouge ( n ---) pin13-on ms \ n est la valeur du délai d'allumage en millisecondes pin13-off ; : feux-tricolore ( ---) 3000 feu-vert 500 feu-orange 3000 feu-rouge ;