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 , ®s ,®s );
}
/* ------------------------------------------------- */
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 ,®s ,®s);
}
/* --------------------------------------------------- */
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
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.