Autor Tema: Ejercicios en C con un QY4  (Leído 34541 veces)

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

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Ejercicios en C con un QY4
« en: 03 de Enero de 2007, 16:03:53 »
Actualización 21-jul-08

Iniciación con los MC68H908QY4 por scientist

Los enlaces a los ejercicios:
-------------------------------------------------------

Este semestre me tuve que familiarizar con microcontroladores de la familia Nitron de Freescale, en concreto estuve utilizando el 68HC08QY4. Y aprovechando pondré por aquí los programas/circuitos que tengo hasta ahora. No son muy complicados pero espero le sean de utilidad a alguien :).

Los programas están escritos en C, el entorno es CodeWarrior CW08 V2.1. Cuenta con IDE, compilador y debugger (no lo utilicé hasta ahora). De la página de Freescale se puede descargar la versión 5.1 (CW for HC08 V5.1), ya lo descargué y lo probé bajando un programa sin problemas, aunque no lo utilicé en los ejercicios.

Bien, empezamos en el encendido de algunas secuencias con leds.

El circuito

Las entradas son botones (push-button) normalmente abiertos (en el dibujo está un DIP switch porque apenas uso Eagle y no vi los botones :P).

El programa
Código: [Seleccionar]
#include <hidef.h> //Contiene instrucciones en ensamblador.
#include <MC68HC908QY4.h> //Se definen los registros de I/O y sus direcciones.
#include <startup.h>

const unsigned char leds[] = {
0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01
};

void inicializacion( void );
void retardo( unsigned int );

void secParpadeo( void );
void secIzquierda( void );
void secDerecha( void );
void secEncuentro( void );
void secTrenecito( void );

void main( void ) {
inicializacion();

while( 1 ) {
if ( PTA_PTA0 == 0 )
secParpadeo();
else if ( PTA_PTA1 == 0 )
secDerecha();
else if ( PTA_PTA2 == 0 )
secIzquierda();
else if ( PTA_PTA3 == 0 )
secEncuentro();
else if ( PTA_PTA4 == 0 )
secTrenecito();
else
PTB = leds[ 0 ]; // PTB = 0x00;
}

}

void inicializacion() {
CONFIG1 = 0x09; // Deshabilita el perro guardián
OSCTRIM = 0x80; // Registro de ajuste de oscilador interno
PTAPUE  = 0x3F; // Resistencias de pull-up
DDRA    = 0x00; // Puerto A, entradas.
DDRB    = 0xFF; // Puerto B, salidas.
}

void retardo( unsigned int ciclos ) {
unsigned int cuenta;

for ( cuenta = 0; cuenta < ciclos; cuenta++ );
}

void secParpadeo() {
PTB = ~PTB;
retardo( 20000 );
}

void secDerecha() {
int cuenta;
for ( cuenta = 0; cuenta < 9; cuenta++ ) {
PTB = leds[ cuenta ];
retardo( 20000 );
}
}

void secIzquierda() {
int cuenta;
for ( cuenta = 8; cuenta >= 0; cuenta-- ) {
PTB = leds[ cuenta ];
retardo( 20000 );
}
}

void secEncuentro() {
int cuentaA, cuentaB;

// Leds apagados.
PTB = leds[ 0 ];
retardo( 30000 );
for ( cuentaA = 1, cuentaB = 8; cuentaA < 9, cuentaB > 0; cuentaA++, cuentaB-- ) {
PTB = leds[ cuentaA ] | leds[ cuentaB ];
retardo( 30000 );
}
}

void secTrenecito() {
int cuenta;

for ( cuenta = 0; cuenta < 9; cuenta++ ) {
PTB = PTB | leds[ cuenta ];
retardo( 30000 );
}
for ( cuenta = 0; cuenta < 9; cuenta++ ) {
PTB = PTB & ( ~leds[ cuenta ] );
retardo( 30000 );
}

}

Como nota, cada secuencia puede programarse también utilizando una tabla de valores, por ejemplo, la última (trenecito) podría realizarse así:
Código: [Seleccionar]
const unsigned char secuencia[] = { 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0xc0, 0x80 };

