hola soy nuevo en la programacion de pic
, y me he estado documentando mucho sobre los lenguages que podia utilizar, finalmente me decidi por hacerlo con CCS
, pero ahora tengo muchas dudas sobre el codigo, ya que no lo he probado, quiciera ver si alguno de ustedes me podria ayudar
.
La idea del programa es que por el puerto A sean las entradas, y por el puerto B las salidas para el puente h que maneja el motor paso a paso bipolar, que subira o bajara una plataforma por medio de un cable y unas poleas.
Se encuentran como dos entradas 2 switch que me diran la posicion de la plataforma, el primer switch que me dira si la plataforma esta en el limite de arriba y el segundo si la plataforma se encuentra en el limite abajo, conectados a pin a0 el de arriba y pin a1 el de abajo.
Pero el motor se activara al poner el pin a2 , el pin a3 y el valor del switch de abajo en estado alto si se desea ir arriba y en estado pin a2 = 0 , pin a3 = 1 y el valor del switch de arriba en 1 si se desea ir abajo.
Siendo pin a2 y pin a3 un par de switch que el usuario manejara.
Tambien se encuentran definidas las rutinas para que el motor se mueva en un sentido o en el inverso,
aqui les adjunto el codigo, se que no esta bueno, bueno
. pero estoy comenzando, desde ya muchas gracias, espero su pronta respuesta.

La idea del programa es que por el puerto A sean las entradas, y por el puerto B las salidas para el puente h que maneja el motor paso a paso bipolar, que subira o bajara una plataforma por medio de un cable y unas poleas.
Se encuentran como dos entradas 2 switch que me diran la posicion de la plataforma, el primer switch que me dira si la plataforma esta en el limite de arriba y el segundo si la plataforma se encuentra en el limite abajo, conectados a pin a0 el de arriba y pin a1 el de abajo.
Pero el motor se activara al poner el pin a2 , el pin a3 y el valor del switch de abajo en estado alto si se desea ir arriba y en estado pin a2 = 0 , pin a3 = 1 y el valor del switch de arriba en 1 si se desea ir abajo.
Siendo pin a2 y pin a3 un par de switch que el usuario manejara.
Tambien se encuentran definidas las rutinas para que el motor se mueva en un sentido o en el inverso,
aqui les adjunto el codigo, se que no esta bueno, bueno
Código:
#include <16F84A.h>
#fuses XT,NOWDT,NOPROTECT,PUT,BROWNOUT // Opciones de configuración
#use delay(clock=4000000) // Velocidad del Cristal : 4 Mhz
#use standard_io(A) // puerto A como digital
#use standard_io(B) // puerto B como digital
#define PIN_A0 40
#define PIN_A1 41
#define PIN_A2 42
#define PIN_A3 43
#define PIN_A4 44
#define Pos1arr b'11111010'
#define Pos2arr b'11111001'
#define Pos3arr b'11110101'
#define Pos4arr b'11110110'
#define Pos1aba b'01010000'
#define Pos2aba b'01100000'
#define Pos3aba b'10100000'
#define Pos4aba b'10010000'
#define Frenoarr b'11110110'
#define Frenoaba b'10010000'
Long const tt=200; // Retardo 500 mS
Long const tz=100; // Reatrdo 200 mS
///DECLARACIONES DE FUNCIONES
void arriba(void); // mueve el motor hacia arriba
void abajo(void); // mueve motor hacia abajo
int valorswarr,valorswaba,valorpin;
valorswarr=input(pin_a0);
valorswaba=input(pin_a1);
valorpin1=input(pin_a2);
valorpin2=input(pin_a3);
///PROGRAMA
void main(void)
{
set_tris_a(0b01111); // PORTA 4 salida demas entradas
set_tris_b(0b00000000); // PORTB como salida
do
{
if((valorswaba==1)&&(valorpin1==1)&&(valorpin2==1))
{
arriba();
}
if((valorswarr==1)&&(valorpin1==0)&&(valorpin2==1))
{
abajo();
}
}while(TRUE);
}
void arriba(void)
{
int i=0;
if(
do{
output_b(Pos1arr);
delay_ms(tt);
output_b(Pos2arr);
delay_ms(tt);
output_b(Pos3arr);
delay_ms(tt);
output_b(Pos4arr);
} while((i!=8)||(valorswarr==1))
}
void abajo(void)
{
int i=0;
do{
output_b(Pos1aba);
delay_ms(tt);
output_b(Pos2aba);
delay_ms(tt);
output_b(Pos3aba);
delay_ms(tt);
output_b(Pos4aba);
}while((i!=8)||(valorswaba==1))
}
Adjuntos
Última edición por un moderador: