Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El Asm en Pic16 1 PDF
El Asm en Pic16 1 PDF
Por ello, obviaré muchas cosas que ya seguramente todos tenemos por sabidas y me ahorraré
prólogos e introducciones innecesarias.
Para programar en ensamblador para los PIC16F realmente necesitamos pocas cosas: Proteus o
MPLAB en cualquiera de sus versiones incluyen el compilador necesario. Yo uso y aconsejo tener
en vuestro ordenador abierto los siguientes elementos:
– El entorno con el que vayáis a programar(MPLAB,Proteus...)
– El archivo .pdf con el datasheet del PIC16F en cuestión (importante)
– El archivo .inc del mismo microcontrolador (si tenéis instalado Notepad++ mejor abrirlo con
el mismo) El archivo .inc lo encontraréis en la carpeta del MPASM.
– La calculadora ;-)
– El manual en pdf de MPASM también puede venir bien.
La estructura de un archivo en ensamblador no difiere mucho de uno en C, vamos a ver cada uno de
los elementos antes de entrar en detalle a lo largo de los artículos:
1- La lista de opciones (LIST): también se puede traducir como opciones de listado. En esta primera
línea vamos a especificar una serie de opciones para nuestro compilador: microcontrolador que
vamos a usar, base numérica predeterminada (radix), formato del archivo .hex... En muchas
ocasiones esta línea no es necesaria, debido a que la mayoría de las veces ya le indicamos al entorno
de programación mediante menús y otros modos los datos esenciales, y dicho entorno se lo pasa al
compilador a través de la línea de comandos.
2- Los #include: MPASM necesita que le especifiquemos el archivo del cual tomará las constantes
que usaremos en nuestro programa, sobre todo nombres y direcciones de los registros del micro. Si
vamos a usar librerías o módulos externos (en asm también se puede) lo debemos especificar con su
#include correspondiente.
3-El/los __config: los PICs incorporan uno o varios registros donde se almacena la configuración
esencial de nuestro microcontrolador. Esta configuración suele incluir la protección contra lectura
de la memoria(importante), la fuente del reloj del sistema, si el PIC debe reiniciarse por un overflow
en la pila... Además dicha configuración no puede ser modificada mediante firmware y nos puede
Aquí incluyo un trozo de programa en ensamblador con las partes que he comentado.
;Lista de opciones (tipo de procesador, base numérica y mostrar las advertencias y errores)
LIST p=16F1933,r=HEX,w=1
;Este include del microcontrolador es necesario en MPASM, además podemos incluir otros ficheros
#include p16f1933.inc ; Include register definition file
;Configuración del microcontrolador, como este PIC lleva dos registros se especifican por separado
__config _CONFIG1,_FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_ON & _CPD_ON & _BOREN_ON
& _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
__config _CONFIG2,_WRT_OFF & _VCAPEN_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_HI & _LVP_OFF
;Constantes
#define ZERO STATUS,Z
#define CARRY STATUS,C
;Macros
MOVLWF macro literal,file
MOVLW literal
MOVWF file
endm
;Variables (en este caso le indicamos que las variables empiezan el la dirección 32 del banco 0)
cblock 0x20
LINE
endc
Rotate:LSLF LINE,F
BTFSS LINE,4
GOTO $+3
MOVLW .1
MOVWF LINE
MOVF LINE,W
MOVWF PORTC
BCF PIR3,TMR4IF
RETFIE
banksel PIE3
CLRF PIE1
CLRF PIE2
MOVLWF 1<<TMR4IE,PIE3
banksel PORTA
CLRF PIR1
CLRF PIR2
CLRF PIR3
MOVLWF (1<<GIE|1<<PEIE),INTCON
banksel T4CON
MOVLWF b'00100110',T4CON
banksel PORTA
MOVLWF .1,LINE
…
…
end
En próximos artículos iremos viendo en detalle cada una de las partes, así como las
instrucciones de máquina, las diferentes directivas, ejemplos...