Curso de programación en C para microcontroladores PIC

Que tal, estoy buscando como saltar la paginacion en el pic 16f877a, mi programa ya paso los 2k y quiero metener mas rutinas, estoy haciendo un programa para abrir una cerradura electrica, con clave que se ingresa a travez de un teclado y mostrado por un lcd 2 x16, aqui les cuelgo el programa:

//Proyecto de cerradura con clave
void main()
{
unsigned short clave[4]={1,5,9,2}, teclado[4]={0,0,0,0}, a, b;
trisb=0x0f; trisc=0; trisa.f4=0; trisd.f1=0; adcon1=0x06;
x5:
porta.f4=0;
portd.f1=0;
keypad_init(&portb);
lcd_config(&portc,1,0,2,7,6,5,4);
lcd_cmd(lcd_clear); lcd_cmd(lcd_cursor_off);
lcd_out(1,3,"Ingrese Clave"); lcd_chr(2,6,' ');
for(a=0;a<4;++a)
{
x1:
b=keypad_read();
if(b==0)
goto x1;
teclado[a]=b;
lcd_chr_cp('*');
x2:
b=keypad_read();
if(b!=0)
goto x2;
}
for(a=0;a<4;++a)
{
if(clave[a]!= teclado[a])
goto x3;
}
lcd_cmd(lcd_clear);
lcd_out(1,5,"clave");
lcd_out(2,4,"correcta");
delay_ms(1000);
lcd_cmd(lcd_clear);
lcd_out(1,6,"ACCESO");
lcd_out(2,4,"AUTORIZADO");
porta.f4=1;
delay_ms(2000);
porta.f4=0;
goto x5;
x3:
lcd_cmd(lcd_clear);
lcd_out(1,5,"clave");
lcd_out(2,3,"incorrecta");
delay_ms(2000);


portd.f1=1;
delay_ms(2000);
lcd_cmd(lcd_clear);
portd.f1=0;

goto x5;
}

cuando meto mas mensajes al lcd y lo simulo, la pantalla sale en blanco, por eso quiero ponerlo con sub-rutinas, pero guardarlas en otro pagina, agradeceria mucho si me podrian ayudar.... gracias
 
Gracias a la colaboración de "El nombre" podemos ofrecer a todos los miembros de nuestra comunidad una presentación donde se explica de una manera muy didáctica el entorno de programación en C para microntroladores PIC, usando como ejemplo la familia 16f87xx.



Espero que les sea de utilidad.

Saludos.

antes que todo saludos he leidos tus comentarios y me intereza obtener ese curso que describes no tengo mucho conocimiento en c solo en asembler y me gustaria menejar el lenguaje c te agradeceria si me puedes permitir obtenerlo de antemano muchas gracias sin importar tu decision la cual respetare ok saludos:apreton:
 
como sumo dos variables, lo he hecho de varias formar pero siempre me tira un error, lo he puesto así

x=z+y;

pero aun así me sigue tirando error
ya le di los valores a las variables y todo, pero nada me tira error
ayúdenme por favor
gracias
 
Buenas tardes amigos del foro, estoy estudiando un código para usar el conversor analógico digital de un pic, la verdad no tengo mucha experiencia en C como me gustaría, en fin que hay una línea que no entiendo bien que hace y espero alguien me la pueda explicar, saludos.


PORTB = (8>>(x>>6)); // Use the 2 MS Bits of the result to
// select the bit position of the LED on PORTB
 
Suponé que x=0xFF, entonces:

x>>6 = desplazar 6 bits a la derecha => 0xFF>>6 = 0b1111 1111 >> 6 = 0b0000 0011 = 0x03

(8>>(x>>6)) = (8>>0x03) = (8>>3) = 0x08 >> 3 = 0b0000 1000 >> 3 = 0b0000 0001 = 0x01 = 1
 
Operadores a nivel de bit

Nombre del operador Sintaxis Sobrecargable Incluido en C
Desplazamiento a la izquierda a << b Sí Sí
Asignación con desplazamiento a la izquierda a <<= b Sí Sí
Desplazamiento a la derecha a >> b Sí Sí
Asignación con desplazamiento a la derecha a >>= b Sí Sí
 
Muchísimas gracias por la respuesta, la verdad no era para nada obvio y tuve que analizar bien lo que me explicaban, lo que me preocupa es que estos operadores con Bits no los tengo muy arraigados por lo que es posible que esté programando de manera nada eficiente y es algo que como ya mencioné, me preocupa.

P.D. Supongo que mi post lo unieron con este hilo, me desconcerté al entrar XD.
 
Estimado.

favor de subir a otro servidor el libro de prog. para PIc, he intentadode todas formas pero no puedo bajar del servidor depositefiles.

de antemano las gracias.

saludos



esta estupendo el aporte.. pero voy a complementarlo con dos videotutoriales k tratan el mismo tema.. lo hago pork a mi me sirvieron de verdad..ya k de estar en pelotas ahora me considero alguin con conocimiento medio avanzado .. esto requiere mucho compromiso

1ra part http://depositfiles.com/files/toq73oe31
2da part http://depositfiles.com/files/mwhsxd2pb
 
Estimado.

favor de subir a otro servidor el libro de prog. para PIc, he intentadode todas formas pero no puedo bajar del servidor depositefiles.

de antemano las gracias.

saludos
Los links funcionan bien, pues lo acabo de comprobar, sin embargo hay que esperar 30 minutos para poder descargar el segundo archivo, ya que la pagina de DepositFiles tiene un limite de descargas.

Intenta descargar los archivos desde otra PC, pues los enlaces aún funcionan.

Saludos.
 
muy buen post hace un mes e estado aprendiendo por cuenta propia lenguaje C ya que un día por curiosidad me compre Modulo Joystick Palanca De Control uno identico ala imagen que dejare y para controlarlo necesito un pic ,el cual ya tenia por que antes empleaba lenguaje asm asi que se lo basico ,por eso no se si me pudieran facilitar un ejemplo simple con este Palanca De Control aka unos datos :2 potenciometros lineales 4k7 y un pulsador digital, los cuales son controlados por el movimiento de la palanca. Ideal para proyectos de robotica con arduino.
Dimensiones: 3.7 x 2.5 x 3.2 cm
5Pines: Gnd, +5v, VRx, VRy, SW lo unico que encontre por la red .
 

Adjuntos

  • modulo-joystick-palanca-de-control-para-arduino-y-robotica-532-MPE4622998142_072013-O.jpg
    modulo-joystick-palanca-de-control-para-arduino-y-robotica-532-MPE4622998142_072013-O.jpg
    20.8 KB · Visitas: 15
hola que tal, estoy interesado en el curso de "c18 desde 0" pero el enlace ya no sirve. alquien podría ayudarme a adquirirlo? saludos!!!
 
Última edición:
hola buenas tardes gente del foro...
queria preguntarles estoy programando en ccs y funcion realmente bien
pero necesito optimizar los tiempos y queria preguntarles como manejar los puertos y de mas en asm dentro del ccs si existe algun tutorial donde pueda ver como configurar en asm las interrupciones
estoy usando el pic 18f452

muchas gracias ...
 
pero no tiene caso prender un led en ASM

optimizando tiempo pues no se a que te refieras.

es cierto que los pic18f usan el registro LAT por que al ser micros mas rapidos que los 16f necesitan hacer un latch por en puerto.

esto se debe a que en procesamiento son mas rapidos para escribir en el puerto.

no voy a decir que son super PIC no lo son solo son una gama diferente.

¿ASM?
para un led pues yo solo lo uso para remapear vectores cuando uso bootloader fuera de eso no uso para nada el ASM.

eso pasa cuando trabajan en ASM y desconocen el poder del C.

es cierto que el C ocupa mas lineas de codigo, si no lo sabes usar, pero si conoces a fondo el C no tiene caso usar ASM.

en ese caso los Arduinos lo programarian mas en ASM que en lenguaje prossesing
 
hola trilo-byte
el tema es que estoy manejando un ccd de sony ilx554b... y hace mucho que no programo en asm.
y lo unico que programe en asm es 16f...
cuando conocí el c no toque mas el mplab asm me quede con el ccs
pero ahora necesito hacer parte del programa en asm y no tenia idea como hacerlo
por eso empece por lo mas basico...
agradezco a este foro ya he podido adelantar algo...

gracias
 
pero es que no tiene caso digo el titulo dice :

Curso de programación en C para microcontroladores PIC

no tiene caso volver atras con el ASM, es cierto que C es mas lento SI y solo SI no lo sabes usar.

pero si ya estas trabajando en C no tiene caso usar ASM , he visto codigos horrorosos en ASM donde usan rutinas DELAY.
 
Atrás
Arriba