PROGRAMANDO EN ASSEMBLY
Aprovechando el hecho de que estoy retomando el camino de programar PIC en ensamblador, subiré mis proyectos y cualquier duda pueden comentarlo...
El dia de hoy les mostrare un sencillo programa que hace el control de un semaforo vial.
Primero y antes que nada, hay que conocer el datasheet del microcontrolador que vayamos a usar, en este caso será el pic16f84a del cual podremos conocer sus datos de esta hoja.
De la cual tomaremos los valores, para poder hacer configuraciones o guardar nuestras variables,...
Las variables se pueden guardar despues del registro H '0x0C' hasta el registro H'0x4F', esto para que no afecte a las configuraciones y queden en el banco de datos.
Empezamos, agregando una lista del pic que vayamos a usar, ahora bien, tecnicamente deberiamos configurar los fusibles del pic, así como el control de relog del oscilador y etc. Pero aquí, como será nuestra primera practica, simplemente lo vamos a simular.
Bien, una vez hayamos cargado la lista del pic a usar, declaramos nuestras variables a usar, esto siempre usando la instruccion EQU que será quien defina la variable en nuestro programa.
Aqui usaremos CONTADOR EQU 0x0C donde la variable CONTADOR sera definida en el registro H'0x0C'
de igual manera la variable CONTADOR2 y CONTADOR3
Más adelante se mira el inicio del programa definido por a instruccion ORG
que literalmente significa ORIGEN donde iniciará el ensamblaje.
La instruccion BSF H'03', 5 indica que iniciara la direccion 03, que si vemos en la hoja de datos es STATUS.
esto nos sirve para poder configurar banco de datos, cabe mencionar que el registro de estado o STATUS tiene muchas aplicaciones, pero esta vez servirá para algo sencillo.
Seguimos de la instruccion MOVLW B'00000000' y MOVWF H'06' Esto nos indica que en la direccion H'06' que es nuestro puerto B sean salidas. {''Con ceros maracamos salidas y con unos marcamos entradas''}
Finalmente cerramos el STATUS con la instruccion BCF H'03', 5
Bien, llegamos a lo que es el bucle del programa, donde se ejecutará nuestro ensamble.
Empezamos con una etiqueta, que en este caso se ha usado INICIO, seguida de la etiqueta ROJA que marca que será el bucle de nuestra luz roja en el semaforo, se usa la instruccion MOVLW B'00000001' MOVWF H'06' Que marca que en el puerto b pin 0 se accionara un uno, esto seguido de un llamado de rutina CALL DELAY, esto significa que la instruccion CALL llamará a la rutina con etiqueta DELAY
Una vez en la etiqueta DELAY, esta efectua los comandos MOVLW D'10' MOVWF CONTADOR Esto significa que en la variable contador se le asignará el valor 10 en decimal que en el registro guardara el dato 0x0A.
Luego la instruccion DECFSZ CONTADOR,1 con la etiqueta CONTAR desminuirá 1 en valor a la variable CONTADOR, despues la instruccion GOTO CONTAR llevará de vuelta a la etiqueta CONTAR, ciclando esta operación hasta la instruccion DEFSZ disminuya en 0 a la variable CONTADOR, de esta manera brincará la instruccion goto y pasará a la instruccion CALL AMARILLA....
Asi sucesivamente, y con esto tendremos terminado nuestro primer programa en ensamblador.
REALMENTE ESPERO NO HABER SIDO MUY TEDIOSO,
PERO SIENDO EL PRIMER PROGRAMA QUERÍA EXPLICAR TODO A DETALLE
ESPERO LES HAYA GUSTADO Y SI DESEAN QUE SUBA UN CODIGO EN ESPECIAL, SOLO
COMENTEN
Hola @reonfi, upv0t3
Este es un servicio gratuito para nuevos usuarios de steemit, para apoyarlos y motivarlos a seguir generando contenido de valor para la comunidad.
<3 Este es un corazón, o un helado, tu eliges .
: )
N0. R4ND0M:
8105 5505 7919 9364
2629 1712 9435 6904
3936 6083 4055 8297
4965 4352 3121 7235