Autor Tema: ayuda de comprension de programa muy avanzado  (Leído 5729 veces)

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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: ayuda de comprension de programa muy avanzado
« Respuesta #15 en: 23 de Septiembre de 2015, 11:54:14 »
ok, killer investigare lo que tenga que investigar para hacer lo que yo quiero y evitare causarles problemas y solo preguntare cuando tenga que hacerlo, pero definitivamente que quedo con asm aunque sea mas largo el programa porque XC8 eso de combinar asm con CCS no me agrada para nada porque si tiene algunas partes de CCS y otras no solo me confundiría aun mucho mas

Nadie dijo de combinar ASM con C. te dije que C de XC8 el manejo de registros es parecido al de ASM. ya que los modificas directamente y no a traves de una funcion que no tenes idea que hace.

Haber voy a explicarlo un poco mas "lento".

C es un lenguaje de programación. C es C, sea el compilador de C que utilices.
Luego tenes los compiladores de C, los que pasan del archivo .c al codigo maquina que entiende el microcontrolador.
Existen varios, pero por ejemplo acá tendrías el de CCS y el de microchip, 2 empresas distintas.
Cada compilador tiene directivas diferentes, como por ejemplo las que ya nombre, #use RS232(), o que te modifique solo los tris.

Asi que si usas XC8 o CCS vas a estar programando en C. Nuncas vas a mezclar XC8 con CCS, es imposible.


« Última modificación: 23 de Septiembre de 2015, 12:14:11 por KILLERJC »

Desconectado yair_xiox

  • PIC16
  • ***
  • Mensajes: 210
Re: ayuda de comprension de programa muy avanzado
« Respuesta #16 en: 23 de Septiembre de 2015, 12:40:18 »
ok lo hago en asm no me gusta c, ahora si en el ultimo programa quiero por ejemplo que las direcciones dependan de las siguientes salidas :
portA0 derecha, portA1 izquierda, portA2 adelante, portA3 atrás, como tendria que hacerlo para que las direcciones correspondan a esas salidas
y para que haga las diagonales al oprimir dos direcciones

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: ayuda de comprension de programa muy avanzado
« Respuesta #17 en: 23 de Septiembre de 2015, 12:54:21 »
Y cuales son tus entradas? Me dijiste que PORTA 4:1 eran tus salidas, ahora saber cuales son tus entradas

Supongamos que tenes las entradas en PORTB 3:0

Seria muy facil hacer que el bit que corresponde de la entrada sea el de la salida

Ejemplo si el bit 1 es el de la derecha, entonces la entrada es:

000 0010

Y quiero que se active el motor de la derecha, pero como estamos usando PORTA de 1 a 4 y no de 0 a 3, deberias rotar eso y ponerlo en el PORTA

Para que se entienda:

A - adelante
a - atras
D - Derecha
I - Izquierda

Entradas por PORTB 3:0 ,    0000 AaDI
Salidas por PORTA 4:1 ,  000A aDI0

Solo tenes que transformar la entrada en la salida que queres. Suerte, ya te dije los pasos y todo, es hora de pasarlo a ASM


Desconectado yair_xiox

  • PIC16
  • ***
  • Mensajes: 210
Re: ayuda de comprension de programa muy avanzado
« Respuesta #18 en: 23 de Septiembre de 2015, 13:12:19 »
ok gracias killer, pero creo que me equivoque por que las salidas son los motores en el puerto b y en el porta mas bien las entradas

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: ayuda de comprension de programa muy avanzado
« Respuesta #19 en: 23 de Septiembre de 2015, 13:40:43 »
No hay dirferencia casi en el programa, ahora solo queda que lo hagas.

EDIT:

Hacer lo que queres lleva tantas instrucciones, que con 2 lo harias.
Si luego le agregas las protecciones puede llevar mas, pero aun asi no creo que pasemos de las 15 instrucciones, al menos no el programa y descontando la parte de la condiguracion.
« Última modificación: 23 de Septiembre de 2015, 14:47:12 por KILLERJC »

Desconectado yair_xiox

  • PIC16
  • ***
  • Mensajes: 210
Re: ayuda de comprension de programa muy avanzado
« Respuesta #20 en: 24 de Septiembre de 2015, 17:26:23 »
hola killer con el ultimo programa la simulacion en proteus no va bien solo el portE3 activa portb4 y portb0 pero como activo los otros motores no hay forma de hacerlo con ese programa de la tabla probe con todos los pines del micro pero solo servia poerte3 con esos del b y entonces como muevo los otros motores
Código: [Seleccionar]
#INCLUDE<P18F4550.INC>
 
 
 
;Comienzo de Programa
 
 
ORG 0x00 ;Vector de Reset
GOTO CONFIGURACION
ORG 0x08 ;Vector de Interrupcion Baja prioridad
RETURN
ORG 0x18 ;Vector de Interrupcion Alta prioridad
RETURN
 
 
CONFIGURACION
 
BSF OSCCON,5, ACCESS ;Oscilador 4 Mhz
 
CLRF TRISB, ACCESS ;Configuracion Salidas/Entradas
CLRF TRISD, ACCESS
CLRF TRISC, ACCESS
MOVLW .255
MOVWF TRISA, ACCESS
MOVWF TRISE, ACCESS
 
MOVLW 0xF ;Todas digitales
MOVWF ADCON1, ACCESS
 
MOTORES_P
 
RLNCF PORTA, W, ACCESS
ANDLW B'00001110'
CALL TABLA_MOT
MOVWF LATB, ACCESS
GOTO MOTORES_P
 
TABLA_MOT
 
ADDWF PCL,F,ACCESS
RETLW 0x11 ;DER
RETLW 0x22 ;IZQ
RETLW 0x44 ;ADE
RETLW 0x88 ;ATR
RETLW 0x55 ;ADE_DER
RETLW 0x66 ;ADE_IZQ
RETLW 0x99 ;ATR_DER
RETLW 0xAA ;ATR_IZQ
 
END

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: ayuda de comprension de programa muy avanzado
« Respuesta #21 en: 24 de Septiembre de 2015, 17:40:38 »
Yo nunca dije que ese programa funcionara. Solo tome el programa tuyo y lo "comprimi" nada mas.

Si queres que funcione ese programa primer vas a tener que revisar todas las configuraciones, que sean las adecuadas. Luego deberias ver como se activan las entradas, que puerto se usa. De que forma ingresa el dato.


 

anything