First commit 10/04/1996
This commit is contained in:
		
							
								
								
									
										32
									
								
								BYTE.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								BYTE.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
struct Bits
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 unsigned int bit : 1;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef union char_bit
 | 
			
		||||
{
 | 
			
		||||
  char byte;
 | 
			
		||||
  Bits bits[8];
 | 
			
		||||
 | 
			
		||||
} charbit;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void main(void)
 | 
			
		||||
{
 | 
			
		||||
  charbit cb;
 | 
			
		||||
  int numero;
 | 
			
		||||
 | 
			
		||||
  do{
 | 
			
		||||
 | 
			
		||||
     scanf( "%d", numero );
 | 
			
		||||
     cb.byte = numero;
 | 
			
		||||
     printf( "%d %d %d %d %d %d %d %d", (int)cb.bits[0].bit, (int)cb.bits[1].bit, (int)cb.bits[2].bit, (int)cb.bits[3].bit,
 | 
			
		||||
					(int)cb.bits[4].bit, (int)cb.bits[5].bit, (int)cb.bits[6].bit, (int)cb.bits[7].bit );
 | 
			
		||||
 | 
			
		||||
  }while( cb.byte > 0 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										63
									
								
								PLACA.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								PLACA.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,63 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include "prn_cnt.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void main(void)
 | 
			
		||||
{
 | 
			
		||||
 char ok = 0;
 | 
			
		||||
 int salida, estado;
 | 
			
		||||
 | 
			
		||||
 Lpt_usado = 1;
 | 
			
		||||
 Init_all();
 | 
			
		||||
/*
 | 
			
		||||
 do
 | 
			
		||||
 {
 | 
			
		||||
  for ( salida = 1; salida<=128; salida*=2 )
 | 
			
		||||
  {
 | 
			
		||||
    Escribe_Salidas( 6, NULL, (char)salida );
 | 
			
		||||
    delay(50);
 | 
			
		||||
  }
 | 
			
		||||
  for ( salida = 128; salida>1; salida/=2 )
 | 
			
		||||
  {
 | 
			
		||||
    Escribe_Salidas( 6, NULL, (char)salida );
 | 
			
		||||
    delay(50);
 | 
			
		||||
  }
 | 
			
		||||
 }while( !kbhit() );
 | 
			
		||||
*/
 | 
			
		||||
/*
 | 
			
		||||
 do
 | 
			
		||||
 {
 | 
			
		||||
   printf( "\n Introduzca salida y estado: " );
 | 
			
		||||
   scanf( "%d %d", &salida, &estado );
 | 
			
		||||
Escribe_Salida( (char)salida, (char)estado );
 | 
			
		||||
//   Escribe_Salidas( 6, NULL, (char)salida );
 | 
			
		||||
 | 
			
		||||
 } while( salida>0 );
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
do
 | 
			
		||||
{
 | 
			
		||||
  estado = Lee_Entradas( 6, NULL );
 | 
			
		||||
  printf( "\n%d %d %d %d %d %d %d %d",	( estado & 0x80 ) != 0,
 | 
			
		||||
					( estado & 0x40 ) != 0,
 | 
			
		||||
					( estado & 0x20 ) != 0,
 | 
			
		||||
					( estado & 0x10 ) != 0,
 | 
			
		||||
 | 
			
		||||
					( estado & 0x08 ) != 0,
 | 
			
		||||
					( estado & 0x04 ) != 0,
 | 
			
		||||
					( estado & 0x02 ) != 0,
 | 
			
		||||
					( estado & 0x01 ) != 0 );
 | 
			
		||||
  getch();
 | 
			
		||||
 | 
			
		||||
} while( !kbhit() );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ESCRIBIR ES UN '1'
 | 
			
		||||
// La direcci<63>n de la placa es '6'
 | 
			
		||||
// ===> la direcci<63>n '0' es:	1 000    0011
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										261
									
								
								PRN_CNT.BAS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								PRN_CNT.BAS
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,261 @@
 | 
			
		||||
' /**************************************************************************\
 | 
			
		||||
'|                                                                            |
 | 
			
		||||
'| Codigo Fuente de PRN_CNT                                                   |
 | 
			
		||||
'|                                                                            |
 | 
			
		||||
' \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
dim shared Salidas(10) as single, PortAddress(3) as integer
 | 
			
		||||
                                  PortAddress(1) = &378
 | 
			
		||||
                                  PortAddress(2) = &278
 | 
			
		||||
                                  PortAddress(3) = &3bc
 | 
			
		||||
 | 
			
		||||
dim shared NULL as ESTADOS
 | 
			
		||||
 | 
			
		||||
typedef struct ESTADOS
 | 
			
		||||
 {
 | 
			
		||||
  b1 as single
 | 
			
		||||
  b2 as single
 | 
			
		||||
  b3 as single
 | 
			
		||||
  b4 as single
 | 
			
		||||
  b5 as single
 | 
			
		||||
  b6 as single
 | 
			
		||||
  b7 as single
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
sub Init.DeInit
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Esta rutina debe ser llamada al iniciar el programa que use las librerias. |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Es la encargada de poner a cero todas la salidas, al principio y al salir. |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:   ( ninguno )                                       |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                          OK                     Todo ha ido bien.          |
 | 
			
		||||
|                          ERROR_EN_ATEXIT        Error registrando funci<EFBFBD>n  |
 | 
			
		||||
|                          FUNCION_YA_REGISTRADA  No es la 1<EFBFBD> vez            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
   call ResetAll
 | 
			
		||||
 | 
			
		||||
end sub
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
sub ResetAll
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Resetea todas las salidas y las pone a cero.                              |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
 dim ampl as single
 | 
			
		||||
                                          
 | 
			
		||||
 for ampl=0 to ampl<10 step 1  
 | 
			
		||||
     call EscribeSalidas( ampl, NULL, 0 )
 | 
			
		||||
 next ampl
 | 
			
		||||
 | 
			
		||||
end sub
 | 
			
		||||
 | 
			
		||||
function LeeSalidas%( ampl as single, estados as ESTADOS )
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Obtiene el estado de las salidas ( On/Off ), de la ampliacion AMPL.       |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<EFBFBD>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, solo se devolvera el char de salida.            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
 dim desp as single
 | 
			
		||||
    
 | 
			
		||||
 if ampl < 0 or ampl >9  then
 | 
			
		||||
                             LeeSalidas = 0
 | 
			
		||||
                             exit
 | 
			
		||||
 end if
 | 
			
		||||
 if estados <> NULL  then                 
 | 
			
		||||
                                             
 | 
			
		||||
    estados.Salida0 = ( ( Salidas( ampl ) and&00 ) <> 0 )
 | 
			
		||||
    estados.Salida1 = ( ( Salidas( ampl ) and&02 ) <> 0 )
 | 
			
		||||
    estados.Salida2 = ( ( Salidas( ampl ) and&04 ) <> 0 )
 | 
			
		||||
    estados.Salida3 = ( ( Salidas( ampl ) and&08 ) <> 0 )
 | 
			
		||||
    estados.Salida4 = ( ( Salidas( ampl ) and&10 ) <> 0 )
 | 
			
		||||
    estados.Salida5 = ( ( Salidas( ampl ) and&20 ) <> 0 )
 | 
			
		||||
    estados.Salida6 = ( ( Salidas( ampl ) and&40 ) <> 0 )
 | 
			
		||||
    estados.Salida7 = ( ( Salidas( ampl ) and&80 ) <> 0 )        
 | 
			
		||||
  }                             
 | 
			
		||||
 | 
			
		||||
 return Salidas( ampl )    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Obtiene el estado de una salida  ( On/Off ), cualquiera.                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        salida     ( Si  1 ampl.  0 a  7 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 
 | 
			
		||||
char Lee_Salida( char salida )
 | 
			
		||||
{  
 | 
			
		||||
  return  ( Salida( (salida / 8) + 1 ) and( &01 << ( salida - ((salida/8)+1)*8 ) ) <> 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Escribe la variable 'estados' ( On/Off ), en la ampliacion AMPL.          |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<EFBFBD>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                        estadosb   1byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, solo se utilizar<EFBFBD> la variable estadosb.         |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
char Escribe_Salidas( char ampl, ESTADOS *estados, char estadosb )
 | 
			
		||||
{
 | 
			
		||||
 char byte_out=0, cont
 | 
			
		||||
 | 
			
		||||
 outportb( Port_Address(Lpt_usado-1) + 1, &0 )
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
 if ( estados = NULL )
 | 
			
		||||
 {
 | 
			
		||||
       outportb( Port_Address(Lpt_usado-1), estadosb )
 | 
			
		||||
       Salida( ampl ) = estadosb
 | 
			
		||||
 } else {
 | 
			
		||||
    byte_out    =                   estados.Salida0
 | 
			
		||||
    byte_out    = ( bytes_out or( ( estados.Salida1 ) << 1) )
 | 
			
		||||
    byte_out    = ( bytes_out or( ( estados.Salida1 ) << 2) )
 | 
			
		||||
    byte_out    = ( bytes_out or( ( estados.Salida1 ) << 3) )
 | 
			
		||||
    byte_out    = ( bytes_out or( ( estados.Salida1 ) << 4) )
 | 
			
		||||
    byte_out    = ( bytes_out or( ( estados.Salida1 ) << 5) )
 | 
			
		||||
    byte_out    = ( bytes_out or( ( estados.Salida1 ) << 6) )
 | 
			
		||||
    byte_out    = ( bytes_out or( ( estados.Salida1 ) << 7) )
 | 
			
		||||
    outportb( Port_Address(Lpt_usado-1), byte_out )
 | 
			
		||||
    Salida( ampl ) = byte_out
 | 
			
		||||
 }  
 | 
			
		||||
/* 
 | 
			
		||||
 A2 (ampl and&01)     
 | 
			
		||||
 A1 (ampl and&02)     
 | 
			
		||||
 A0 (ampl and&04)     
 | 
			
		||||
*/
 | 
			
		||||
 outportb( Port_Address(Lpt_usado-1) + 1, &0 )
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 outportb( Port_Address(Lpt_usado-1) + 1, &0 )
 | 
			
		||||
 
 | 
			
		||||
/*
 | 
			
		||||
 A2  01.0 Strobe
 | 
			
		||||
 A1  14.0 AutoFeed
 | 
			
		||||
 A0  16.0 Inicializaci<EFBFBD>n
 | 
			
		||||
 
 | 
			
		||||
 11   10  12   13  15
 | 
			
		||||
 128  64  32   16   8   4   2   1
 | 
			
		||||
 0     1   0    1   0   1   0   1
 | 
			
		||||
 | 
			
		||||
13 12 11 10                          
 | 
			
		||||
 .  .  .  .  <EFBFBD>  <EFBFBD>  <EFBFBD>  <EFBFBD>  <EFBFBD>  <EFBFBD>  <EFBFBD>  <EFBFBD>  . <-- 1
 | 
			
		||||
  -  -  -  -  -  -  -  -  .  .  .  .
 | 
			
		||||
                               15  
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
function EscribeSalida%( salida as single, estados as single )
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Escribe el estado de una salida  ( On/Off ), cualquiera.                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        salida     ( Si  1 ampl.  0 a  3 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
 dim ampl as single, byte_out as single
 | 
			
		||||
 ampl = (salida / 8) + 1
 | 
			
		||||
 | 
			
		||||
 byte_out = Lee_Salidas( ampl, NULL )
 | 
			
		||||
 byte_out = ( byte_out and!( &01 << ( salida - ampl*8 ) ) ) or( estado << ( salida - ampl*8 ) )
 | 
			
		||||
 Salida( ampl ) = byte_out
 | 
			
		||||
 EscribeSalidas( ampl, NULL, byte_out )
 | 
			
		||||
 EscribeSalida = byte_out
 | 
			
		||||
end function 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function LeeEntradas%( ampl as single, estados as ESTADOS )
 | 
			
		||||
 | 
			
		||||
' /**************************************************************************\
 | 
			
		||||
'|                                                                            |
 | 
			
		||||
'|  Lee las entradas y la almacena en la variable estados.                    |
 | 
			
		||||
'|                                                                            |
 | 
			
		||||
'| Parametros de Entrada:                                                     |
 | 
			
		||||
'|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
'|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
'|                                                                            |
 | 
			
		||||
'| Parametros de Salida:                                                      |
 | 
			
		||||
'|                        char       1Byte con los estados                    |
 | 
			
		||||
'|                                                                            |
 | 
			
		||||
' \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
end function
 | 
			
		||||
 | 
			
		||||
function LeeEntrada%( entrada as single )
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Lee una entrada cualquiera.                                               |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        entrada    ( Si  1 ampl.  0 a  3 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
 dim byte_out as single, ampl as single
 | 
			
		||||
 ampl = (salida / 8) + 1
 | 
			
		||||
 | 
			
		||||
 byte_out = Lee_Entradas( ( (salida / 8) + 1 ), NULL )
 | 
			
		||||
 | 
			
		||||
 byte_out = ( byte_out and( &01 << ( salida - ampl*8 ) ) )
 | 
			
		||||
 LeeEntrada = byte_out
 | 
			
		||||
 | 
			
		||||
end function
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD>I<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD>E<EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>A<EFBFBD>B<EFBFBD>E<EFBFBD>C<EFBFBD>E<EFBFBD>R<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										325
									
								
								PRN_CNT.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										325
									
								
								PRN_CNT.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,325 @@
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Codigo Fuente de PRN_CNT                                                   |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
/*
 | 
			
		||||
 A2  01 -> !1 Strobe
 | 
			
		||||
 A1  14 -> !2 AutoFeed
 | 
			
		||||
 A0  16 ->  4 Inicializaci<63>n
 | 
			
		||||
 READ/WRITE !8
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "c:\backup\fuentes\prn_cnt\prn_cnt.h"
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
char Salida[10];
 | 
			
		||||
int  Port_Address[3] = { 0x378, 0x278, 0x3BC };
 | 
			
		||||
char Lpt_usado = 1;
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Esta rutina debe ser llamada al iniciar el programa que use las librerias. |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Es la encargada de poner a cero todas la salidas, al principio y al salir. |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:   ( ninguno )                                       |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                          OK                     Todo ha ido bien.          |
 | 
			
		||||
|                          ERROR_EN_ATEXIT        Error registrando funci<63>n  |
 | 
			
		||||
|                          FUNCION_YA_REGISTRADA  No es la 1<> vez            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
//<2F>
 | 
			
		||||
int Init_all(void)
 | 
			
		||||
{
 | 
			
		||||
 static char vez = 0;
 | 
			
		||||
 | 
			
		||||
 if ( vez == 0 )
 | 
			
		||||
  {
 | 
			
		||||
   vez = 1;
 | 
			
		||||
   Reset_all();
 | 
			
		||||
   if ( atexit( Reset_all ) != 0 )
 | 
			
		||||
                                    return ERROR_EN_ATEXIT;
 | 
			
		||||
			       else
 | 
			
		||||
                                    return OK;
 | 
			
		||||
  } else
 | 
			
		||||
				    return FUNCION_YA_REGISTRADA;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| WARNING:                                                                   |
 | 
			
		||||
|          El uso de la siguiente funci<63>n esta indicada solo para usuarios   |
 | 
			
		||||
|          experimentados, se debe usar en lugar de la funci<63>n anterior.     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ( LEER/ESCRIBIR )      // L/E los registros del fich|
 | 
			
		||||
|                        ( %s )                 // _ero %s                   |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        1    Ok!                         OK                 |
 | 
			
		||||
|                       -1    Fallo desconocido           FALLO_DESCONOCIDO  |
 | 
			
		||||
|                       -2    Archivo no existe           NO_ARCHIVO         |
 | 
			
		||||
|                       -3    Error archivo no valido     ARCHIVO_INCORRECTO |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
int Register( char leer_escribir, char *file )
 | 
			
		||||
{
 | 
			
		||||
 FILE *fich;
 | 
			
		||||
 char Buffer[10];
 | 
			
		||||
 | 
			
		||||
 if ( leer_escribir == ESCRIBIR )
 | 
			
		||||
  {
 | 
			
		||||
         if ( (fich = fopen( file, "wb" ) ) == NULL ) return ARCHIVO_INCORRECTO;
 | 
			
		||||
         strcpy( Buffer, "PRN_CNT->\0" );
 | 
			
		||||
         fwrite( Buffer, sizeof( char ), 10, fich );
 | 
			
		||||
         fwrite( Salida, sizeof( char ), 10, fich );
 | 
			
		||||
	 fclose(fich);
 | 
			
		||||
  } else {
 | 
			
		||||
	 if ( (fich = fopen( file, "rb" ) ) == NULL ) return NO_ARCHIVO;
 | 
			
		||||
	 fread( Buffer, sizeof( char ), 10, fich );
 | 
			
		||||
	 if ( strncmp( Buffer, "PRN_CNT->", 9 ) != 0 ) {
 | 
			
		||||
							fclose( fich );
 | 
			
		||||
							return ARCHIVO_INCORRECTO;
 | 
			
		||||
                                                       }
 | 
			
		||||
         fread( Salida, sizeof( char ), 10, fich );
 | 
			
		||||
         fclose(fich);
 | 
			
		||||
  }
 | 
			
		||||
 return OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Resetea todas las salidas y las pone a cero.                              |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
//<2F>
 | 
			
		||||
void Reset_all(void)
 | 
			
		||||
{
 | 
			
		||||
 char ampl;
 | 
			
		||||
 outportb( 888, 0x00 );
 | 
			
		||||
 outportb( 890, 0x03 );
 | 
			
		||||
 | 
			
		||||
 for ( ampl=0; ampl<10; ampl++ )
 | 
			
		||||
     Escribe_Salidas( ampl, NULL, 0 );
 | 
			
		||||
 | 
			
		||||
 outportb( 888, 0x00 );
 | 
			
		||||
 outportb( 890, 0x03 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Obtiene el estado de las salidas ( On/Off ), de la ampliacion AMPL.       |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, solo se devolvera el char de salida.            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
//<2F>
 | 
			
		||||
unsigned char Lee_Salidas( char ampl, ESTADOS *estados )
 | 
			
		||||
{
 | 
			
		||||
 char desp;
 | 
			
		||||
 | 
			
		||||
 if ( ampl < 1 || ampl > 9 )
 | 
			
		||||
			    return 0;
 | 
			
		||||
 if ( estados != NULL )
 | 
			
		||||
  {
 | 
			
		||||
    estados -> Salida0 = ( ( Salida[ ampl - 1 ] & 0x01 ) != 0 );
 | 
			
		||||
    estados -> Salida1 = ( ( Salida[ ampl - 1 ] & 0x02 ) != 0 );
 | 
			
		||||
    estados -> Salida2 = ( ( Salida[ ampl - 1 ] & 0x04 ) != 0 );
 | 
			
		||||
    estados -> Salida3 = ( ( Salida[ ampl - 1 ] & 0x08 ) != 0 );
 | 
			
		||||
    estados -> Salida4 = ( ( Salida[ ampl - 1 ] & 0x10 ) != 0 );
 | 
			
		||||
    estados -> Salida5 = ( ( Salida[ ampl - 1 ] & 0x20 ) != 0 );
 | 
			
		||||
    estados -> Salida6 = ( ( Salida[ ampl - 1 ] & 0x40 ) != 0 );
 | 
			
		||||
    estados -> Salida7 = ( ( Salida[ ampl - 1 ] & 0x80 ) != 0 );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 return Salida[ ampl - 1 ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Obtiene el estado de una salida  ( On/Off ), cualquiera.                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        salida     ( Si  1 ampl.  0 a  7 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
//<2F>
 | 
			
		||||
unsigned char Lee_Salida( char salida )
 | 
			
		||||
{
 | 
			
		||||
//    estados -> Salida0 = ( ( Salida[ ampl - 1 ] & 0x01 ) != 0 );
 | 
			
		||||
  return ( ( Salida[ (salida / 8) ] & ( 0x01 << ( salida - ( (salida/8)*8 ) ) ) ) != 0 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Escribe la variable 'estados' ( On/Off ), en la ampliacion AMPL.          |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                        estadosb   1byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, solo se utilizar<61> la variable estadosb.         |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
//<2F>
 | 
			
		||||
unsigned char Escribe_Salidas( char ampl, ESTADOS *estados, char estadosb )
 | 
			
		||||
{
 | 
			
		||||
 char byte_out=0, cont;
 | 
			
		||||
 | 
			
		||||
 if ( estados == NULL )
 | 
			
		||||
 {
 | 
			
		||||
       outportb( Port_Address[Lpt_usado-1], estadosb );
 | 
			
		||||
       Salida[ ampl - 1 ] = estadosb;
 | 
			
		||||
 } else {
 | 
			
		||||
    byte_out    =                  estados -> Salida0;
 | 
			
		||||
    byte_out    = ( byte_out | ( ( estados -> Salida1 ) << 1) );
 | 
			
		||||
    byte_out    = ( byte_out | ( ( estados -> Salida1 ) << 2) );
 | 
			
		||||
    byte_out    = ( byte_out | ( ( estados -> Salida1 ) << 3) );
 | 
			
		||||
    byte_out    = ( byte_out | ( ( estados -> Salida1 ) << 4) );
 | 
			
		||||
    byte_out    = ( byte_out | ( ( estados -> Salida1 ) << 5) );
 | 
			
		||||
    byte_out    = ( byte_out | ( ( estados -> Salida1 ) << 6) );
 | 
			
		||||
    byte_out    = ( byte_out | ( ( estados -> Salida1 ) << 7) );
 | 
			
		||||
    outportb( Port_Address[Lpt_usado-1], byte_out );
 | 
			
		||||
    Salida[ ampl - 1] = byte_out;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 outportb( Port_Address[Lpt_usado-1] + 2, ( 0x00 | ( ( ampl & 0x01 ) << 2) | ( !( ampl & 0x02 ) << 1) | ( !( ampl & 0x03 ) << 0) ) );
 | 
			
		||||
 | 
			
		||||
 outportb( Port_Address[Lpt_usado-1]    , 0x00 );
 | 
			
		||||
 outportb( Port_Address[Lpt_usado-1] + 2, 0x03 );
 | 
			
		||||
 | 
			
		||||
 return byte_out;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Escribe el estado de una salida  ( On/Off ), cualquiera.                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        salida     ( Si  1 ampl.  0 a  3 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
//<2F>
 | 
			
		||||
unsigned char Escribe_Salida( char salida, char estado )
 | 
			
		||||
{
 | 
			
		||||
 char ampl = (salida / 8) + 1;
 | 
			
		||||
 char byte_out;
 | 
			
		||||
 | 
			
		||||
   byte_out = Lee_Salidas( ampl, NULL );
 | 
			
		||||
 | 
			
		||||
   byte_out = ( byte_out & ~( 0x01 << ( salida - (ampl-1)*8 ) ) ) | ( estado << ( salida - (ampl-1)*8 ) );
 | 
			
		||||
 | 
			
		||||
   Escribe_Salidas( ampl, NULL, byte_out );
 | 
			
		||||
 | 
			
		||||
   return byte_out;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Lee las entradas y la almacena en la variable estados.                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
unsigned char Lee_Entradas( char ampl, ESTADOS *estados )
 | 
			
		||||
{
 | 
			
		||||
 unsigned char byte_out=0;
 | 
			
		||||
 | 
			
		||||
 outportb( Port_Address[Lpt_usado-1]    , 0xFF );
 | 
			
		||||
 outportb( Port_Address[Lpt_usado-1] + 2, ( 0x08 | ( ( ampl & 0x01 ) << 2) | ( !( ampl & 0x02 ) << 1) | ( !( ampl & 0x03 ) << 0) ) );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 byte_out = inportb ( Port_Address[Lpt_usado-1] );
 | 
			
		||||
 | 
			
		||||
 outportb( Port_Address[Lpt_usado-1]    , 0x00 );
 | 
			
		||||
 outportb( Port_Address[Lpt_usado-1] + 2, 0x03 );
 | 
			
		||||
 | 
			
		||||
 if ( estados != NULL )
 | 
			
		||||
 {
 | 
			
		||||
		      estados -> Salida0  = ( 0x01 & byte_out ) != 0;
 | 
			
		||||
		      estados -> Salida1  = ( 0x02 & byte_out ) != 0;
 | 
			
		||||
		      estados -> Salida2  = ( 0x04 & byte_out ) != 0;
 | 
			
		||||
		      estados -> Salida3  = ( 0x08 & byte_out ) != 0;
 | 
			
		||||
		      estados -> Salida4  = ( 0x10 & byte_out ) != 0;
 | 
			
		||||
		      estados -> Salida5  = ( 0x20 & byte_out ) != 0;
 | 
			
		||||
		      estados -> Salida6  = ( 0x40 & byte_out ) != 0;
 | 
			
		||||
		      estados -> Salida7  = ( 0x80 & byte_out ) != 0;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 return byte_out;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|  Lee una entrada cualquiera.                                               |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        entrada    ( Si  1 ampl.  0 a  3 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
unsigned char Lee_Entrada( char entrada )
 | 
			
		||||
{
 | 
			
		||||
 char byte_out;
 | 
			
		||||
 char ampl = (entrada / 8) + 1;
 | 
			
		||||
 | 
			
		||||
 byte_out = Lee_Entradas( ampl, NULL );
 | 
			
		||||
 | 
			
		||||
// byte_out = ( byte_out & !( 0x01 << ( entrada - ampl*8 ) ) ) | ( estado << ( entrada - ampl*8 ) );
 | 
			
		||||
 byte_out = ( ( byte_out & ( 0x01 << ( entrada - (ampl-1)*8 ) ) ) ) != 0;
 | 
			
		||||
 return byte_out;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD>I<EFBFBD>N<EFBFBD><4E><EFBFBD>D<EFBFBD>E<EFBFBD><45><EFBFBD>L<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD>C<EFBFBD>A<EFBFBD>B<EFBFBD>E<EFBFBD>C<EFBFBD>E<EFBFBD>R<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										179
									
								
								PRN_CNT.H
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								PRN_CNT.H
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,179 @@
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|        CABECERA A INCLUIR EN TUS PROGRAMAS:  #include "PRN_CNT.h"          |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 >>>        Rutinas para la comunicaci<63>n USUARIO <---> PRN_CNT            <<<
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
#define LEER                    0
 | 
			
		||||
#define ESCRIBIR                1
 | 
			
		||||
#define OK                      1
 | 
			
		||||
#define FALLO_DESCONOCIDO      -1
 | 
			
		||||
#define NO_ARCHIVO             -2
 | 
			
		||||
#define ARCHIVO_INCORRECTO     -3
 | 
			
		||||
#define ON                      1
 | 
			
		||||
#define OFF                     0
 | 
			
		||||
#define ERROR_EN_ATEXIT        -9
 | 
			
		||||
#define FUNCION_YA_REGISTRADA   5
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
 {
 | 
			
		||||
  char Salida0;  char Salida1;  char Salida2;  char Salida3;
 | 
			
		||||
  char Salida4;  char Salida5;  char Salida6;  char Salida7;
 | 
			
		||||
 } ESTADOS;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern char Lpt_usado;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Esta rutina debe ser llamada al iniciar el programa que use las librerias. |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Es la encargada de poner a cero todas la salidas, al principio y al salir. |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:   ( ninguno )                                       |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                          OK                     Todo ha ido bien.          |
 | 
			
		||||
|                          ERROR_EN_ATEXIT        Error registrando funci<63>n  |
 | 
			
		||||
|                          FUNCION_YA_REGISTRADA  No es la 1<> vez            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
int Init_all(void);
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| WARNING:                                                                   |
 | 
			
		||||
|          El uso de la siguiente funci<63>n esta indicada solo para usuarios   |
 | 
			
		||||
|          experimentados, se debe usar en lugar de la funci<63>n anterior.     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ( LEER/ESCRIBIR )      // L/E los registros del fich|
 | 
			
		||||
|                        ( %s )                 // _ero %s                   |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        1    Ok!                         OK                 |
 | 
			
		||||
|                       -1    Fallo desconocido           FALLO_DESCONOCIDO  |
 | 
			
		||||
|                       -2    Archivo no existe           NO_ARCHIVO         |
 | 
			
		||||
|                       -3    Error archivo no valido     ARCHIVO_INCORRECTO |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
                       
 | 
			
		||||
int Register( char leer_escribir, char *file );
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Resetea todas las salidas y las pone a cero.                              |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
void Reset_all(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Obtiene el estado de las salidas ( On/Off ), de la ampliacion AMPL.       |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, solo se devolvera el char de salida.            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
unsigned char Lee_Salidas( char ampl, ESTADOS *estados );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Obtiene el estado de una salida  ( On/Off ), cualquiera.                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        salida     ( Si  1 ampl.  0 a  7 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
unsigned char Lee_Salida( char salida );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Escribe la variable 'estados' ( On/Off ), en la ampliacion AMPL.          |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                        estadosb   Byte con los estados                     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, se utilizar<61> el char con los estados.           |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
unsigned char Escribe_Salidas( char ampl, ESTADOS *estados, char estadosb );
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        salida     ( Si  1 ampl.  0 a  3 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                        estado     ( ON / OFF )                             |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
unsigned char Escribe_Salida( char salida, char estado );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Lee las entradas y la almacena en la variable estados.                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, solo se devolvera el char de salida.            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
unsigned char Lee_Entradas( char ampl, ESTADOS *estados );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Lee una entrada cualquiera.                                               |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        entrada    ( Si  1 ampl.  0 a  7 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
unsigned char Lee_Entrada( char entrada );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD>I<EFBFBD>N<EFBFBD><4E><EFBFBD>D<EFBFBD>E<EFBFBD><45><EFBFBD>L<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD>C<EFBFBD>A<EFBFBD>B<EFBFBD>E<EFBFBD>C<EFBFBD>E<EFBFBD>R<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
							
								
								
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
#PRN_CNT 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
*10/04/1996* 
 | 
			
		||||
 
 | 
			
		||||
ToDo: wwtcf? 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user