void trenecito( void ) {
  int cuenta;
  for ( cuenta = 0; cuenta < 16; cuenta++ ) {
    PTB = secuencia[ cuenta ];
    retardo( 20000 );
  }
}
En este caso, esta segunda forma de realizar la secuencia permite hacer más pequeño el código resultante, lo que podría ser importante en caso de que necesitáramos optimizar espacio en el microcontrolador.

Saludos,
JJ (Geo).
« Última modificación: 21 de Julio de 2008, 19:51:10 por Geo »
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Ejercicios en C con un QY4
« Respuesta #1 en: 04 de Enero de 2007, 11:47:21 »
Contador 0-999

El circuito


El programa
Código: [Seleccionar]
#include <hidef.h> //Contiene instrucciones en ensamblador.
#include <MC68HC908QY4.h> //Se definen los registros de I/O y sus direcciones.
#include <startup.h>

int unidades, decenas, centenas;
int cuenta, aux;

const unsigned char numeros[ 10 ]=
{
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};
//const unsigned char numeros[ 10 ] = { 0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, 0x7f, 0x7b };

void inicializacion( void );
void delay( int );

void main(void) {
int retardo_displays;

inicializacion();

while( 1 ) {
cuenta++;
if ( cuenta > 999 ) {
unidades = decenas = centenas = 0;
cuenta = 0;
}
centenas = cuenta / 100;
aux = cuenta % 100;
decenas = aux / 10;
aux = aux % 10;
unidades = aux;

retardo_displays = 0;

while( retardo_displays < 10 ) {

// Activa display de unidades
delay( 1000 );
PTA = ~0x01;
PTB = numeros[ unidades ];
// Decenas
delay( 1000 );
PTA = ~0x02;
PTB = numeros[ decenas ];
// Centenas
delay( 1000 );
PTA = ~0x08;
PTB = numeros[ centenas ];

retardo_displays++;
}
}
}

void inicializacion() {
CONFIG1=0x09; //Deshabilita el perro guardián
OSCTRIM = 0x80; //Registro de ajuste de oscilador interno

DDRA = 0xFF; // Puerto A salidas
DDRB = 0xFF; // Puerto B salidas

unidades = decenas = centenas = 0;
}

void delay( int ciclos ) {
int i;
for ( i = 0; i < ciclos; i++ );
}
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Ejercicios en C con un QY4
« Respuesta #2 en: 29 de Enero de 2007, 12:31:35 »
Sumador/restador 4 bits
El circuito suma o resta (según una entrada de selección) dos números de 4 bits y muestra el resultado en dos displays, para ello se utilizan dos microcontroladores, el primero lee los números, realiza la operación y da el resultado de 5 bits como salida. El segundo microcontrolador lee un dato de 5 bits y lo decodifica a los displays.

El circuito
(Colocado como adjunto).

El programa

Sumador
Código: [Seleccionar]
/**************************************************
 * José Jorge Enríquez Rodríguez
 **************************************************
 * Sumador / restador.
 * Suma o resta un par de datos de 4 bits.
 * El resultado de la operación es de 5 bits.
 **************************************************
 * Entradas
 * --------
 * PTB7 a PTB4 - Dato A, MSB a LSB.
 * PTB3 a PTB0 - Dato B, MSB a LSB.
 * PTA2 - Cin, selector suma/resta.
 *
 * Salidas
 * -------
 * PTA5, PTA4, PTA3, PTA1, PTA0 - Resultado.
 **************************************************
 */

#include <MC68HC908QY4.h> // Se definen los registros de I/O y sus direcciones.
#include <hidef.h> // Contiene instrucciones en ensamblador.
#include <startup.h>

/***************************
 * Declaración de funciones
 ***************************/
void inicializacion( void );
void delay( int );

/* cin : Selector 0 - suma, 1 - resta.
 * dato_a, dato_b: números de 4 bits a sumar/restar
 * resultado:  resultado de la operación.
 */
int cin, dato_a, dato_b, resultado;

/**********************
 * Programa principal
 **********************/
