# Programar PIC16F877 y PIC16F877A



## Ahona (Feb 20, 2008)

Hola!

Tengo una duda...que diferencias hay entre estos 2 microcontroladores a la hora de programarlos?
Yo tengo el *PIC16F877*, pero he probado un simple programa para apagar y encender un led y no consigo que funcione...el programa lo publicaron en un tutorial para el *PIC16F877A*, por lo que no se si servira para el mio...

Un saludo y muchas gracias!


----------



## Meta (Feb 20, 2008)

http://www.todopic.com.ar/foros/index.php?topic=20593.0


----------



## Ahona (Feb 21, 2008)

Muchas gracias por contestar!

Pues no se que estoy haciendo mal, porque por mas que lo intento, no consigo hacer que funcione...

El programa que utilizo es el MLAB y para escribir en el micro el icprog...

Este es el codigo del programa:

```
;LED del pin RB0 oscila entre ON/OFF
    LIST p=16F877A
    INCLUDE<P16F877A.INC>

    ORG        0000H
    bsf        STATUS,RP0    ;Banco-1
    bcf        TRISB,0        ;RB0 como salida
    bcf        STATUS,RP0    ;Banco-0
REPITE                    ;Etiqueta REPITE
    btfss    PORTB,0        ;Es RB0=1?
    goto    ACTIVAR        ;NO lo es -> salto hasta ACTIVAR
    bcf        PORTB,0        ;SI lo es -> RB0=0 (Apago el LED)
    goto    REPITE
ACTIVAR                    ;Etiqueta ACTIVAR
    bsf        PORTB,0        ;RB0=1 (Enciendo el LED)
    goto    REPITE        ;Salto hasta REPITE

    END                    ;Fin de Programa.
```

EDITO: Llevo toda la tarde dando vueltas al programa y no consigo hacer que funcione...me he planteado que podria tener mal el programador del PIC, pero es que el Icprog no me da ningun problema a la hora de escribir en el micro...y con el MPLAB he cambiado el include, ya que mi PIC es el 16F877, pero sigo sin conseguir nada...

Sabeis que puedo estar haciendo mal?

Un saludo y muchas gracias!


----------



## Airoa Airon (Feb 21, 2008)

mira yo tambien apenas estoy aprendiendo aprogramar pero a simple vista puedo ver algo,

cada instruccion del pic con un crystal de 4mhz dura 1us osea una cosa de nada

REPITE                    ;Etiqueta REPITE
    btfss    PORTB,0        ;pruebas si esta prendido el led
    goto    ACTIVAR         ;si esta apagado lo prendes, 
    bcf        PORTB,0        ;
    goto    REPITE
ACTIVAR                         ;
    bsf        PORTB,0        ;aqui lo prendes
    goto    REPITE            ; y de aqui te vas a a repite otra ves, el programa duro 4microsegundos en apagar el led y durara mas o menos otros 4 microsegundos en prenderlo, asi que yo creo que ese es el problema prende y apaga demasiado rapido, ponle algo para que se retarde, dime que piensas, y ahi posteas algo.


----------



## Meta (Feb 22, 2008)

Cuando fui directamente a aprender a programar con el 16F876A/77A, todos me recomendaban el 16F84A, si quería algo superior el 16F88 con más memoria. Después los 16F876A/77A porque tienen más pines y más cosas. Ahora los nuevos y mejor que los 16F876A y 16F877A me acaban de decir ayer son los 16F886 y los 16F887.


----------



## Elvic (Feb 22, 2008)

hola 
estoy de acuerdo con Airoa Airon

Te hacen falta las sub-rutinas de espera

pero que es lo que hace? se queda encendido el led o apagado? 

he de suponer, que si, permanece encendido el led  es problema de las subrutinas que te comente al no estar presentes no damos tiempo de ver si enciende o apaga.


----------



## Ahona (Feb 22, 2008)

Muchas gracias por las respuestas,

He de suponer que el led deberia encenderse y apagarse...

Pero no he conseguido que haga nada, es decir, no se enciende y si lo hace, es tan rapido que ni lo aprecio.

Airoa Airon y Elvic, aun no he tenido tiempo para aumentar el tiempo de encendido del led, luego voy al laboratorio y lo intento y ya os comento...

Meta, muchas gracias por el libro, lo hechare una ojeada, pero para el proyecto que tengo que hacer, me romendaron este micro...

De todas formas, no se si hare algo mal con el y si puedo, intentare probar con el PIC16F877A

Muchas gracias a todos

Un saludo!


----------



## Meta (Feb 22, 2008)

Sabiendo el 16F84A, ya sabes el 16F876A/77A. Las instrucciones son idénticas, que el 16F877A tiene muchos más puertos y memoria. Yo también lo recomiendo, para empezar de novato novato, mejor el 16F84A.

Hasta otra.


----------



## Ahona (Feb 22, 2008)

Lo malo es que con el micro tengo que controlar un motor (velocidad y sentido de giro) y un servomotor y si no he mirado mal...el 16F84A no tiene PWM...

De todas formas, muchas gracias Meta

Un saludo!


----------



## mabauti (Feb 22, 2008)

RB0 lo tienes como salida y lo estas leyendo.


----------



## Meta (Feb 22, 2008)

Ahona dijo:
			
		

> Lo malo es que con el micro tengo que controlar un motor (velocidad y sentido de giro) y un servomotor y si no he mirado mal...el 16F84A no tiene PWM...
> 
> De todas formas, muchas gracias Meta
> 
> Un saludo!



ajajjaajja, mira el libro y lo tiene a parte con un driver. Y te enseñan todo sobre PWM y funciona, motor DC, PAP y servo. Para estas cosas es mejor utilizar el 16F876A y los 18F2550 para no usar driver a parte.

La mejora del 16F876A es el 16F886

El posible sustituto del 16F84A que dicen que quizás sea el nuevo triunfador, es el *16F88* que este si te incluye USART, ADC y el *PWM*. Si vas a utilizar muchas patas, mejor los del 16F876A y 877A. A mi también me gusta el 16F876A, y sólo encontré este libro para aprender el asm, al menos asm es igual en la gama 16F, ejeejjejeje

Suerte con tu proyecto.


----------



## Ahona (Feb 23, 2008)

Bueno, pues ahora no puedo probar si va el programa o no, ya que el icprog me dice lo del error 0000h.
Ya me lo habia dicho otras veces, pero era al hacerlo desde el protatil o desde otro ordenador...con el ordenador que lo estaba probando no me habia dado nunca ese error, pero ahora me sale justo cuando le doy al programar...es decir, que ni empieza a escribir el codigo...le doy al boton, se queda pensando y me sale ese error...
Por mas que miro y configuro, no consigo hacer nada...

Alguna idea?

Muchas gracias por vuestra paciencia

Un saludo!


----------



## solid (Dic 19, 2008)

lo que pasa creo yo que usas la libreria de 77a y no la del 77 solo sin la a checa desde ahi la diferencia de estos dos me dijo mi profesor es que el 77a cuenta con mas memoria, bueno nadamas para que cheques por si es eso por q tu programa esta bien yo diria q lo hicieras en c es mas facil


----------



## payasin (Jun 8, 2009)

estoy aprendiendo a programar el pic 16f877a en mplab me prodrian ayudar a ver como puedo hacer un programa que sea usando el teclado de la un ps2 que es de la compu con este pic y visualizar en el lcd


----------



## solid (Jun 10, 2009)

payasin dijo:
			
		

> estoy aprendiendo a programar el pic 16f877a en mplab me prodrian ayudar a ver como puedo hacer un programa que sea usando el teclado de la un ps2 que es de la compu con este pic y visualizar en el lcd




bueno te recomendaria hacerlo en C ya que tiene mas cosas ademas de no estar contando bits como en mplab ademas lo de la LCD te lo puedo proporcionar no e intentado aun una comunicacion con ps2 pero si con serial si quieres te paso un programa sensillo para q lo puedas ver solo postea de nuevo


----------



## mcmudrok (Jun 10, 2009)

hola soy nuevo en este foro soy un simple estudiante de prepa pero me dejaron acer un protoipo con un microcontrolador pic 16f84a alguien tendria algun prototipo para esto, pero sin usar servo motores


----------



## hecpro (Jul 3, 2010)

hola soy nuevo en este foro, no se si me pueden ayudar con esto tengo que hacer un seguidor de luz solar, trate de hacerlo con comparadores pero me esta resultando dificil......


----------

