PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR
1
2
BUS DE CONTROL, BUS DE DIRECCIONES Y BUS DE DATOS
Al trabajar con un microcontrolador debemos tener a la mano el diagrama a bloques para darnos una idea general de los elementos que contiene.
Es importante reconocer algunas líneas que maneja información y que se les conoce como BUS, podemos notar tres:
• BUS DE PROGRAMA O DE CONTROL
• BUS DE DIRECCIONES
• BUS DE DATOS.
3
CÓDIGO BÁSICO DE UN PROGRAMA EN ENSAMBLADORInicio
Declaración de
librerías
Configuración del
procesador
Configuración de
puertos
Cuerpo del
programa principal
Ciclo
Ciclo
Declaración de
variables
Inicio del listado
de instrucciones
4
CÓDIGO BÁSICO DE UN PROGRAMA EN ENSAMBLADORInicio
Escritura de la palabra de configuración:
· Deshabilitar protección de memoria de código
· Deshabilitar protección de memoria de programa
· Deshabilitar BOR
· Configurar oscilador INTOSC con puerto digitales
Indicación del uso del PIC16F628A
Declarar variables
dato1 dirección 0x20
dato2 dirección 0x21
dato3 dirección 0x22
Deshabilitar los comparadores analógicos
Ciclo
Ciclo
Incluir archivo p16f628a.inc
Inicio del listado
de instrucciones
LIST P=16F628A
__CONFIG 0X3F30
RADIX HEX
INCLUDE <p16f628a.inc>
dato1 equ 0x20
dato2 equ 0x21
dato3 equ 0x22
ORG 0X00
InicioProgramaPrincipal
MOVLW 0x07
MOVWF CMCON
BSF STATUS,RP0
MOVLW 0X0F
MOVWF TRISA
MOVLW 0X00
MOVWF TRISB
BCF STATUS,RP0
CICLO
MOVFW PORTA
MOVWF PORTB
GOTO CICLO
END
Configurar RA0-RA3 como entradas
y RA4-RA7 como salidas
Configurar RB0-RB7 como salidas
PORTB = PORTA
5
CÓDIGO BÁSICO DE UN PROGRAMA EN ENSAMBLADOR
Inicio
Escritura de la palabra de configuración:
· Deshabilitar protección de memoria de código
· Deshabilitar protección de memoria de programa
· Deshabilitar BOR
· Configurar oscilador INTOSC con puerto digitales
Indicación del uso del PIC16F628A
Declarar variables
dato1 dirección 0x20
dato2 dirección 0x21
dato3 dirección 0x22
Deshabilitar los comparadores analógicos
Ciclo
Ciclo
Incluir archivo p16f628a.inc
Inicio del listado
de instrucciones
LIST P=16F628A
__CONFIG 0X3F30
RADIX HEX
INCLUDE <p16f628a.inc>
dato1 equ 0x20
dato2 equ 0x21
dato3 equ 0x22
ORG 0X00
InicioProgramaPrincipal
MOVLW 0x07
MOVWF CMCON
BSF STATUS,RP0
MOVLW 0X0F
MOVWF TRISA
MOVLW 0X00
MOVWF TRISB
BCF STATUS,RP0
CICLO
MOVFW PORTA
MOVWF PORTB
GOTO CICLO
END
Configurar RA0-RA3 como entradas
y RA4-RA7 como salidas
Configurar RB0-RB7 como salidas
PORTB = PORTA
6
CÓDIGO BÁSICO DE UN PROGRAMA EN ENSAMBLADOR
Inicio
Escritura de la palabra de configuración:
· Deshabilitar protección de memoria de código
· Deshabilitar protección de memoria de programa
· Deshabilitar BOR
· Configurar oscilador INTOSC con puerto digitales
Indicación del uso del PIC16F628A
Declarar variables
dato1 dirección 0x20
dato2 dirección 0x21
dato3 dirección 0x22
Deshabilitar los comparadores analógicos
Ciclo
Ciclo
Incluir archivo p16f628a.inc
Inicio del listado
de instrucciones
LIST P=16F628A
__CONFIG 0X3F30
RADIX HEX
INCLUDE <p16f628a.inc>
dato1 equ 0x20
dato2 equ 0x21
dato3 equ 0x22
ORG 0X00
InicioProgramaPrincipal
MOVLW 0x07
MOVWF CMCON
BSF STATUS,RP0
MOVLW 0X0F
MOVWF TRISA
MOVLW 0X00
MOVWF TRISB
BCF STATUS,RP0
CICLO
MOVFW PORTA
MOVWF PORTB
GOTO CICLO
END
Configurar RA0-RA3 como entradas
y RA4-RA7 como salidas
Configurar RB0-RB7 como salidas
PORTB = PORTA
7
Palabra de configuración
8
Palabra de configuración
9
ARQUITECTURA HARVARD
La memoria de programa y la memoria de trabajo están separadas para optimizar el funcionamiento del microcontrolador.
10
ORGANIZACIÓN DE LA MEMORIA DE PROGRAMA
En el PIC16F628A las instrucciones deben escribirse a partir de la localidad 000h de la memoria de programa. En el código lo indicamos mediante la directiva ORG 0x00.
11
PUERTOSEl PIC16F628A se comunica con el exterior por medio de dos puertos: PORTA y PORTB.
Cada terminal (pin) de los puertos se puede configurar como entradas o como salidas de manera independiente, para esto se utilizan los registros TRISA y TRISB.
12
ARQUITECTURA BASADA EN BANCOS DE REGISTROS (RAM) En el PIC16F628A en bancos de registros que está activo se elige mediante una combinación de los bits RP0 y RP1 del registro STATUS.
13
BANDERAS
El registro STATUS también contiene las flagso banderas. Son tres bits que modifican su valor de acuerdo al resultado de las operaciones aritméticas y lógicas.
Las banderas son:
• Z = Zero
• DC = Digit Carry
• C = Carry (Acarreo)
14
INSTRUCCIONES ORTOGONALES
Cualquier instrucción puede utilizar cualquier elemento de la arquitectura como fuente o destino.
Efectúa sus operaciones con dos operandos, uno que proviene del registro W (Work), y el otro que se encuentra en cualquier otro registro o del propio código de instrucción. El resultado puede ir a cualquier registro o al registro W
15
INSTRUCCIONES ORIENTADAS A REGISTROS
16
INSTRUCCIONES ORIENTADAS A REGISTROS
17
INSTRUCCIONES ORIENTADAS A BIT
18
INSTRUCCIONES ORIENTADAS A BIT
19
INSTRUCCIONES PARA OPERACIONES CON LITERALES
20
INSTRUCCIONES PARA OPERACIONES CON LITERALES
21
INSTRUCCIONES
22
INSTRUCCIONES
23
INSTRUCCIONES
24
INSTRUCCIONES
25
INSTRUCCIONES
26
INSTRUCCIONES