( Pilote des ports A,B,C,D,E,F et G de l'emulateur MICROCHIP. Version 1.00 du 26 Avril 2015. Ecrit par jpb.forth . ) TELECHARGEMENT DECIMAL ( 054 CONSTANT RCOUNT 132 CONSTANT IFS0 140 CONSTANT IEC0 258 CONSTANT PR1 260 CONSTANT T1CON 270 CONSTANT PR3 274 CONSTANT T3CON 704 CONSTANT TRISA 706 CONSTANT PORTA 708 CONSTANT LATA 710 CONSTANT TRISB 712 CONSTANT PORTB 714 CONSTANT LATB 716 CONSTANT TRISC 718 CONSTANT PORTC 720 CONSTANT LATC 722 CONSTANT TRISD 724 CONSTANT PORTD 726 CONSTANT LATD 728 CONSTANT TRISE 730 CONSTANT PORTE 732 CONSTANT LATE 734 CONSTANT TRISF 736 CONSTANT PORTF 738 CONSTANT LATF 740 CONSTANT TRISG 742 CONSTANT PORTG 744 CONSTANT LATG ) HERE 1 3 7 * + ALLOT CONSTANT TABLE_PORTS ( INDEX qui varie de 0 a 20 pour 20 ms MEM PRGH PRGL x 7 pour ports A,B,C,D,E,F et G ) PRGHERE 0 34 PRG! ( Interruption T3 ) ] 54 ( RCOUNT ) DUP >R @ R> ( Sauvegarde de RCOUNT ) 132 ( IFS0 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) TABLE_PORTS DUP >R @ DUP 7 U< IF DUP DUP 2* + 2* DUP R@ + 4+ DUP >R @ R> 2+ @ OR IF DUP 706+ ( PORTA ) @ OVER R@ + 2+ @ OVER XOR 3 PICK 704+ ( TRISA ) @ AND IF OVER R@ + 2+ >R DUP R@ ! R@ 4+ @ R> 2+ @ EXECUTE ELSE DROP THEN THEN DROP THEN 1+ DUP 20 U< AND R> ! ! ( Recuperation de RCOUNT ) [ HEX 06 4000 ( RETFIE ) PRG, DECIMAL : SYNC_PORT_A ( adrh_prg,adrb_prg,msq --> - ) 140 ( IEC0 ) DUP >R @ -129 AND R@ ! ( Inhibition interruption TIMER3 ) [ 0 6 * DUP 704+ ( TRISA ) LITERAL TABLE_PORTS 2+ + LITERAL ] >R >R DUP R@ ! DUP R@ 4+ ! R> 2+ @ XOR R@ ! R@ 2+ ! R> 4+ ! 258 ( PR1 ) @ 270 ( PR3 ) ! 260 ( T1CON ) @ 274 ( T3CON ) ! 128 R> +! ( Activation interruption TIMER3 ) 132 ( IFS0 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) ; : SORT_PORT_A ( n --> - ) 704 @ OR 708 ! ; : SYNC_PORT_B ( adrh_prg,adrb_prg,msq --> - ) 140 ( IEC0 ) DUP >R @ -129 AND R@ ! ( Inhibition interruption TIMER3 ) [ 1 6 * DUP 704+ ( TRISA ) LITERAL TABLE_PORTS 2+ + LITERAL ] >R >R DUP R@ ! DUP R@ 4+ ! R> 2+ @ XOR R@ ! R@ 2+ ! R> 4+ ! 258 ( PR1 ) @ 270 ( PR3 ) ! 260 ( T1CON ) @ 274 ( T3CON ) ! 128 R> +! ( Activation interruption TIMER3 ) 132 ( IFS0 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) ; : SORT_PORT_B ( n --> - ) 710 @ OR 714 ! ; : SYNC_PORT_C ( adrh_prg,adrb_prg,msq --> - ) 140 ( IEC0 ) DUP >R @ -129 AND R@ ! ( Inhibition interruption TIMER3 ) [ 2 6 * DUP 704+ ( TRISA ) LITERAL TABLE_PORTS 2+ + LITERAL ] >R >R DUP R@ ! DUP R@ 4+ ! R> 2+ @ XOR R@ ! R@ 2+ ! R> 4+ ! 258 ( PR1 ) @ 270 ( PR3 ) ! 260 ( T1CON ) @ 274 ( T3CON ) ! 128 R> +! ( Activation interruption TIMER3 ) 132 ( IFS0 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) ; : SORT_PORT_C ( n --> - ) 716 @ OR 720 ! ; : SYNC_PORT_D ( adrh_prg,adrb_prg,msq --> - ) 140 ( IEC0 ) DUP >R @ -129 AND R@ ! ( Inhibition interruption TIMER3 ) [ 3 6 * DUP 704+ ( TRISA ) LITERAL TABLE_PORTS 2+ + LITERAL ] >R >R DUP R@ ! DUP R@ 4+ ! R> 2+ @ XOR R@ ! R@ 2+ ! R> 4+ ! 258 ( PR1 ) @ 270 ( PR3 ) ! 260 ( T1CON ) @ 274 ( T3CON ) ! 128 R> +! ( Activation interruption TIMER3 ) 132 ( IFS0 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) ; : SORT_PORT_D ( n --> - ) 722 @ OR 726 ! ; : SYNC_PORT_E ( adrh_prg,adrb_prg,msq --> - ) 140 ( IEC0 ) DUP >R @ -129 AND R@ ! ( Inhibition interruption TIMER3 ) [ 4 6 * DUP 704+ ( TRISA ) LITERAL TABLE_PORTS 2+ + LITERAL ] >R >R DUP R@ ! DUP R@ 4+ ! R> 2+ @ XOR R@ ! R@ 2+ ! R> 4+ ! 258 ( PR1 ) @ 270 ( PR3 ) ! 260 ( T1CON ) @ 274 ( T3CON ) ! 128 R> +! ( Activation interruption TIMER3 ) 132 ( IFS0 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) ; : SORT_PORT_E ( n --> - ) 728 @ OR 732 ! ; : SYNC_PORT_F ( adrh_prg,adrb_prg,msq --> - ) 140 ( IEC0 ) DUP >R @ -129 AND R@ ! ( Inhibition interruption TIMER3 ) [ 5 6 * DUP 704+ ( TRISA ) LITERAL TABLE_PORTS 2+ + LITERAL ] >R >R DUP R@ ! DUP R@ 4+ ! R> 2+ @ XOR R@ ! R@ 2+ ! R> 4+ ! 258 ( PR1 ) @ 270 ( PR3 ) ! 260 ( T1CON ) @ 274 ( T3CON ) ! 128 R> +! ( Activation interruption TIMER3 ) 132 ( IFS0 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) ; : SORT_PORT_F ( n --> - ) 734 @ OR 738 ! ; : SYNC_PORT_G ( adrh_prg,adrb_prg,msq --> - ) 140 ( IEC0 ) DUP >R @ -129 AND R@ ! ( Inhibition interruption TIMER3 ) [ 6 6 * DUP 704+ ( TRISA ) LITERAL TABLE_PORTS 2+ + LITERAL ] >R >R DUP R@ ! DUP R@ 4+ ! R> 2+ @ XOR R@ ! R@ 2+ ! R> 4+ ! 258 ( PR1 ) @ 270 ( PR3 ) ! 260 ( T1CON ) @ 274 ( T3CON ) ! 128 R> +! ( Activation interruption TIMER3 ) 132 ( IFS0 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) ; : SORT_PORT_G ( n --> - ) 740 @ OR 744 ! ; ( FIN )