que tal este tipo de programa denominado microcodestudio da lo opcion de desarrollar varias formar un programa a continuacion te muestro las varias formar de escribir un programa y realizar el mismo trabajo final.
el ejercicio consiste en hacer parpadear un led con intervalos de dos segundos por el RB0 del pic 16f877a:
Código:
led var portb.0 ; asignamos led a puerto RB0
inicio:
HIGH led ;asigna un 1 logico
PAUSE 2000 ; tiempo de espera de 2s
LOW led ; apaga led puedes aqui utilizar el comandoTOGGLE que es invertir la seleccion del comando anterior a PAUSE
PAUSE 2000 ; tiempo de espera de 2s
GOTO inicio ; crea un bucle cerrado
En el siguiente caso manegaremos todo el puerto B del pic 16f877a como salidas pero solo utililizaremos RB0, es importante incluir al principio del programa o programs a realizar siempre los siguientes comandos para la posterior programacion del pic :
@ device xt_osc ; oscilador externo XT
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
una vez realizado esto dedemos incluir trisb=0 o trisb=%0 ya que sin esto no funcionan los manejos de los puertos se debe entender que portb=%00000010 encender unicamente el el puerto RB1
para una mejor explicacion:
portb= % 1 0 0 1 1 0 1 0
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
esto indica encender del puerto b (7,4,3,1) para todos los demas permanecer en cero logico es decir apagados , este es muy util en caso de encender un grupo de leds.
listo vamos con el programa
Código:
@ device xt_osc ; oscilador externo XT
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
trisb=0 ;puerto b como salidas
inicio:
Portb=%00000001 ;controla todo el puerto pero solo enciende RBO
PAUSE 2000 ; tiempo de espera de 2s
Portb=%0000000 ;apaga todos los pines del puerto B
PAUSE 2000 ; tiempo de espera de 2s
GOTO inicio ; crea un bucle cerrado
aqui hay otra forma se manejan solo un pin a la vez del puerto y no todos a la vez como en el ejemplo anterior
@ device xt_osc ; oscilador externo XT
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
trisb=0 ;puerto b como salidas
inicio:
Portb.0=1 ; enciende RBO
PAUSE 2000 ; tiempo de espera de 2s
Portb.0=0 ;apaga RB0
PAUSE 2000 ; tiempo de espera de 2s
GOTO inicio ; crea un bucle cerrado
todo ello gracia a que este compilador reconoce basees numerales en deciamal, binario y exagesima:
10 es igual a %1010 (binario) $A exagesimal
siempre debe se debe utilizar los prefijos % para escribir un numeo en biario y $ para exagecimal ya que sin ello el PBP o compilador no lo reconoce .
Espero te halla servido mi explicacion si deeas puedes modificar el programa de manejo de puertoB y encender cualquier tipo de pines de este ubicando leds a sus salidas.