4 de marzo de 2010

Prácticas en C con Keil · Uso del simulador

Juan tiene el siguiente problema al simular..."He escrito el programa, lo compila bien pero al simular los valores del puerto no cambian."

Escribir el siguiente programa en el compilador Keil:

"Decodificador 3x8 (Switch)"

//definimos los puertos a utilizar, teniendo en cuenta el micro las direcciones serán distintas
// aquí utilizamos un micro genérico Atmel T89C51.
sfr P2=0XA0;sfr P3=0XB0;

//empieza el programa
void main (void)
{
unsigned char val;
//while(1) es un bucle infinito, "1" siempre es TRUE
while(1) {
val= P3&0x07;
//con el switch comprobamos los distintos casos posibles de la variable 'val'
switch(val)
{
case 0: P2=0x01;break;
case 1: P2=0X02;break;
case 2: P2=0X04;break;
case 3: P2=0X08;break;
case 4: P2=0X10;break;
case 5: P2=0X20;break;
case 6: P2=0X40;break;
case 7: P2=0X80;break;
}}}

El programa lee el valor del puerto P3 (configurado como entrada), se queda con los 3 bits menos significativos (hemos aplicado la máscara 0x07 = 0000-01111) y en función del valor leído, saca otro valor por el puerto P2 (configurado como salida).
Compila el programa con Keil y utilizando la herramienta de depuración, comprueba como cambia el valor del puerto P2 en función del valor del puerto P3.

Recuerda: No olvides desactivar la casilla de verificación "Define 8051 SFR names" del proyecto y activa la casilla de verificación "Create Hex file" para generar el fichero hexadecimal que será el que grabarás en el microcontrolador.

No hay comentarios: