pic16f877a - parte 2

10
Escritura y compilación de un programa en Assembler

Upload: paul-quimbiamba

Post on 02-Feb-2016

221 views

Category:

Documents


0 download

DESCRIPTION

Pic micros

TRANSCRIPT

Page 1: Pic16f877a - Parte 2

Escritura y compilación de un programa en Assembler

Page 2: Pic16f877a - Parte 2

Pasos  1)Se escribe la fuente y se lo almacena en un

archivo de texto con extensión .ASM . Además de la fuente con extensión .ASM es necesario entregar al compilador un archivo producido por Microchip(Mplab) con extensión .INC según el tipo de PIC que se esté utilizando

2)Se compila la fuente, es decir, se transforma en

opcode los códigos mnemónicos o instrucciones.

Page 3: Pic16f877a - Parte 2

El compilador assembler genera los siguientes archivos:

•  HEX → Contiene los códigos operativos para enviar al PIC a través del programador.

•  .LST → Archivo de texto el cual contiene todo el source assembler y la correspondiente traducción en opcode. No se utiliza para la programación del PIC pero es útil para verificar los procesos de compilación.

•  .ERR → Contiene la lista de errores encontrados en la compilación y el número de línea en el interno del source assembler en la cual se encontraron.

Page 4: Pic16f877a - Parte 2
Page 5: Pic16f877a - Parte 2

El ensamblador MPASM (distribuido por Microchip) soporta los sistemas de numeración decimal, hexadecimal, octal, binario y ASCII.

Los nemónicos que tengan una constante como operando deberán incluirla respetando la sintaxis que se indica a continuación.

Decimal .<valor> d’<valor>’ D’<valor>’

Hexadecimal 0x<valor> h’<valor>’ H’<valor>’

<valor>h . <valor>H Octal o’<valor>’ O’<valor>’ Binario b’<valor>’ B’<valor>’ ASCII ‘<carácter>’ a’<carácter>’ A’<carácter>’ Cadena “<cadena>”

TIPO SINTAXIS

Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta.

Ejemplo: movlw 0F7h

Page 6: Pic16f877a - Parte 2

Directivas

•  Controlan el proceso de ensamblado del programa, pero no son parte del mismo (también se conocen como pseudoinstrucciones).

•  Hay más de 50 directivas reconocidas por MPASM. A continuación se recogen algunas de las más habituales

END Es la única directiva obligatoria. Indica al ensamblador dónde debe detener el proceso. Debe colocarse en la última línea del programa.

<etiqueta> EQU <expresión> El valor <expresión> es asignado a <etiqueta>. Estas directivas se suelen colocar al principio del programa y habitualmente se usan para definir constantes y direcciones de memoria.

[<etiqueta>] ORG <expresión>

Las instrucciones del código fuente que siguen a esta directiva se ensamblan a partir de la posición indicada por <expresión>.

Page 7: Pic16f877a - Parte 2

__CONFIG <expresión> [& <expresión> & ... & <expresión>] Permite indicar la configuración elegida para la grabación del PIC. Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC

LIST P=16F877

Indica el tipo de microcontrolador utilizado. INCLUDE <p16F877.inc> o INCLUDE “p16F877.inc”

Incluye en el programa un fichero donde se definen las etiquetas con las que se nombra a los diferentes registros y sus bits. Este fichero se encuentra en el directorio principal del programa ensamblador. Puede usarse esta directiva para incluir cualquier otro fichero (¡Ojo! El fichero de inclusión no puede terminar con una directiva END).

DT <expr1> [, <expr2>, ... , <exprN>]

Genera una instrucción retlw por cada expresión que incluya la directiva. Si la expresión es del tipo cadena, se generará una instrucción retlw por cada carácter de la misma.

Page 8: Pic16f877a - Parte 2

LIST P=16F877A ;Directiva para definir listado y microcontrolador

INCLUDE P16F877A.INC ;Inclusión de fichero de etiquetas ;Etiquetas

OPERAND1 EQU 0x21 ;Define la posición del operando 1 OPERAND2 EQU 0x22 ;Define la posición del operando 2

RESULTADO EQU 0x23 ;Define la posición del resultado

ORG0 ; Indica al ensamblador la dirección de ; memoria de programa donde se ;colocará la siguiente instrucción movlw 5 movwf OPERAND1 movlw 2 movwf OPERAND2 movfw OPERAND1 addwf OPERAND2,0 movwf RESULTADO END

Page 9: Pic16f877a - Parte 2

LIST P=16F877A ;Directiva INCLUDE P16F877A.INC ;Inclusión de fichero de etiquetas

num equ 0xa5

CLRF STATUS

BSF STATUS,RP0 CLRF TRISB ; PORTB como salida MOVLW 0XFF MOVWF TRISA ;PORTA como entrada MOVLW 0X06 MOVWF ADCON1 CLRF STATUS ;Volvemos al banco 0 CLRF PORTB

;Por el Puerto B se saca en binario, el numero de veces ;que se pulsó la tecla que está conectada a la entrada RA4

Page 10: Pic16f877a - Parte 2

ESPERA: BTFSS PORTA,1 ;Esperamos a que se pulse la tecla

CALL INCREMENTO ;en cuyo caso RA4 pasa a 0 y vamos a GOTO ESPERA ;subprograma de INCREMENTO

INCREMENTO INCF PORTB,1 ;Si se pulsó incrementamos PORTB

VUELVE DECFSZ num,1

GOTO VUELVE SOLTAR

BTFSS PORTA,1 ;no salimos hasta que se haya soltado GOTO SOLTAR ;la tecla, en ese caso RA4 pasaría a 1 GOTO ESPERA END