Logo Studenta

ejemplo

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

#include <sys/io.h>
#include <stdio.h>
#include <unistd.h>
#define DEMORA 1000000
#define PUERTO 0x378
int main () {
	
	unsigned char dato;
	
	// Pido el permiso
	if ((ioperm(PUERTO, 3, 1)) !=0 ) {
		printf ("Error de permisos");
		return -1;
	}
	while (1) {
	
		// pin 5
		
		dato = inb ( PUERTO );		// Entra el dato del puerto
		dato = dato | 0x08;			// Le aplico la mascara para poner en 1 el bit 3 (prendo la luz)
		outb (dato, PUERTO);		//	LE digo al led que se prenda
		
		
		usleep(DEMORA); // usleep es la funcion que le paso el parametro de microsegundos que quiero que la maquina espere
		
		dato = dato & (~0x08);		
		outb(dato, PUERTO);		
		
		usleep(5000);
		
		// pin 3
		
		dato = inb ( PUERTO );		// Entra el dato del puerto
		dato = dato | 0x02;			// Le aplico la mascara para poner en 1 el bit 3 (prendo la luz)
		outb (dato, PUERTO);		//	LE digo al led que se prenda
		
		
		usleep(DEMORA); 
		
		dato = dato & (~0x02);			
		outb(dato, PUERTO);		
		
		usleep(5000);
		
		// pin 2
		
		dato = inb ( PUERTO );		// Entra el dato del puerto
		dato = dato | 0x01;			// Le aplico la mascara para poner en 1 el bit 3 (prendo la luz)
		outb (dato, PUERTO);		//	LE digo al led que se prenda
		
		usleep(DEMORA); 
		dato = dato & (~0x01);		
		outb(dato, PUERTO);		
		
		usleep(5000);
		
	}
	
	return 0;
}

Continuar navegando