void main ( void ){

inicializacion();

while (1){
// El dato A es la parte alta (4 bits) del puerto B.
dato_a = ( PTB  >> 4 );
// El dato B es la parte baja (4 bits) del puerto B.
dato_b = ( PTB & 0x0F );

// Selector suma/resta.
cin = PTA_PTA2;

// Si el selector es 0, suma; si no, resta.
if ( cin == 0 )
resultado = dato_a + dato_b;
else
resultado = dato_a - dato_b;

// Si el resultado es negativo, lo complementa a 2
// (Esto da un resultado correcto, aunque el signo no se indica
// y debe tomarse en cuenta al realizar la operación).
if ( resultado < 0 ) {
resultado = ( ~resultado ) + 1;
}

// El resultado (5 bits), se muestra en los pines
// 5, 4, 3, 1 y 0 del puerto A.
PTA_PTA5 = ( resultado & 0x10 ) >> 4;
PTA_PTA4 = ( resultado & 0x08 ) >> 3;
PTA_PTA3 = ( resultado & 0x04 ) >> 2;
PTA_PTA1 = ( resultado & 0x02 ) >> 1;
PTA_PTA0 = ( resultado & 0x01 );

delay( 10000 );
}
}

/* Configura el microcontrolador, puertos de entrada y salida.
 */
void inicializacion() {
CONFIG1 = 0x09; // Deshabilita el perro guardián
OSCTRIM = 0x80; // Registro de ajuste de oscilador interno
PTBPUE  = 0xFF; // Resistencias de pull-up para el puerto B (todos los pines).
PTAPUE  = 0x04; // Resistencia de pull-up para el puerto A (solamente el pin PTA2).
DDRA    = 0x3B; // Puerto A salidas (excepto el pin PTA2).
DDRB    = 0x00; // Puerto B entradas
}

/* Retardo de n ciclos de reloj.
 */
void delay (int ciclos){
int cuenta;
for ( cuenta = 0; cuenta < ciclos; cuenta++ );
}


Decodificador
Código: [Seleccionar]
/**************************************************
 * José Jorge Enríquez Rodríguez
 **************************************************
 * Decodificador 5 bits a dos displays de 7 segmentos.
 * Recibe un dato binario de 5 bits y lo muestra en decimal
 * en un par de displays de 7 segmentos (se usaron de cátodo común).
 **************************************************
 * Entradas
 * --------
 * PTA0 a PTA4 - Dato de 5 bits.
 *
 * Salidas
 * -------
 * PTA0 a PTA6 - Segmentos de los displays.
 * PTB7 - Cátodo display decenas.
 * PTA5 - Cátodo display unidades.
 **************************************************
 */
 
#include <MC68HC908QY4.h> // Se definen los registros de I/O y sus direcciones.
#include <hidef.h> // Contiene instrucciones en ensamblador.
#include <startup.h>

// Patrones numéricos a mandar al display de 7 segmentos,
// dígitos del 0 al 9.
const unsigned char numeros[ 10 ] = {
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};

/****************************
 * Declaración de funciones.
 ****************************/
void inicializacion( void );
void delay( int );

// Dato binario a mostrar.
int dato;

/***********************
 * Programa principal.
 ***********************/
void main( void ) {

// Auxiliares para separar el dato en dos dígitos:
// unidades y decenas.
int unidades, decenas;

inicializacion();

while( 1 ) {

// Leemos el dato en el puerto A (5 bits).
dato = PTA & 0x1f;

// Separa el número en dos dígitos.
decenas = dato / 10;
unidades = dato % 10;

// Habilita el primer display y envía el número
// correspondiente a las unidades.
PTB_PTB7 = 0;
PTA_PTA5 = 1;
PTB = numeros[ unidades ];
delay( 1000 );

// Habilita el segundo display en envía el número
// correspondiente a las decenas.
PTB_PTB7 = 1;
PTA_PTA5 = 0;
// Nota: se emplea una operación | 0x80 ya que el pin 7
// del puerto B también se utiliza para deshabilitar el
// display de unidades, por lo que se debe asegurar que
// esté en 1.
PTB = numeros[ decenas ] | 0x80;
delay( 1000 );
}
}

/* Configura el microcontrolador, puertos de entrada y salida.
 */
void inicializacion() {
CONFIG1 = 0x09; // Deshabilita el perro guardián
OSCTRIM = 0x80; // Registro de ajuste de oscilador interno
DDRA    = 0x20; // Pin 5 - salida, Pines 4 a 0 entradas
DDRB    = 0xff; // Puerto B salidas
}

/* Retardo de n ciclos de reloj.
 */
void delay (int ciclos){
int cuenta;
for (cuenta=0; cuenta < ciclos; cuenta++);
}

