Autor Tema: Problema con un 8051!! Ayuda, please!!  (Leído 1951 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Driebes

  • PIC12
  • **
  • Mensajes: 56
Problema con un 8051!! Ayuda, please!!
« en: 08 de Marzo de 2007, 08:05:11 »
Hola wenas, estoy haciendo una practica con un 8051 en el que tengo que implementar una tabla de verdad con tres entradas y con tres salidas, el caso es que el ejercicio parece sencillo, utilizando una matriz de ocho posiciones declarada con la función bdata y luego rellenando con los valores que corresponda en cada caso, el problema esta en que no funciona, la matriz tiene valores de 8 bits y sin embargo siempre que hay un valor distinto de 0 lo toma com positivo en todos sus bits.
No se si me he explicado bien, bueno dejo el código y haber si veis algún error.

#include <REG51.H>
#include "uah_types.h"
#include "uah_bit_access.h"

byte bdata OutVal[8]={4,5,3,6,5,1,6,5};          

void Delay(void){
 unsigned int i,j;
   for(i=0; i<0xFFFF ;i++)
      for(j=0; j<0x4 ;j++)
  ;
}

void main (void) {
   P2 = 0x00; //Inicializo la salida
   while(1){
      byte i;
      i = P1&0x07; //i = X2 X1 X0
      P2_0= OutVal^0;
      P2_1= OutVal^1;
      P2_2= OutVal^2;
      Delay();
   }
}

En uah_bit_access.h y uah_types.h es donde tengo que declara el typedef de byte y los P2_0 y esas cosas :D.
Muchas gracias.

Desconectado Driebes

  • PIC12
  • **
  • Mensajes: 56
Re: Problema con un 8051!! Ayuda, please!!
« Respuesta #1 en: 08 de Marzo de 2007, 08:52:38 »
Haciendo prueba he encontrado una solución:

#include <REG51.H>
#include "uah_types.h"
#include "uah_bit_access.h"

byte OutVal[8]={4,5,3,6,5,1,6,5};   
byte i;
byte bdata Aux;
sbit Val1 = Aux^0;
sbit Val2 = Aux^1;
sbit Val3 = Aux^2;

void Delay(void){
 unsigned int i,j;
   for(i=0; i<0xFFFF ;i++)
      for(j=0; j<0x4 ;j++)
  ;
}

void main (void) {
   P2 = 0x00; //Inicializo la salida
   while(1){
      i = P1&0x07; //i = X2 X1 X0
      Aux = OutVal;
      P2_0 = Val1;
      P2_1 = Val2;
      P2_2 = Val3;
      Delay();
   }
}

Asi si funciona, asi que yo creo que el problema esta en el uso de la matriz OutVal como tipo bdata, pero no me gusta como esta hecho de esta manera y de la anterior debería de funcionar y además simplifica las cosas asi que voy a seguir intentadolo porque tiene que haber una forma mejor de hacer las cosas y ahorrarme al menos una variable más.


 

anything