Accèder aux leds du clavier.

Contenu du snippet

les lompes : Num et Caps et Scoll , on haut du clavier numérique peuvent être allumées et éteintes par un programme.

Source / Exemple :


#include <stdio.h>
#include <dos.h>
#include <bios.h>
/* ---------------------------------------------------  */
#define  SCRL  16
#define  NUML  32
#define  CAPL  64
#define  INS   128
typedef  unsigned  char  BYTE;
typedef  unsigned  int   WORD;
typedef  union  vel  far  *VP; /* pointeur sur la RAM-CLAVIER  */

struct  velb
  { BYTE  caractere,
          attribut;
   };
struct  velw
  { WORD  contenu;
   };
union   vel
  { struct  velb  h;
    struct  velw  x;
   };
/*   *****************************************************************  */
   VP  vptr ;  unsigned int clav  ;
/*  ***************************************************************************************  */ /* ****************************************************************************************  */
 void ADR_ECRAN(void)     /* donne l'@ de base du CLAVIER_RAM */
  { 
     vptr =(VP)(((unsigned long)( 0x40  ))<<16 | ( 0x17 ));

  }
/* **********************************************************************  */
 void sauvegarder(void)
   { clav = vptr -> x.contenu ;      }
 void restorer ( unsigned int clavi)
   { vptr -> x.contenu = clavi ;      }
/* --------------------------------------------------  */
void  set_flag ( unsigned  flag  )
  {
    union  REGS  regs ;
    unsigned  z ;

      z = vptr -> x.contenu ;
      z  |= flag ;
     vptr -> x.contenu  = z ;
     regs.h.ah = 1 ;
     int86(0x16 , &regs ,&regs );
   }
/*  -------------------------------------------------   */
 void  clr_flag ( unsigned  flag   )
   {
    union  REGS  regs ;
    unsigned  z ;

      z = vptr -> x.contenu ;
      z  &= flag ;
     vptr -> x.contenu  = z ;

      regs.h.ah  = 1 ;
      int86( 0x16 ,&regs  ,&regs);
    }
/*  ---------------------------------------------------  */

 void main(void)
   {
    unsigned int    i  ;
    unsigned int  fifa ;

    printf ( "\n\n    REGARDE LES LEDs (LUMIERES) DE VOTRE CLAVIER \n\n\n           " );
    ADR_ECRAN() ;
    sauvegarder() ;
     for (i=0 ; i<65 ; ++i)
       {
	 set_flag( CAPL);
	 delay(54);
	 clr_flag(CAPL);
	  set_flag(NUML);
	 delay(54);
	 clr_flag(NUML);
	  set_flag(SCRL);
	 delay(55);
	 clr_flag(SCRL);
	  delay(55);
	}
	    printf("    Attention le clavier vas c'‚xploser dans 5 secandes \n\n") ;
	  for (i=0 ; i<60 ; ++i)
	  { clr_flag(!SCRL | !NUML | !CAPL);
	    delay(54);
	    set_flag(SCRL|NUML|CAPL);
	    delay(55);
	   }
      clr_flag(!SCRL | NUML | !CAPL);  delay(54); set_flag(NUML);

      restorer ( clav ) ;

     printf("       Fin du programme \n\n") ;

    }
 /*  ------------------------------------------   */

Conclusion :


c'est un programme pour débutants.
Compiler avec le turboC 7.0

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.