Por cierto, ¿por qué quitaron GeSHi de las opciones para agregar temas?
« Última modificación: 29 de Enero de 2007, 12:36:51 por Geo »
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: Ejercicios en C con un QY4
« Respuesta #3 en: 29 de Enero de 2007, 15:08:32 »
Excelente aporte GEO, desde hace dias tengo ganas de empezar a trabajar con los micros freescale, creo que esto es un buen punto de partida.

saludos.
Pereira - Colombia

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Ejercicios en C con un QY4
« Respuesta #4 en: 30 de Enero de 2007, 18:22:18 »

Bueno desde ya pedire esos micros y dime amigo que herramientas utilizas para esto ???? y si tienes algun diseño de tu grabador seria interesante a ver q nos sale jejejejee
El conocimiento se consigue a base de esfuerzo...

Desconectado psykhon

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 823
Re: Ejercicios en C con un QY4
« Respuesta #5 en: 30 de Enero de 2007, 19:53:06 »
muy buen aporte y como la mayoria creo que hay interes en esto micros pero creo que necesitamos un programador abierto
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Ejercicios en C con un QY4
« Respuesta #6 en: 31 de Enero de 2007, 21:59:23 »
Estoy utilizando una tarjeta similar a esta:

Por allí tengo un diagrama del grabador, lamentablemente no he tenido oportunidad de probarlo y por eso es que no lo pongo. Veré qué puedo hacer :).

Saludos,
JJ (Geo).
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Ejercicios en C con un QY4
« Respuesta #7 en: 01 de Febrero de 2007, 13:16:09 »
Dime q software utilizas para tu creacion, compilacion y simulacion de estos micros

Tengo bastante interes de aprenderlos pq dan muestras gratis aqui en PERU y seria interesante
El conocimiento se consigue a base de esfuerzo...

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Ejercicios en C con un QY4
« Respuesta #8 en: 01 de Febrero de 2007, 18:29:12 »
Lo mencioné al principio, en el primer mensaje :P. El sistema cuenta con debugger, no lo he usado a fondo. Lamentablemente, no conozco un simulador (vi algunos en internet, pero hasta ahora no me ha interesado adquirir alguno :P).

Saludos,
JJ (Geo).
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Ejercicios en C con un QY4
« Respuesta #9 en: 12 de Febrero de 2007, 12:10:31 »
estaba siguiendo el hilo y ya va parado muchos dias ....... vamos amigo los ejemplitos estaba buenos
El conocimiento se consigue a base de esfuerzo...

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Ejercicios en C con un QY4
« Respuesta #10 en: 13 de Febrero de 2007, 20:07:23 »
Je, perdón por atrasarme, pero ya saben que con el trabajo y la escuela no queda tiempo de nada ;).

Ahora vamos con un multiplicador de 4 bits, tres diferentes circuitos, empezamos con este:

Multiplicador 4 bits
De manera similar al sumador, utilizamos dos microcontroladores. En el primero realizamos la multiplicación y el resultado lo separamos en dos partes de 4 bits (el multiplicar dos números de 4 bits nos resulta en uno de 8 bits), las cuales se pasan al segundo microcontrolador mediante 5 líneas, 4 de datos y 1 que indica qué parte estamos pasando (parte alta o baja del resultado).

El circuito
(Adjunto)

El programa

Multiplicador
Código: C
  1. #include <MC68HC908QY4.h>       // Incluye declaraciones de periféricos.
  2. #include <startup.h>    // Inicializa pila, variables, etc.
  3. #include <hidef.h>              // Contiene instrucciones en ensamblador.
  4.  
  5. const unsigned char numeros[ 10 ]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
  6.  
  7. void inicializacion( void );
  8. void delay( unsigned int );
  9.  
  10. int dato_a, dato_b;
  11. int prev_a, prev_b;
  12. int multiplicacion;
  13.  
  14. void main( void ) {
  15.         inicializacion();
  16.        
  17.         dato_a = dato_b = 0;
  18.         prev_a = prev_b = 0;
  19.        
  20.         while ( 1 ) {
  21.                 dato_a = PTA & 0x0F;
  22.                 dato_b = PTB & 0x0F;
  23.  
  24.        
  25.                 multiplicacion = dato_a * dato_b;
  26.                        
  27.                 // Envía la parte baja.
  28.                 PTA_PTA4 = 0;
  29.                 PTB_PTB7 = ( multiplicacion & 0x08 ) >> 3;
  30.                 PTB_PTB6 = ( multiplicacion & 0x04 ) >> 2;
  31.                 PTB_PTB5 = ( multiplicacion & 0x02 ) >> 1;
  32.                 PTB_PTB4 = ( multiplicacion & 0x01 );
  33.                 delay( 65000 );
  34.                        
  35.                 // Envía la parte alta.
  36.                 PTA_PTA4 = 1;
  37.                 PTB_PTB7 = ( multiplicacion & 0x80 ) >> 7;
  38.                 PTB_PTB6 = ( multiplicacion & 0x40 ) >> 6;
  39.                 PTB_PTB5 = ( multiplicacion & 0x20 ) >> 5;
  40.                 PTB_PTB4 = ( multiplicacion & 0x10 ) >> 4;
  41.                 delay( 65000 );
  42.                
  43.  
  44.                 /*
  45.                         PTA_PTA4 = 0;
  46.                         PTB_PTB7 = ( dato_a & 0x08 ) >> 3;
  47.                         PTB_PTB6 = ( dato_a & 0x04 ) >> 2;
  48.                         PTB_PTB5 = ( dato_a & 0x02 ) >> 1;
  49.                         PTB_PTB4 = ( dato_a & 0x01 );
  50.                         delay( 65000 );
  51.                        
  52.                        
  53.                         PTA_PTA4 = 1;
  54.                         PTB_PTB7 = ( dato_b & 0x08 ) >> 3;
  55.                         PTB_PTB6 = ( dato_b & 0x04 ) >> 2;
  56.                         PTB_PTB5 = ( dato_b & 0x02 ) >> 1;
  57.                         PTB_PTB4 = ( dato_b & 0x01 );
  58.                         delay( 65000 );
  59.                 */
  60.                                        
  61.         }
  62.        
  63. }
  64.  
  65. void inicializacion( void ) {
  66.         CONFIG1 = 0x09;         // Deshabilita el perro guardián.
  67.         OSCTRIM = 0x80;         // Oscilador interno.
  68.         DDRB = 0xf0;    // Puerto B, parte alta salidas, parte baja entradas.
  69.         DDRA = 0xf0;    // Puerto A, parte baja entradas, alta salidas.
  70.         PTBPUE = 0x0f;          // Habilita resistencias pull-up para el puerto B
  71.         PTAPUE = 0x0f;
  72. }
  73.  
  74. void delay( unsigned int n ) {
  75.         unsigned int i;
  76.         for ( i = 0; i < n; i++ );
  77. }

Decodificador
Código: C
  1. #include <MC68HC908QY4.h>       // Incluye declaraciones de periféricos.
  2. #include <startup.h>    // Inicializa pila, variables, etc.
  3. #include <hidef.h>              // Contiene instrucciones en ensamblador.
  4.  
  5. // const unsigned char numeros[ 10 ]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
  6. const unsigned char numeros[ 10 ]={ 0x7d,0x30,0x6e,0x7a,0x33,0x5b,0x5f,0x70,0x7f,0x7b };
  7.  
  8. void inicializacion( void );
  9. void delay( unsigned int );
  10.  
  11. int numero;
  12. int parte_baja, parte_alta;
  13. int unidades, decenas, centenas;
  14. int aux;
  15. int retardo_displays;
  16.  
  17. void main( void ) {
  18.         inicializacion();
  19.        
  20.         while( 1 ) {
  21.                 // Si PTA4 es 0, lee parte baja
  22.                 if ( PTA_PTA4 == 0 ) {
  23.                         parte_baja = PTA & 0x0f;
  24.                 }
  25.                 // Si PTA4 es 1, lee parte alta
  26.                 else {
  27.                         parte_alta = PTA & 0x0f;
  28.                 }
  29.        
  30.                 numero = ( ( parte_alta & 0x0f ) << 4 ) | ( parte_baja );
  31.                 //numero = parte_baja;
  32.                
  33.                 centenas = numero / 100;
  34.                 aux = numero % 100;
  35.                 decenas = aux / 10;
  36.                 unidades = aux % 10;
  37.                
  38.                 retardo_displays = 0;
  39.                 while ( retardo_displays < 20 ) {
  40.  
  41.                         // Habilita primer display
  42.                         PTA_PTA5 = 0;
  43.                         PTB_PTB7 = 1;
  44.                         PTB = numeros[ centenas ] | 0x80;
  45.                         delay( 1000 );
  46.                        
  47.                         // Segundo display
  48.                         PTA_PTA5 = 1;
  49.                         PTB_PTB7 = 0;
  50.                         PTB = numeros[ decenas ];
  51.                         delay( 1000 );
  52.                        
  53.                         // Tercer display
  54.                         PTA_PTA5 = 1;
  55.                         PTB_PTB7 = 1;
  56.                         PTB = numeros[ unidades ] | 0x80;
  57.                         delay( 1000 );
  58.                        
  59.                         retardo_displays++;
  60.                 }
  61.         }
  62. }
  63.  
  64. void inicializacion( void ) {
  65.         CONFIG1 = 0x09;         // Deshabilita el perro guardián.
  66.         OSCTRIM = 0x80;         // Oscilador interno.
  67.         DDRA = 0x20;            // PTA5 - salida, el resto entradas.
  68.         DDRB = 0xFF;            // Puerto B - salidas
  69. }
  70.  
  71. void delay( unsigned int n ) {
  72.         unsigned int i;
  73.         for ( i = 0; i < n; i++ );
  74. }

Luego pongo otros dos circuitos similares, en el siguiente utilizaremos también dos microcontroladores pero el resultado lo pasaremos de manera serial (bastante primitiva :P), y finalmente en el tercer circuito haremos uso de un solo microcontrolador, el cual leerá los datos a multiplicar de manera alternada con un selector :).

Por otro lado, trataré de probar el circuito que tengo de un grabador para verificar que funcione, en cuyo caso lo colocaré por aquí :). Nos vemos.
« Última modificación: 13 de Febrero de 2007, 20:11:46 por Geo »
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado psykhon

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 823
Re: Ejercicios en C con un QY4
« Respuesta #11 en: 14 de Febrero de 2007, 23:46:17 »
la verdad que lo que hace falta es un buen programador y un buen compilador gratuito para qu estos micros despeguen
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado Vigo

  • PIC10
  • *
  • Mensajes: 20
Re: Ejercicios en C con un QY4
« Respuesta #12 en: 15 de Febrero de 2007, 09:55:35 »
la verdad que lo que hace falta es un buen programador y un buen compilador gratuito para qu estos micros despeguen

Hola Comunidad

Compilador EXCELENTE el CODE WARRIOR la versión especial que se baja de freescale deja programar libre assembler, 16K de Flash en C y 4K en C++.  Compilador en assembler es sin duda el WinIde.

Como hardware de programación el HC908GS.zip se baja de

http://www.firtec.com.ar/downloader/index.php?subcat=20&ENGINEsessID=75ed3f9db9c18a24ad037487f8ddcc74

Lo que mejor me a parecido y se acerca mucho a un programador profesional es el que desarrollaron ahi mismo se solicita el diagrama de manera libre a  informes@firtec.com.ar y te pasan el link de descarga que en realidad es para sus alumnos pero si lo pedis te lo dan sin problemas.

    Saludos
          Vigo

Desconectado psykhon

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 823
Re: Ejercicios en C con un QY4
« Respuesta #13 en: 15 de Febrero de 2007, 12:19:14 »
muchas gracias vigo, consistente y directo al grano, lo que faltaba
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado jdhios

  • PIC10
  • *
  • Mensajes: 22
    • BairesRobotics
Re: Ejercicios en C con un QY4
« Respuesta #14 en: 11 de Octubre de 2007, 18:46:38 »
Hola Geo, muy buena tu programación. Enseño programación C y programao ya hace unos cuantos añitos (32) y pocas veces he visto personas tan prolijas trabajando en C. Muy bueno. Sobre programador en el sitio esta el circuito pueden usarlo tranquilos, muchos ya los armaron y le funciona muy bien aunque se le pueden todavia hacer mejoras. Cualquier cosa que necesiten pueden preguntar. Pueden bajar ejemplos y tutoriales de www.bairesrobotics.com.ar

Saludos
Jorge