UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato...

232

Transcript of UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato...

Page 1: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip
Page 2: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

UNIVERSIDAD NACIONALEXPERIMENTAL DEL GTACHIRA

DECANATO DE INVESTIGACIONLABORATORIO DE INVESTIGACION ELECTRONICA

MICROCONTROLADORESMicrochip PIC

Manual de programación

Autor:González Tito

Revisado por:Prof. César ContrerasIng. Jhon AmayaProf. Rosaura GómezProf. Jaime Salcedo LunaProf. Carlos Ramírez

SAN CRISTOBAL, 1999

Page 3: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip
Page 4: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

I

I N D I C E

PROLOGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIX

INTRODUCCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXI

AGRADECIMIENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIII

1. ANTECEDENTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1. ALGUNOS CONCEPTOS BASICOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.1. ¿Qué es ROM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2. ¿Qué es la RAM ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.3. ¿Qué es un Registro de Trabajo ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.4. ¿Qué son las Banderas (Flags) de Condición ? . . . . . . . . . . . . . . . . . . . . . . 2

1.2. UN SISTEMA TIPICO DE MICROCONTROLADOR . . . . . . . . . . . . . . . . . . . 3

1.3. LA ARQUITECTURA DE UN MICROPROCESADOR (CPU) . . . . . . . . . . . . 41.3.1. Acumulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.2. Contador del Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.3. Registro de Instrucciones y Decodificador . . . . . . . . . . . . . . . . . . . . . . . . 71.3.4. Registro(s) de Dirección(es) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.5. Unidad Aritmético Lógica (ALU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3.6. Circuitería de Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.4. OPERACIONES DE MICROCONTROLADOR . . . . . . . . . . . . . . . . . . . . . . . 101.4.1. Tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4.2. Búsqueda de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4.3. Lectura de memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4.4. Escritura de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4.5. Espera (Sincronización de memoria) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4.6. Entrada/Salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4.7. Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.4.8. Sostenimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Page 5: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

II

1.5. EL LENGUAJE ENSAMBLADOR Y LOS MICROCONTROLADORES . . 131.5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.5.2. ¿Qué es el Assembler? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.5.3. ¿Qué hace el Assembler ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.5.4. Archivo Objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.5.5. Archivo Listado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.5.6. Archivo de Referencia General de Símbolos . . . . . . . . . . . . . . . . . . . . . . 14

1.6. TABLAS Y FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2. PIC16C5X, FAMILIA BASE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1. DESCRIPCION GENERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2. DIAGRAMAS DE PINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.3. REVISION DE LA ARQUITECTURA DEL MICROCONTROLADOR. . . . 182.3.1. Esquema de pulsos de reloj, ciclo de instrucción. . . . . . . . . . . . . . . . . . . 192.3.2. Secuencias de instrucción o Encausamento. . . . . . . . . . . . . . . . . . . . . . . 20

2.4. ORGANIZACION DE LA MEMORIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.4.1. Organización de la memoria de programas . . . . . . . . . . . . . . . . . . . . . . . 202.4.2. Organización de la memoria de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.4.3. Registro de estado (Status) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.4.4. Registro de opciones (Option) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.4.5. Contador del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.4.6. El puntero de Pila (Stack Pointer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.4.7. Direccionamiento indirecto, registros INDF y FSR . . . . . . . . . . . . . . . . . 252.4.8. Registro W (Working) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.4.9) Eventos que afectan los bits de tiempo fuera y Reposo. . . . . . . . . . . . . . 26

2.5. PUERTOS I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.5.1. Puerto A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.5.2. Puerto B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.5.3. Puerto C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.5.4. Registro TRIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.5.5. Características de Lectura o Escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.5.6. Consideraciones de programación I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.6. MODULO TIMER 0 (TMR0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.6.1. Utilización del TMR0 con pulsos externos (Eventos). . . . . . . . . . . . . . . . 292.6.2. Prescaler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Page 6: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

III

2.7. CARACTERISTICAS ESPECIALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.7.1. Bits de configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.7.2. Configuración del Oscilador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.7.3. Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.7.4. POR (Power On Reset) y DTR (Device Timer Reset) . . . . . . . . . . . . . . . 342.7.5. Watchdog Timer (WDT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.7.6. Modo de bajo consumo (SLEEP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.8. SET DE INSTRUCCIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.8.1. Instrucciones para funciones logicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.8.1.1. Andlw k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.8.1.2. Andwf f,d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.8.1.3. Iorlw k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.8.1.4. Iorwf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.8.1.5. Xorlw k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.8.1.6. Xorwf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.8.1.7. Comf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.8.2. Instrucciones para funciones aritmeticas . . . . . . . . . . . . . . . . . . . . . . . . . 402.8.2.1. Addwf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.8.2.2. Subwf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.8.3. Instrucciones para limpiar registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.8.3.1. Clrw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.8.3.2. Clrf f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.8.3.3. Clrwdt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.8.4. Instrucciones para incrementar y decrementar . . . . . . . . . . . . . . . . . . . . . 422.8.4.1. Incf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.8.4.2. Incfsz f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.8.4.3. Decf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.8.4.4. Decfsz f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2.8.5. Instrucciones de rotación e intercambio . . . . . . . . . . . . . . . . . . . . . . . . . . 442.8.5.1. Rlf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.8.5.2. Rrf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.8.5.3. Swapf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.8.6. Movimiento entre registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.8.6.1. Movlw k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.8.6.2. Movwf f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.8.6.3. Movf f, d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462.8.6.4. Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Page 7: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

IV

2.8.7. Instrucciones de llamado y retorno (Subrutinas) . . . . . . . . . . . . . . . . . . . 472.8.7.1. Call k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.8.7.2. Retlw k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.8.8. Instrucciones de salto incondicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.8.8.1. Goto k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.8.9. Instrucciones para el manejo de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.8.9.1. Bcf f, b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.8.9.2. Bsf f, b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.8.9.3. Btfsc f, b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492.8.9.4. Btfss f, b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.8.10. Instrucciones para control del microcontrolador . . . . . . . . . . . . . . . . . . 502.8.10.1. Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.8.10.2. Tris f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.8.10.3. Nop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

2.9. TABLAS Y FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

3. MPASSEMBLER, Microchip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

3.1. DEFINICION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813.1.1. MpAsm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813.1.2. MpLink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813.1.3. MpLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

3.2. ALGUNOS TERMINOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813.2.1. Ensamblar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.2.2. Directivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.2.3. Archivo Hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.2.4. Enlazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.2.5. Archivo Listado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.2.6. Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.2.7. Mnemónicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.2.8. PIC 16/17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.2.9. Código Objeto Relativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.2.10. Código Fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3.3. ENTORNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Page 8: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

V

3.4. INTERFACE DE COMANDOS EN LINEA . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

3.5. INTERFACE PARA MS-DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.5.2. Archivo Fuente (Source File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.5.3. Tipo de microprocesador (Micro Processor Type) . . . . . . . . . . . . . . . . . 853.5.4. Archivo de Errores (Error File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.5.5. Archivo de Referencia General (Cross Reference File) . . . . . . . . . . . . . . 853.5.6. Archivo de Listado (Listing File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.5.7. Tipo de salida Hexadecimal (HEX Dump Type) . . . . . . . . . . . . . . . . . . . 863.5.8. Ensamblar en un Archivo Objeto (Assemble to Object File) . . . . . . . . . . . 86

3.6. INTERFACE PARA WINDOWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.6.2. Radix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.6.3. Nivel de alerta (Warning Level) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.6.4. Salida Hexadecimal (Hex Output) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.6.5. Archivos generados (Generated Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.6.6. Sensibilidad al tipo de letra (Case Sensitive) . . . . . . . . . . . . . . . . . . . . . . 873.6.7. Expansión de los macros (Macro Expansion) . . . . . . . . . . . . . . . . . . . . . 873.6.8. Procesador (Processor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.6.9. Tamaño del tabulador (Tab Size) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.6.10. Opcines Extra (Extra Options) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.6.11. Guardar configuración (Save Settings) . . . . . . . . . . . . . . . . . . . . . . . . . 87

3.7. FORMATO DEL CODIGO FUENTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.7.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.7.2. Label (Etiquetas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883.7.3. Mnemónicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.7.4. Operandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.7.5. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

3.8. TABLAS Y FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

4. LENGUAJE ASSEMBLER POR DIRECTIVAS (MACROASSEMBLER) . . . . . . . . . 93

4.1. INTRODUCCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

4.2. TIPOS DE DIRECTIVAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

4.3. DEFINICION DE VARIABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944.3.1. Variable <Label01> [=<Valor01>, <Label02>=<Valor02>...] . . . . . . . . 944.3.2. <Label> Set <Valor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Page 9: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

VI

4.4. DEFINICION DE CONSTANTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.4.1. Constant <Label01>=<Valor01> [, <Label02>=<Valor02> ...] . . . . . . . 954.4.2. <Label> Equ <Valor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.4.3. Cblock [<Valor>] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.4.4. Endc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

4.5. ESTRUCTURAS DE DECISION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.5.1. IF <Expresión> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.5.2. Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.5.3. Endif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

4.6. ESTRUCTURAS REPETITIVAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.6.1. While <Expresión> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.6.2. Endw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

4.7. DIRECTIVAS DE CONTROL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.7.1. [<Label>] Org <Valor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.7.2. End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984.7.3. Processor <Código> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984.7.4. Radix <Expresión> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984.7.5. List [<Opciones>, ...] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.7.6. NoList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.7.7. Include <<Archivo>> o [“<Archivo>”] . . . . . . . . . . . . . . . . . . . . . . . . . 994.7.8. Cbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.7.9. _ _Config <Valor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.7.10. ErrorLevel <Valor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

4.8. CODIGOS DE LOS MENSAJES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.8.1. Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.8.2. Advertencias (Warnings) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.8.3. Mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.9. DIRECTIVAS DE MACROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.9.1. <Label01> Macro [<Label02>, ...] . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.9.2. Endm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.9.3. Local <Label> [, <Label>, ...] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.9.4. Exitm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044.9.5. Expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044.9.6. NoExpand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

4.10. DIRECTIVAS DE MEMORIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054.10.1. [<Label>] Fill <Expresion01>, <Expresion02> . . . . . . . . . . . . . . . . 1054.10.2. [<Label>] Res <Unidades> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054.10.3. _ _MaxRam <Valor01>, _ _BadRam <Valor02> - <Valor03> . . . . 105

Page 10: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

VII

4.10.4. _ _Idlocs <Valor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064.10.5. [<Label>] De <Expresión01> [, <Expresión02>, ...] . . . . . . . . . . . 106

4.11. DIRECTIVAS DE DATOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074.11.1. [<Label>] Db <'Expresion01'> [, <'Expresion02'>, ...] . . . . . . . . . . . 1074.11.2. [<Label>] Dt <Expresión01> [, <Expresión02>, ...] . . . . . . . . . . . . 1074.11.3. [<Label>] Dw <Expresión01> [, <Expresión02>, ...] . . . . . . . . . . . 1074.11.4. [<Label>] Data <Expresión01> [, <Expresion02>, ...] . . . . . . . . . . 108

4.12. EMULACION DEL ANSI C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084.12.1. #Define <Nombre> [, <Cadena>] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084.12.2. #Undefine <Label> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094.12.2. Ifdef <Nombre> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094.12.4. Ifndef <Nombre> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094.12.5. Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104.12.6. Endif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

4.13. DEFINICION DE MENSAJES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104.13.1. Title “<Texto>” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104.13.2. SubTitle “<Texto>” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.13.3. Messg “<Mensaje>” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.13.4. Error “<Texto>” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.13.5. Space <Valor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.13.6. Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

4.14. SINTAXIS DE LA EXPRESION Y OPERACION . . . . . . . . . . . . . . . . . . . . 1124.14.1. Precedencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124.14.2. Operadores Lógico-Aritméticos y su Precedencia. . . . . . . . . . . . . . . . . 1124.14.3. High/Low . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

4.15. TABLAS Y FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

5. INTRODUCCION AL MPSIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

5.1. CARACTERISTICAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

5.2. TIEMPO I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

5.3. VELOCIDAD DE EJECUCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

5.4. COSTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

5.5. HERRAMIENTA PARA DEPURACION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

Page 11: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

VIII

5.6. INSTALACION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

5.7. TERMINOLOGIA UTILIZADA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.7.1. Puntos de parada (BreakPoints) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.7.2. Desensamblar (Disassembler) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.7.3. Paso (Step) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.7.4. Símbolos (Symbols) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.7.5. Trazo (Trace) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.7.6. Ventana de Registros (View Screen) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205.7.7. Conjunto de Instrucciones (Instructión Set) . . . . . . . . . . . . . . . . . . . . . 1205.7.8. Directivas (Directive) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205.7.9) Comando (Command) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205.7.10. Contactos (Pines) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

5.8. MEDIO AMBIENTE DEL MPSIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215.8.1. Interface de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

5.9. EJECUCION DEL MPSIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

5.10. MODELADO DE LOS PINES I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215.10.1. Señales en los pines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

5.11. MODELO DE CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235.11.1. Condiciones para el reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235.11.2. Reposo (Sleep) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245.11.3. WDT (Watch Dog Timer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245.11.4. Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

5.12. PILA DEL HARDWARE (HARDWARE STACKS) . . . . . . . . . . . . . . . . . . 1255.12.1. Empujar (Push) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255.12.2. Extracción (Pop) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

5.13. ARCHIVOS USADOS Y GENERADOS POR EL MPSIM . . . . . . . . . . . . . 1255.13.1. Archivos de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255.13.2. Archivo de inicialización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265.13.3. Archivo de jornada (Journal file) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265.13.4. Archivo de estímulo (*.STI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265.13.5. Ejemplo de un archivo de estímulos . . . . . . . . . . . . . . . . . . . . . . . . . . 128

5.14. TABLAS Y FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Page 12: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

IX

6. TUTORIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

6.1. INTRODUCCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

6.2. ENSAMBLANDO EL CODIGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

6.3. INVOCANDO EL SIMULADOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1316.3.1. Mpsim.Ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

6.4. CARGANDO EL ARCHIVO DE INICIALIZACION . . . . . . . . . . . . . . . . . . 1316.4.1. Creación del archivo de inicialización . . . . . . . . . . . . . . . . . . . . . . . . . . 132

6.5. CARGANDO EL ARCHIVO HEXADECIMAL . . . . . . . . . . . . . . . . . . . . . . 133

6.6. CARGANDO EL ARCHIVO DE ESTIMULO . . . . . . . . . . . . . . . . . . . . . . . . 134

6.7. DEFINIENDO LOS PARAMETROS DE TRAZADO . . . . . . . . . . . . . . . . . . 134

6.8. DEFINICION DE PUNTOS DE PARADA (Breakpoints) . . . . . . . . . . . . . . . 136

6.9. EJECUCION DEL CODIGO HEXADECIMAL . . . . . . . . . . . . . . . . . . . . . . 136

6.10. MODIFICACION DEL CODIGO HEXADECIMAL . . . . . . . . . . . . . . . . . . 137

6.11. TERMINACION DE UNA SESION CON EL MPSIM . . . . . . . . . . . . . . . . 138

6.12. TABLAS Y FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

7. GRUPO DE COMANDOS DEL MPSIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

7.1. CONVENCIONES UTILIZADAS POR EL MPSIM . . . . . . . . . . . . . . . . . . . 1417.1.1. Corchetes, [ ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417.1.2. Llaves, { } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417.1.3. Barra vertical, | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

7.2. COMANDOS GENERALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417.2.1. AB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417.2.2. H [ Help | ? ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417.2.3. Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

7.3. COMANDOS PARA EL PROGRAMA ACTIVO . . . . . . . . . . . . . . . . . . . . . 1427.3.1. DE Direccion01, Direccion02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427.3.2. DI [ Direccion01 [, Direccion02 ] ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

Page 13: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

X

7.3.3. DM [ Direccion01, Direccion02 ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427.3.4. FM Direccion01, Direccion02, Patrón . . . . . . . . . . . . . . . . . . . . . . . . . . 1427.3.5. IA Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427.3.6. IN Dirección, Instrucción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1437.3.7. LO Nombre_Archivo [ Formato ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1437.3.8. M Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1437.3.9. O Nombre_Archivo [ Formato ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1437.3.10. SF Direccion01, Direccion02, Registro . . . . . . . . . . . . . . . . . . . . . . . . 1437.3.11. SI Direccion01, Direccion02, Instrucción . . . . . . . . . . . . . . . . . . . . . . 1447.3.12. SM Direccion01, Direccion02, Instrucción . . . . . . . . . . . . . . . . . . . . . 1447.3.13. ZM Direccion01, Direccion02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

7.4. PUNTOS DE PARADA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1447.4.1. B Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1447.4.2. B Registro_Archivo { = | > | < | >= | <= | != Valor} . . . . . . . . . . . . . . . 1447.4.3. BC [ Dirección | Registro_Archivo ] . . . . . . . . . . . . . . . . . . . . . . . . . . . 1447.4.4. DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

7.5. EJECUCION DE INSTRUCCIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.5.1. C [ n ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.5.2. E [ Dirección ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.5.3. GO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.5.4. RS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.5.5. SS [ Dirección ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

7.6. TRAZADO O RASTRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467.6.1. DX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467.6.2. TA [ Direccion01, Direccion02 ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467.6.3. TC [ n ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467.6.4. TF [ Nombre_Archivo | PRN ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467.6.5. TR Registro [,Valor_Mínimo, Valor_Maximo] . . . . . . . . . . . . . . . . . . . 146

7.7. REGISTROS DE ARCHIVOS Y MEMORIA DE DATOS . . . . . . . . . . . . . . 1477.7.1. DR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477.7.2. EE Dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477.7.3. F registro_Archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477.7.4. IR { ALL | RAM SFR } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477.7.5. LR [ Nombre_Archivo ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477.7.6. SE [ I/O_Pin | Puerto ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477.7.7. UR { ALL | RAM | SFR } [ Nombre_Archivo ] . . . . . . . . . . . . . . . . . . 1477.7.8. W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1487.7.9) ZR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

Page 14: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XI

7.8. ESTIMULOS Y TIEMPO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1487.8.1. CK [ Pin, { #Alto, #Bajo | - } ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1487.8.2. DK [ AltFxKey#, [ Pin, Evento ] | [ - ] ] . . . . . . . . . . . . . . . . . . . . . . . . 1487.8.3. DW [ E | D ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1487.8.4. FI {Nombre_Archivo, Dirección, Registro_Archivo [,n] | -} . . . . . . . . . 1497.8.5. IP [ Tiempo | Paso ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.8.6. RE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.8.7. SC [ Longitud_Ciclo ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.8.8. ST Nombre_Archivo.Sti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.8.9) Verbose [ On | Off ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.8.10. WP { 1 | 2 | 3 | ... | 128 } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.8.11. ZT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

7.9. CONTROL DE UNIONES DEL PROGRAMA EN MEMORIA . . . . . . . . . . 1507.9.1. DP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.9.2. RA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.9.3. RP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.9.4. ZP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

7.10. VENTANA DE REGISTROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517.10.1. LS Nombre_Archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517.10.2. AD Registro_Archivo [ , Radix [ , #Dígitos ] ] . . . . . . . . . . . . . . . . . . 1517.10.3. DV Registro_Archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517.10.4. NV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517.10.5. TY Registro_Archivo, Radix, #Dígitos . . . . . . . . . . . . . . . . . . . . . . . . 1517.10.6. V Registro_Archivo [ , Radix [ , #Dígitos ] ] . . . . . . . . . . . . . . . . . . . . 151

7.11. DEFINICION DEL SISTEMA Y CONTROL . . . . . . . . . . . . . . . . . . . . . . . . 1527.11.1. EL { 0 | 1 | 2 } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527.11.2. FW { MC | EM | MP | RC256 | RC64 | RC | OSC } . . . . . . . . . . . . . . 1527.11.3. GE Nombre_Archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527.11.4. LJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527.11.5. P XX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527.11.6. SR { O | X | D } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

8. DIRECTIVAS vs INSTRUCCIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

8.1. INSTRUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

8.2. DIRECTIVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

8.3. CARACTERÍSTICAS DE PROGRAMACIÓN . . . . . . . . . . . . . . . . . . . . . . . 1558.3.1. SÍMBOLOS PARA COMENTARIOS . . . . . . . . . . . . . . . . . . . . . . . . . 156

Page 15: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XII

8.3.2. INDICATIVOS DE RADIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568.3.3. BLOQUES DE CÓDIGO, DIRECTIVA WHILE . . . . . . . . . . . . . . . . . 1568.3.4. INSTRUCCIONES, FINALIZACIÓN DEL PROGRAMA . . . . . . . . . 1578.3.5. FLUJO DE INFORMACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8.4. PROGRAMAS DEMOSTRATIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8.4.1. Directiva WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1588.4.1.1. Programa P01.ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1598.4.1.2. Archivo P01.INI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1608.4.1.3. Archivo P01.LST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

8.4.2. Directiva MACRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1638.4.2.1. Programa P02.ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1648.4.2.2. Archivo P02.INI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1658.4.2.3. Archivo P02.LST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

8.4.3. Directivas IF, ELSE, ENDIF, fuera de un bloque de código . . . . . . . . . 1708.4.3.1. Programa P03.ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1708.4.3.2. Archivo P03.INI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1718.4.3.3. Archivo P03.LST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

8.4.4. Anidamiento de la directiva While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1738.4.4.1. Programa P04.ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1738.4.4.2. Archivo P04.INI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1748.4.4.3. Archivo P04.LST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

8.4.5. Programa por instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1778.4.5.1. Programa P05.ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1778.4.5.2. Archivo P05.INI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1798.4.5.3. Archivo P05.LST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

8.4.6. Programa de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1818.4.6.1. Programa P06.ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1828.4.6.2. Archivo P06.INI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1848.4.6.3. Archivo P06.STI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1858.4.6.4. Archivo P06.LST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

8.5. CIRCUITO A MONTAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1898.5.1. Otras aplicaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Page 16: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XIII

9. MPLAB, ALGUNOS CONCEPTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

9.1. QUE ES MPLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

9.2. REQUERIMIENTOS DE HARDWARE Y SOFTWARE . . . . . . . . . . . . . . . 191

9.3. INSTALACION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

9.4. DESCRIPCION GENERAL DE LOS MENUS . . . . . . . . . . . . . . . . . . . . . . . . 1929.4.1. File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1929.4.2. Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1939.4.3. Edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1939.4.4. Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1939.4.5. PICSTART Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1939.4.6. Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1939.4.7. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1939.4.8. Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1949.4.9. Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1949.4.10. Iconos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

9.5. TUTORIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1959.5.1. Creación del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1959.5.2. Creación del archivo fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1959.5.4. Configuración del procesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1979.5.5. Activación del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1979.5.6. Apertura de ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1989.5.7. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

10. REFERENCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

10.1. MANUALES DE INTEL CORPORATION . . . . . . . . . . . . . . . . . . . . . . . . . 203

10.2. MANUALES DE MICROCHIP INCORPORATED . . . . . . . . . . . . . . . . . . 203

10.3. DIRECCIONES DE INTERNET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

Page 17: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XIV

Page 18: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XV

INDICE DE FIGURAS

Figura 1.2-01. Organizacion general de un microprocesador . . . . . . . . . . . . . . . . . . . . . 15

Figura 1.3-01. Anidamiento de interrupciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Figura 2.3-01. Diagrama de bloques de la serie PIC16C5X . . . . . . . . . . . . . . . . . . . . . . 55Figura 2.3-02. Ciclo de instrucción y reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Figura 2.3-03. Encauzamiento del flujo de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . 58

Figura 2.4-01. Mapa de memoria y pila del PIC16C52 . . . . . . . . . . . . . . . . . . . . . . . . . 58Figura 2.4-02. Mapa de memoria y pila del PIC16C54s / 55s . . . . . . . . . . . . . . . . . . . . 59Figura 2.4-03. Mapa de memoria y pila del PIC16C56s . . . . . . . . . . . . . . . . . . . . . . . . 59Figura 2.4-04. Mapa de memoria y pila del PIC16C57s / 58s . . . . . . . . . . . . . . . . . . . . 60Figura 2.4-05. Mapa de los registros de archivo básicos para la familia PIC16C5X . . . . 60Figura 2.4-06. Mapa de los registros de archivo para el PIC16C57s . . . . . . . . . . . . . . . 61Figura 2.4-07. Mapa de los registros de archivo para el PIC16C58s . . . . . . . . . . . . . . . 61Figura 2.4-08. Instrucciones de salto para los PIC16C52 / 54s / 55s . . . . . . . . . . . . . . . 64Figura 2.4-09. Instrucciones de salto para los PIC16C56s . . . . . . . . . . . . . . . . . . . . . . 64Figura 2.4-10. Instrucciones de salto para los PIC16C57s / 58s . . . . . . . . . . . . . . . . . . 64Figura 2.4-11. Direccionamiento directo e indirecto . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Figura 2.5-01. Circuito equivalente para un pin sencillo I/O . . . . . . . . . . . . . . . . . . . . . 66

Figura 2.6-01. Diagrama de bloques del TMR0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Figura 2.6-02. Estructura electrica del pin T0CKI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Figura 2.6-03. Diagrama de bloque del prescaler del TMR0 / Watchdog Timer . . . . . . 67

Figura 2.7-01.Configuracion de los osciladores LP, XT, HS . . . . . . . . . . . . . . . . . . . . . 68Figura 2.7-02. Operación con una entrada de reloj externo . . . . . . . . . . . . . . . . . . . . . . 68Figura 2.7-03. Circuito para un cristal o resonador externo en paralelo . . . . . . . . . . . . . 69Figura 2.7-04. Circuito para un cristal o resonador externo en serie . . . . . . . . . . . . . . . 69Figura 2.7-05. Circuito para un oscilador en modo RC. . . . . . . . . . . . . . . . . . . . . . . . . 69Figura 2.7-06. Frecuencia tipica del oscilador RC vs la temperatura . . . . . . . . . . . . . . . 70Figura 2.7-07. Frecuencias tipicas del oscilador RC vs VDD, Ce=20pF . . . . . . . . . . . . 71Figura 2.7-08. Frecuencias tipicas del oscilador RC vs VDD, Ce=100pF . . . . . . . . . . . 72Figura 2.7-09. Frecuencias tipicas del oscilador RC vs VDD, Ce=300pF . . . . . . . . . . . 73Figura 2.7-10. Diagrama de bloques simplificado del circuito de reset interno . . . . . . . . 75Figura 2.7-11. Secuencia de tiempo fuera al energizar, (MCLR)* no unido a V . . . . . 75DD

Figura 2.7-12. Secuencia de tiempo fuera al energizar, (MCLR)* unido a V . . . . . . . 76DD

Page 19: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XVI

Figura 2.7-13. Secuencia de tiempo fuera al energizar, (MCLR)* unido a V . . . . . . . 76DD

Figura 2.7-14. Circuito de Reset externo. Para un tiempo de subida muy lento . . . . . . . 76Figura 2.7-15. Circuito de Reset externo. Primer esquema. . . . . . . . . . . . . . . . . . . . . . . 77Figura 2.7-16. Circuito de Reset externo. Segundo esquema. . . . . . . . . . . . . . . . . . . . 77Figura 2.7-17. Diagrama de bloques del Watchdog Timer . . . . . . . . . . . . . . . . . . . . . . 77

Figura 3.5-01. Ventana de interface MS-DOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Figura 3.6-01. Ventana de interface Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Figura 5.8-01. Ventanas del MPSIM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Figura 6.3-01. Ventana del archivo Mpsim.ini. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Figura 6.4-01. Ventana del archivo Sample.ini. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Page 20: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XVII

INDICE DE TABLAS

Tabla 2.2-01. Distribución de pines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Tabla 2.2-02. Características eléctricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Tabla 2.3-01, Características Generales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Tabla 2.3-02, Descripción de pines para: PIC16C52 / 54s / 56s / 58s . . . . . . . . . . . . . . 56Tabla 2.3-03, Descripción de pines para: PIC16C55s / 57s . . . . . . . . . . . . . . . . . . . . . . 57

Tabla 2.4-01. Banderas del registro de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Tabla 2.4-02. Registro de opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Tabla 2.4-03. Eventos que afectan los bits (TO)* y (PD)* del registro de estado . . . . . 65Tabla 2.4-04. Estado de los bits (TO)* y (PD)* después de un reset . . . . . . . . . . . . . . . 65

Tabla 2.7-01. Palabra de configuracion para los PIC16C5X. . . . . . . . . . . . . . . . . . . . . . 67Tabla 2.7-02, Seleccion del capacitor para resonadores ceramicos . . . . . . . . . . . . . . . . 68Tabla 2.7-03, Seleccion del capacitor para cristal oscilador . . . . . . . . . . . . . . . . . . . . . . 69Tabla 2.7-04. Frecuencias tipicas de osciladores RC . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Tabla 2.7-05. Estado de los bits (TO)* y (PD)* despues de un reset . . . . . . . . . . . . . . . 74Tabla 2.7-06. Condiciones de Reset para todos los registros. . . . . . . . . . . . . . . . . . . . . 74Tabla 2.7-07. Condiciones de Reset para registros especiales . . . . . . . . . . . . . . . . . . . . 75

Tabla 2.8-01. Sumario del set de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Tabla 3.1-01. Archivos utilizados por el MPASM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Tabla 3.4-01. Opciones de la linea de comandos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Tabla 4.7-01. Opciones de la directiva List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Tabla 4.7-02. Definicion de niveles de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Tabla 4.14-01. Operadores logico aritmeticos, precedencia. . . . . . . . . . . . . . . . . . . . . 114

Page 21: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XVIII

Page 22: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XIX

PROLOGO

La visión del Decanato de Investigación es consolidarlo como una dependencia eficiente y eficaz,rector y propiciador de la Investigación de la Universidad Nacional Experimental del Táchira,integrada a las funciones de docencia, extensión y producción, atenta de la problemática que vive laregión su área de competencia y más allá de ella, tratando de buscar soluciones y dejando lascolumnas establecidas para la investigación del próximo milenio. Atendiendo esta premisa, se entrega el presente trabajo producto del esfuerzo del Br Tito González,Tecnico Superior Universitario en Electrónica Industrial egresado del Instituto Universitario deTecnología Agroindustrial, Región Los Andes y actualmente estudiante avanzado de la carrera deIngeniería Electrónica de la UNET e integrante del grupo de Investigadores del Laboratorio deMantenimiento e Investigación Electrónica (LAMIE), adscrito a la Coordinación de InvestigaciónIndustrial del Decanato de Investigación UNET.

Este texto esta dirigido a todo tipo de lectores, no obstante, será particularmente útil a losestudiantes universitarios de Tecnología e Ingeniería Electrónica y constituye un material deobligatoria consulta en algunas asignaturas del área ya que les permitirá familiarizarse con losconceptos básicos sobre la arquitectura de los Microprocesadores y el desarrollo de aplicaciones enel ámbito de software que fundamentan todo proceso de simulación. De igual manera se planteandescripciones técnicas de la Familia base de los Microcontroladores PIC (Programmable InterfaceController) y concluye el paisaje técnico con un tutorial sencillo para profesores, estudiantes yprofesionales vinculados con el tema.

Con este trabajo se intenta llenar un vacío existente en cuanto a publicaciones técnico científicas, porlo que celebro que el autor se arriesgue en interpretaciones que me permiten calificar como una obrade calidad científica. Es sobre todo la fuerza del ejemplo.

RAUL CASANOVA OSTOSDecano de Investigación UNET

Page 23: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XX

Page 24: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XXI

INTRODUCCION

El planteamiento inicial de este documento estuvo dirigido principalmente a estudiantes de IngenieríaElectrónica que hubiesen cursado o estuviesen cursando la materia de Microprocesadores I, con lafinalidad de que lo utilizarán como material complementario en el área de Microcontroladores. Sinembargo, fue necesario e inevitable ampliar su alcance, para que pudiese ser accesible a cualquierpersona interesada en el área de los Microcontroladores.

En el presente documento se establecen los conceptos básicos necesarios y ejemplos de aplicaciónlos cuales permiten al lector desarrollar sus propias aplicaciones a nivel de software, es decir, a nivelde simulación (Primer paso lógico en el desarrollo de cualquier proyecto) y además se tratan losaspectos técnicos más importantes en lo referente a la descripción técnica del PIC16C5X, la cual esla “Familia Base” de microcontroladores según lo estipulado por la Microchip, familia base en elconcepto de que todas las instrucciones desarrolladas para élla son utilizadas también por las seriesde familias subsecuentes, adicionándose características propias de cada familia. También se cubriránaspectos sobre el desarrollo de software y aplicaciones específicas.

Invito al lector a revisar la referencia que se presenta al final de este documento, en lo concernientea INTERNET ya que allí se encontrarán direcciones de páginas WEB de la Microchip Inc. Así comode páginas creadas por usuarios independientes que han desarrollado aplicaciones para los PIC.

Es necesario aclarar, que en el presente trabajo hay algunos puntos que son tratados de manera más"Literaria" con el objeto de establecer una comprensión mínima, sin embargo, hay otros puntos enlos que es muy difícil o nada conveniente dar este tratamiento y mantener el aspecto técnico delmismo, ya que se encuentra íntimamente relacionada con las computadoras personales o PC. Parala utilización de este documento, es necesario que el lector esté ubicado en el microcontrolador o elchip que se encarga de ejecutar y controlar todas las operaciones necesarias en la ejecución decualquier programa de aplicación. Por tal motivo, en este material no se encontrarán referencias adiscos duros, teclados, monitores, disquetes, impresoras y demás componentes, ya que para elmicroprocesador o microcontrolador solo existe el código binario y el manejo de puertos con susrutinas correspondientes.

No se pretende hablar aquí sobre las distintas arquitecturas de los Microprocesadores, de sus técnicasde construcción o de establecer comparaciones entre los diferentes tipos y marcas demicrocontroladores existentes en el mercado. Por lo tanto, solo se habla aquí del manejo de los“Microcontroladores de la casa Microchip en sus Diferentes Familias”, ya que estos fabricantesestablecen en un solo chip toda la circuitería necesaria para la operación del mismo a manera deunidad independiente. Por ésta razón, se puede decir que cada PIC es en realidad unamicrocomputadora para aplicación específica, ya sea doméstica, industrial o educativa.

Page 25: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XXII

Cualquier comentario o sugerencia sobre los tópicos y estructura del presente manual, por favorhacerlas a las siguientes direcciones electrónicas:

[email protected]

[email protected]

[email protected]

Independientemente de su índole serán muy bien recibidas.

NOTA:El documento original fue procesado con Word Perfect Version 5.1Mejoras y Tablas procesadas con WordPerfect Version 6.1 (Novell Perfect Office)Mejoras y Graficas procesadas con WordPerfect Version 7.0 (Corel Office)

Page 26: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XXIII

AGRADECIMIENTO

Quiero dar mi más sincero reconocimiento a un grupo de personas sin las cuales no habría sidoposible la culminación del presente material, todas éllas en mayor o menor grado aportaron sus ideasy permitieron llevar a felíz término este material, son éllas:

El Ing. Electricista César Contreras, en su rol de Coordinador de los Laboratorios de InvestigaciónElectrónica (LIE) y el Laboratorio de Mantenimiento e Instrumentación Electrónica (LAMIE) alhaberme facilitado todo el material necesario para el desarrollo de los programas de aplicación.

A los Profesores: Carolina Casanova, Ruth di Sipio, Aquiles Laya, quienes me orientaron sobre elobjetivo didáctico del mismo.

Quiero hacer especial reconocimiento al Ing. Electrónico Jhon Amaya por haber aceptado la tediosatarea de realizar la primera revisión del borrador original, acertando en sus aportes yrecomendaciones. Especialmente el hecho de haberme enseñado que el aspecto literario y la técnica,nunca han estado reñidos, muy por el contrario, es la mejor manera de expresar los conceptostécnicos.

A los profesores: Rosaura Gómez, Jaime Salcedo y al Doctor en Redes Neurales Carlos Ramírez pororientarme en las metodologías más apropiadas para la redacción y presentación del presentedocumento, así como, la organización y desarrollo del curso sobre microcontroladores.

Quiero también dar gracias a mis compañeros de Laboratorio (LIE, LAMIE) por revisar el materialy aportar sus ideas con respecto a lo que deseaban encontrar como estudiantes de la carrera de Ing.Electrónica en la Universidad Nacional Experimental del Táchira, son ellos:

Juan Duque, Eliecer Varela, Alfredo Chamberlain y muy particularmente a Johel Rodríguez, por suiniciativa y creatividad en el diseño de la portada del presente documento.

Y muchos otros más de quienes no recuerdo su nombre, pero de igual manera realizaron un valiosoaporte.

Tito L. González F.

Page 27: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

XXIV

Page 28: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Aquellas personas que se encuentren familiarizadas con los Microcontroladores, estan en1

la libertad de ignorar ésta parte del material.

1

1. ANTECEDENTES

1.1. ALGUNOS CONCEPTOS BASICOS

A continuación se introducen algunos conceptos básicos de computación con el objeto de establecerun punto de partida en cuanto a sus definiciones. Estos conceptos serán de utilidad en páginasposteriores .1

1.1.1. ¿Qué es ROM?

Es el acrónimo de un tipo particular de memoria que es solamente para lectura (ROM, Read OnlyMemory). Como su nombre lo indica, el microprocesador sólo puede leer las instrucciones y la datadesde la ROM, el no puede alterar el contenido de su ROM. En contraste, el microprocesador puederealizar ambas operaciones (Leer/Escribir) sobre la RAM (Ramdon Access Memory). En la ROMse almacenan las instrucciones que no cambiarán a lo largo de la ejecución del programa principaly se mantienen intactas ya sea que se energice o no el sistema. Por esta razón, la ROM es típicamenteusada para almacenar el programa en aplicaciones de un sólo propósito. Con la ROM se puede estarseguro que el programa estará listo para su ejecución cada vez que se enciende el sistema. Con laRAM los programas tienen que ser cargados o ubicados en la memoria cada vez que se inicie porprimera vez el sistema. El almacenamiento de programas en la RAM permite que diferentesprogramas sean cargados en la misma memoria para servir a diferentes necesidades.

Existen diversos tipos especiales de memoria ROM. La PROM (Programmable Read OnlyMemory) que es una variación de la ROM en la cual el usuario puede programarla al menos UNAVEZ. La EPROM (Eraseable Programmable Read Only Memory) es otra variación de la ROM,la cual puede ser borrada a través de luz ultravioleta y programada por el usuario tantas veces comolo desee. La EEPROM (Electrically Eraseable Programmable Read Only Memory) es un tipode memoria ROM, la cual puede ser borrada por un nivel de tensión eléctrica específico comosustituto de la luz ultravioleta.

Como frecuentemente sucede durante el desarrollo de un programa, los dos últimos tipos de memoriaROM son muy utilizados debido a su característica de poder ser borradas y reprogramadas a travésde un programador especial de PROM. Cuando se termina de desarrollar el programa y se pasa a lafase comercial, donde el volumen de producción suele ser alto, este tipo especial de memoria sereemplaza por las ROM, las cuales son más económicas.

Page 29: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

También puede residir parcial o totalmente en la RAM2

La pila es un segmento de la memoria RAM donde se anotan las direcciones para el retorno3

de las Subrutinas.

2

1.1.2. ¿Qué es la RAM ?

El programa principal de un sistema está contenido parcial o totalmente en la ROM y los valores2

intermedios de las operaciones efectuadas, así como también, los resultados finales de los procesosse almacenan en la RAM (Random Access Memory), es decir, un tipo de memoria en la que sepuede escribir o leer, por ejemplo:

* Si su programa utiliza una PILA para el manejo de Subrutinas, necesita de la RAM.3

* Si el programa modifica alguna de sus instrucciones, estas instrucciones tienen que residir enla RAM.

La utilización de ROM y RAM en cualquier aplicación es muy importante para el desarrollo delsistema. El Programador debe conocer perfectamente las direcciones físicas de la RAM para ubicarallí los valores de las variables del sistema.

1.1.3. ¿Qué es un Registro de Trabajo ?

Es un pequeño segmento de memoria RAM dentro de la pastilla de Silicio que conforma elmicroprocesador. Puede tener una longitud de 4 bits (Un Nibble), 8 bits (Un byte) o de 16 bits(Una Palabra (Word)), en cualquiera de éllos se guardan los datos que se van a manejar de manerainmediata o los resultados de dichas operaciones. La cantidad de estos registros disponibles para elprogramador es una característica propia de cada microprocesador; algunos registros de trabajo nose encuentran disponibles para el programador ya que son de uso exclusivo del microprocesador, portal motivo se les llama Registros de Trabajo Interno.

Determinadas operaciones son destructivas, por ejemplo, una comparación entre dos valores es unaoperación de sustracción binaria entre ambos, en la cual un resultado de “0” es una indicación de quelos operandos son iguales, como es inaceptable que se destruya uno de los mismos, elmicroprocesador incluye varios registros de trabajo que son reservados para su uso exclusivo, estosregistros son utilizados para transferencia interna de datos y para preservar los operandos en caso deacciones destructivas.

1.1.4. ¿Qué son las Banderas (Flags) de Condición ?

Determinadas operaciones binarias pueden alterar o modificar el valor de uno o más de los bits que

Page 30: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

El registro de estado es un registro de trabajo que tiene la particularidad de que sólo puede4

ser leído por el programador.

3

conforman el registro de estado . Cada uno de estos bits es lo que se entiende por banderas, las4

mismas indican la existencia o no de condiciones particulares como resultado de la operaciónefectuada.

El programa puede monitorear la condición o estado de una o más banderas para efectuar un saltocondicionado, la llamada a una Subrutina o el retorno de la misma. Esto permite alterar el flujo dela ejecución en un programa. Es muy importante que el programador conozca cuáles banderas sonafectadas por determinadas operaciones, ya que en ciertos casos, se puede realizar un salto específicoo ejecutar una Subrutina, utilizando para éllo una determinada bandera, pero hay un número deinstrucciones previas que pueden afectar dicha bandera, en estos casos se debe estar seguro de lasecuencia de instrucciones ejecutadas o de cuál fué la última instrucción llevada a cabo para verificarsus efectos sobre dicha bandera.

1.2. UN SISTEMA TIPICO DE MICROCONTROLADOR

En su aspecto más básico consiste de:

* Unidad Central de Proceso (Central Proccess Unit (CPU))

* Memoria (RAM, ROM)

* Puertos de Entrada/Salida (I/O Ports)

La memoria sirve como un lugar para almacenar las Instrucciones (Instructions), las cuales soncódigos en binario de información que dirigen la actividad del CPU y Datos (Data) de informaciónque son procesadas por el CPU. Un grupo de instrucciones y datos lógicamente relacionados yalmacenados en la memoria se le llama Programa (Program). El CPU "lee" cada instrucción de lamemoria en una secuencia lógica y determinada, la cual utiliza para iniciar sus acciones deprocesamiento. Si la secuencia de programa es coherente y lógica, el procesamiento del mismoproducirá resultados entendibles y útiles.

La memoria se utiliza también para almacenar los datos que van a ser manipulados, así como tambiénlas instrucciones que realizan directamente la manipulación de los datos. El programa tiene que serorganizado de tal manera que el CPU no lea un dato cuando se espera la lectura de una Instrucción.El CPU puede accesar rápidamente cualquier dato almacenado en memoria; pero frecuentemente lamemoria no es lo suficientemente grande para almacenar completamente el banco de datos que serequiere para una aplicación en particular. Este problema se ha resuelto agregando almicroprocesador uno o más Puertos de Entrada (Input Ports). El CPU puede direccionar estospuertos y leer o dar entrada a la data contenida en éllos o que se pueda accesar a través de éllos.

Page 31: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Direccionables, que se puede operar sobre ellos de manera independiente dentro de su5

grupo.

4

La adición de puertos de entrada habilita al microprocesador para recibir información de los equiposexternos, tales como discos duros, disquetes, cintas magnéticas, unidades ópticas (periféricos quecorresponden al mundo exterior) a una tasa muy alta de velocidad y en grandes volúmenes.

Un microprocesador también requiere de uno o más Puertos de Salida (Output Ports) que permitanal CPU comunicar los resultados de su procesamiento al “Mundo Exterior”. Esta salida podría ir aun monitor para ser usado por un operador humano, podría ir a un dispositivo periférico queproduzca una Copia Dura (Hard Copy) como una impresora de líneas, a un dispositivo dealmacenamiento periférico como una unidad de Disquete (Floppy Disk) o podría constituir lasseñales de control que dirigen las operaciones de un proceso cualquiera en otro sistema, tal como unalínea de ensamblaje automatizada. Como los Puertos de entrada/salida (I/O Ports) sondireccionables , todos estos puertos en conjunto permiten al microprocesador la comunicación con5

el mundo exterior.

El CPU unifica el sistema y controla las funciones realizadas por otros componentes. El CPU tambiénes capaz de buscar instrucciones desde la memoria, decodificar su contenido binario y ejecutarlo,además, es capaz de dirigirse a la memoria y los puertos I/O como una necesidad en la ejecución decualquier instrucción. En adición, el CPU debería ser capaz de reconocer y responder a determinadasseñales de control externas, tales como requisiciones de Interrupción o Espera.

En la figura 1.2-01 (Pag. 15) se ilustra la organización general de un microprocesador. Las unidadesfuncionales estan dentro de una misma pastilla de Silicon fabricada con tecnología VLSI (Very LargeScale Integration). A continuación se describen dichas unidades.

1.3. LA ARQUITECTURA DE UN MICROPROCESADOR(CPU)

Un microprocesador (CPU, Central Process Unit) típico consiste de las siguientes unidadesfuncionales interconectadas :

* Acumulador

* Registros

* Unidad Aritmético Lógica (Aritmetic Logic Unit (ALU))

* Circuitería de Control

Los registros son unidades de almacenamiento temporal dentro del CPU. Algunos registros como el

Page 32: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

5

contador de programa y el registro de instrucciones son de uso dedicado, otros registros como elacumulador son para un propósito más general.

1.3.1. Acumulador

El acumulador almacena uno de los operandos que van a ser manipulados por la ALU (UnidadAritmético Lógica). Una instrucción típica puede instruir o indicarle a la ALU que sume el contenidode algún otro registro al contenido del acumulador y almacene el resultado en el mismo acumulador,o cualquier otro registro de usuario. En general, el acumulador realiza ambas funciones; es una delas fuentes (Operando) y es el registro de destino (Resultados), si así lo desea.

Frecuentemente el CPU incluye un número variable de registros adicionales de propósito general quepueden ser utilizados para almacenar operandos o data intermedia, la disponibilidad de registros depropósito general elimina la necesidad de "Barajar" (Intercalar) resultados intermedios de ida o vueltaentre el acumulador y la memoria, ésto conlleva a un mejoramiento de la velocidad y eficiencia deprocesamiento del sistema.

1.3.2. Contador del Programa

Las instrucciones que forman un programa se almacenan en la memoria del sistema. Elmicroprocesador central hace referencia al contenido de la memoria en un orden secuencial paradeterminar que acción es la apropiada. Con ésto el microprocesador busca conocer que posición dememoria contiene la siguiente instrucción.

Cada una de las posiciones de memoria están numeradas para distinguirlas de todas las otrasposiciones de memoria. El número (Unico) que identifica cada dirección de memoria es llamadaDirección (Address).

El microprocesador tiene incorporado un registro contador secuencial que contiene la dirección dela siguiente instrucción del programa, este registro es el Contador de Programa (ProgramCounter). Cada vez que se trae una instrucción al microprocesador, el contador del programa seincrementa en “1”, por lo que este contador siempre estará “Apuntando” a la siguiente dirección, ypor ende, a la instrucción o dato.

Las instrucciones del programa se almacenan en direcciones numéricamente adyacentes, donde ladirección más baja contiene la primera instrucción que debe ser ejecutada y la dirección más altacontiene la última instrucción. El programador ignora esta regla secuencial cuando utiliza unainstrucción de Salto (Jump) hacia otra dirección no consecutiva en cualquier sección de la memoria.

Una instrucción de salto contiene la dirección de la instrucción que se debe ejecutar a continuación.La siguiente instrucción puede estar almacenada en cualquier posición de la memoria. No importa quetan largo sea el salto programado, éste tiene que especificar la dirección correcta. Durante laejecución de una instrucción de salto, el microprocesador reemplaza el contenido de su registro

Page 33: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Subrutina, pequeño programa que ejecuta una acción muy específica.6

Pila en el concepto de que se acumulan unas sobre otras en direcciones de memoria 7

estrictamente consecutivas y en orden regresivo.

6

contador de programa con la dirección indicada para el salto. Sin embargo, la continuidad lógica delprograma tiene que mantenerse.

Un tipo especial de salto programado ocurre cuando el programa almacenado Llama (Call) a unaSubrutina (Subroutine) . En este tipo de salto, el microprocesador tiene que "Recordar" el6

contenido del contador del programa en el momento de ocurrencia del salto. Esto le permite almicroprocesador regresar a la “trayectoria” del programa principal cuando se finaliza con laejecución de la última instrucción de la Subrutina.

Una Subrutina es un programa que se llama desde otro programa. Usualmente es un grupo deinstrucciones que tienen que ser ejecutadas repetidamente durante el desarrollo del programaprincipal. Rutinas que calculen la raíz, el seno o el logaritmo de una variable del programa principalson buenos ejemplos de funciones matemáticas que frecuentemente son escritas como Subrutinas,otro ejemplo podrían ser los programas diseñados para dar entrada o salida de data desde o hacia undispositivo periférico particular.

El microprocesador tiene una manera especial de manejar la llamada a Subrutinas para asegurar uncorrecto retorno al programa principal. Cuando el microprocesador recibe una instrucción de llamadaa Subrutina, incrementa el contador del programa y almacena este valor en un segmento reservadode memoria llamado la Pila (Stack) , de este modo en la pila se salva el valor de la dirección que7

contiene la instrucción que debe ejecutarse luego de que la Subrutina sea completada. Posteriormente,el microprocesador carga la dirección especificada por la llamada en el contador del programa dondese encuentra la siguiente instrucción que viene a ser el primer paso de la Subrutina.

La última orden en cualquier Subrutina es un Retorno (Return), ésta es una instrucción en la cualno hay necesidad de especificar dirección de regreso. Cuando el microprocesador ejecuta unainstrucción de retorno, él simplemente reemplaza el contenido actual del contador de programa conla dirección en la Punta de la pila (Top Of Stack, TOS), es decir, última dirección en entrar a lapila, ésto hace que el microprocesador reanude la ejecución del programa que llamó a la Subrutinaen el punto siguiente de la última instrucción de llamada original. Véase la figura 1.3-01(Pag. 16).

Las Subrutinas se encuentran frecuentemente Anidadas (Nested), lo que significa que una primeraSubrutina puede llamar a una segunda Subrutina, esta segunda Subrutina puede llamar a una terceraSubrutina, esta tercera Subrutina puede llamar a una cuarta y así sucesivamente. La máximaprofundidad del anidado está determinada por la profundidad de la pila en sí misma, si la pila sólotiene espacio para almacenar tres direcciones de retorno, sólo se pueden acomodar tres niveles deSubrutina; cualquier otra instrucción de retorno posterior a la tercera, producirá un error porDesbordamiento de la pila (Stack Overflow).

Los microprocesadores tienen diferentes vías para el mantenimiento de la pila, algunos tienen

Page 34: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Direccionado se debe tomar como apuntado, indicado o señalado8

7

facilidades para el almacenamiento de las direcciones de retorno dentro del mismo microprocesador.Otros microprocesadores usan un área reservada de la memoria externa como la pila y simplementemantienen un Registro de pila (Stack Pointer) que contiene la dirección del tope de la pila. La pilaexterna virtualmente permite el anidado ilimitado de Subrutinas. Si el microprocesador poseeinstrucciones que causen que el contenido del acumulador y de otros registros de propósito generalsean Empujados (Pushed) a la pila o Extraídos (Popped) de la pila, de la misma manera que ladirección almacenada en el puntero de pila, ésto hace posible el procesamiento de múltiples nivelesde interrupción (Este concepto se detallará en la sección 1.4.7).

El estado del microprocesador (Por ejemplo: el contenido de todos los registros y banderas) puedenser guardados en la pila cuando una Interrupción (Interruption) es aceptada y pueden serrestaurados después de que la interrupción ha sido servida. Esta habilidad para guardar el estado delmicroprocesador en cualquier tiempo dado, hace posible los servicios de rutinas de interrupción siella misma es interrumpida, es decir, la interrupción de la interrupción, una referencia aproximada delo indicado anteriormente se podrá apreciar en la figura 1.3-01 (Pag. 16).

1.3.3. Registro de Instrucciones y Decodificador

Cada microprocesador tiene una Longitud de Palabra (Word Length) que es característica de cadamáquina. La longitud de palabra de un microprocesador está usualmente determinada por el tamañode sus elementos de almacenamiento interno y sus Líneas de Interconexión (Busses), por ejemplo,un microcontrolador cuyos registros y buses pueden almacenar y transferir 8 bits de información,tiene una longitud de palabra característica de 8 bits y se le conoce como un microprocesador paralelode 8 bits. Un microprocesador paralelo de 8 bits es generalmente más eficiente que uno serie con lamisma longitud de palabra.

Para tratar con campos binarios de 8 bits, la memoria asociada con tal microprocesador es, por lotanto, organizada para almacenar 8 bits en cada posición de memoria direccionable. La data y lasinstrucciones están almacenadas en la memoria como números binarios de 8 bits o como números queson múltiplos enteros de 8 bits, 16 bits, 24 bits, y así sucesivamente, ésta característica de un campode 8 bits es frecuentemente referida como un byte.

Cada operación que el microprocesador puede realizar está identificada por un único byte de dataconocido como Código de Instrucción (Instrucction Code) o Código de Operación (OperationCode, OpCode). Cada palabra de 8 bits usada como un código de instrucción puede distinguirse desus congéneres ya que es una combinación binaria única de 8 bits, lo cual nos representa un total de256 (2^8 o 2 ) alternativas de acción posibles, más que adecuado para muchos microprocesadores.8

El microprocesador alcanza una instrucción en dos operaciones distintas. Primero, el microprocesadortransmite la dirección de su registro contador de programa a la memoria. Luego, la memoria retornael byte direccionado al microprocesador. El CPU almacena este byte de instrucción en un registro8

Page 35: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Registros Pares: son registros individuales de 8 bits cada uno, pero que pueden ser9

direccionados como una pareja o dupla por instrucciones específicas.

Ciclo de instrucción: es el número mínimo de periodos de Reloj (Clock) necesarios para10

ejecutar en su totalidad una acción cualquiera.

8

conocido como el Registro de Instrucción (Instrucction Register) y lo usa para dirigir lasactividades durante el resto de la ejecución de la instrucción.

El mecanismo por el cual el microprocesador traslada un código de instrucción dentro de unaoperación de instrucción específica requiere de mayor profundidad de la que se puede proporcionaraquí. El concepto, sin embargo, debería ser intuitivamente claro para cualquier diseñador lógico. Los8 bits almacenados en la instrucción de registro pueden ser decodificados o traducidos del binario yutilizados para selectivamente activar una de un determinado número de líneas de salida; en este casohasta 256 líneas. Cada línea representa un grupo de actividades asociadas con la ejecución de uncódigo de instrucción particular. La línea habilitada puede combinarse con pulsos de tiemposeleccionados para desarrollar señales eléctricas que pueden usarse para iniciar acciones específicas.Esta interpretación de código en acción es realizada por el Decodificador de Instrucción(Instruction Decoder) y está asociado con la Circuitería de Control.

Un código de instrucción de 8 bits es frecuentemente suficiente para especificar una acción deprocesamiento particular. Sin embargo, algunas veces la ejecución de una instrucción requiere de másinformación de la que los 8 bits pueden proporcionar. Un ejemplo de ésto lo representa unainstrucción de lectura de memoria. El código básico de instrucción identifica la acción que va a serrealizada, pero no puede especificar la dirección objeto como tal. En un caso como éste, tienen queusarse dos o tres bytes de instrucción. Los bytes de instrucción sucesivos se almacenan en direccionesde memoria adyacentes y el microprocesador realiza dos o tres búsquedas consecutivas para obtenerla instrucción completa. El primer byte recuperado de la memoria se coloca en el registro deinstrucción del microprocesador y los bytes subsecuentes se colocan en registros temporales; elmicroprocesador continúa con la fase de ejecución.

Tal instrucción es conocida como Longitud Variable (Variable Length).

1.3.4. Registro(s) de Dirección(es)

Un CPU puede utilizar cualquier registro o registros pares , para mantener la dirección de memoria9

que va a ser accesada para data. Si el registro de dirección es Programable (Programmable),(Existen instrucciones que le permiten al programador alterar el contenido de este registro) elprograma puede "Construir" una dirección en el registro de direcciones interna para ejecutar unainstrucción de Referencia a Memoria (Memory Reference), es decir, una instrucción que puedeleer data de la memoria, escribir data en la memoria u operar sobre data almacenada en la memoria,en un sólo ciclo de instrucción .10

Page 36: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

9

1.3.5. Unidad Aritmético Lógica (ALU)

Todos los microprocesadores contienen una unidad aritmético lógica que es comúnmente identificadacomo la ALU (Aritmetic Logic Unit). La ALU, como su nombre lo indica es parte de la porciónTangible (Hardware) del CPU que realiza las operaciones aritméticas y lógicas de la data binaria.

La ALU debe contener un Sumador (Adder) que sea capaz de combinar el contenido de dosregistros en concordancia con la lógica aritmética binaria. Esta disposición le permite almicroprocesador la realización de la manipulación aritmética sobre la data obtenida desde la memoriay desde otras entradas.

Usando solamente el sumador básico un programador puede ser capaz de escribir rutinas para restar,multiplicar y dividir, proporcionando a la máquina completa capacidad aritmética. En la práctica, sinembargo, muchas ALU’s proveen otras funciones internas como sustracción por hardware,operaciones lógicas Booleanas y capacidades para cambiar la data.

La ALU contiene los Bits de Banderas (Flags Bits), éstos nos indican la ocurrencia o no dedeterminadas condiciones que se producen durante el curso de las manipulaciones aritméticas ológicas. Las banderas típicamente incluyen : Acarreo o Llevo, Cero, Signo, Paridad, Préstamo(Carry, Zero, Sign, Parity, Borrow), es posible que un programa ejecute un salto ante determinadascondiciones las cuales se le indican en el valor de las banderas, por ejemplo, el programa puede estardiseñado para saltar a una Subrutina en particular si el bit de Carry es puesto a “1” como resultadode la ejecución de una instrucción de suma.

1.3.6. Circuitería de Control

La circuitería de control es la unidad funcional primaría dentro del CPU. Utilizando pulsos de relojla circuitería de control mantiene la secuencia propia de eventos requeridos para cualquier trabajo deprocesamiento. Después de que una instrucción es alcanzada y decodificada la circuitería de controlda salida a las señales apropiadas (a unidades internas y externas del CPU) para iniciar las accionesde procesamiento correspondientes. Frecuentemente, la Circuitería de Control puede ser capaz deresponder a señales externas como una Petición de Interrupción (Interrupt Petition) o unaPetición de Espera (Wait Petition). Una Petición de Interrupción puede causar que la Circuiteríade Control temporalmente suspenda la ejecución del programa principal, salte hacia una Subrutinaen particular para dar servicio al dispositivo que efectúa la llamada a interrupción y luegoautomáticamente retorna al programa principal. Una Petición de Espera frecuentemente se hace porlos circuitos manejadores de memoria o por un controlador de puertos I/O que operan máslentamente que el CPU. La circuitería de control puede quedar en "Mínimo" hasta que los circuitosmanejadores de memoria o de los puertos I/O estén listos para recibir o transferir la data al CPU.

Page 37: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

10

1.4. OPERACIONES DE MICROCONTROLADOR

Aquí se definen determinadas acciones que son fundamentales para cualquier microprocesador. Unconocimiento básico de estas operaciones es un requisito necesario para examinar las actividadesespecíficas de cualquier microprocesador en particular.

1.4.1. Tiempo

Las actividades del microprocesador central son cíclicas, el microprocesador carga una instrucción,ejecuta la operación requerida, carga la siguiente instrucción y ejecuta el ciclo nuevamente. Estasecuencia de eventos es ordenada y requiere de un control preciso del tiempo. Para éllo, el CPUnecesita de un oscilador de reloj independiente que proporcione la referencia para todas las accionesdel microprocesador. La combinación de búsqueda, carga y ejecución de una instrucción sencilla esdenominada un Ciclo de Instrucción (Instruction Cycle). La porción de un ciclo identificado conuna actividad claramente definida se llama Estado (State) y el intervalo de tiempo entre pulsos deloscilador se conoce como Periodo del Reloj (Clock Period). Como regla general se requieren unoo más periodos de reloj para completar un estado y varios estados conforman un ciclo.

1.4.2. Búsqueda de instrucciones

El primer estado de cualquier ciclo de instrucción puede ser dedicado a la búsqueda de la siguienteinstrucción. El CPU genera una señal de lectura y el contenido del registro contador de programa seenvía a la memoria, la cual responde retornando la siguiente instrucción. El primer byte de lainstrucción se coloca en el registro de instrucción, si la instrucción consiste de más de un byte, serequieren estados adicionales para obtener cada byte de la instrucción; cuando la instrucción estácompleta en el CPU, el contador del programa se incrementa (en preparación para la siguienteinstrucción a ser buscada) y la instrucción es decodificada. La operación especificada en la instrucciónse puede ejecutar en los estados subsiguientes del ciclo de instrucción. La instrucción puede haceruna llamada para lectura o escritura en la memoria, en los puertos de entrada/salida o una operacióninterna del CPU, tal como una transferencia de registro a registro o una operación de suma deregistros.

1.4.3. Lectura de memoria.

Una Instrucción de Búsqueda (Instruction Fetch) es simplemente una operación especial delectura de la memoria. Por ejemplo, el CPU libera en el bus de control una señal de lectura y envíala dirección de memoria correspondiente en el bus de direcciones. La memoria responde retornandoel dato existente en la dirección especificada en el bus de datos. El dato recibido se coloca en elacumulador o en uno de los otros registros de propósito general (No en el registro de instrucción).

Page 38: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Direccionado en el concepto de apuntado, indicado o señalado11

11

1.4.4. Escritura de la memoria

La operación de escritura en la memoria es similar a la operación de lectura excepto por la direccióndel flujo de datos. El CPU libera una señal de escritura en el bus de control, envía la dirección dememoria correspondiente en el bus de direcciones, luego envía la data que va a ser escrita en lapocisión de memoria indicada en el bus de direcciones.

1.4.5. Espera (Sincronización de memoria)

Como previamente se ha establecido, las actividades del microprocesador se ejecutan al ritmoestablecido por el oscilador del Reloj Maestro (Master Clock), el periodo del reloj determina eltiempo de toda la actividad de procesamiento. Sin embargo, la velocidad del ciclo de procesamientose encuentra limitada por el Tiempo de Acceso (Access Time) a la memoria. Una vez que elmicroprocesador ha iniciado la secuencia de lectura, no continúa su ejecución hasta que la memoriaha tenido tiempo de responder. Diversas tecnologías de memoria son capaces de responder muchoantes de lo que el ciclo de procesamiento requiere, pero no es posible suministrar el byte (Dato)direccionado dentro del tiempo mínimo establecido por el reloj del microprocesador. En11

consecuencia, el microprocesador debe proveer la sincronización necesaria que permita a la memoriaresponder a un Estado de Espera (Wait State). Cuando la memoria recibe una señal habilitadorade escritura o lectura , ésta envía una señal de espera al microprocesador, causando que el CPUquede Suspendido (Stand By) temporalmente, es decir, mientras la memoria encuentra el datobuscado, después de que la memoria ha tenido tiempo de responder, elimina la señal de espera haciael microprocesador y el ciclo de instrucción prosigue.

1.4.6. Entrada/Salida

Las operaciones de entrada/salida son similares a las operaciones de lectura/escritura de la memoria,con la excepción de que un dispositivo periférico de entrada/salida se direcciona en lugar de unapocisión de memoria. El CPU genera las señales de control para entrada/salida apropiadas, envía ladirección del dispositivo correspondiente y recibe la data que tiene que ser leída del puerto de entradao envía la data que tiene que ser escrita en el puerto de salida.

La data puede ser leída o escrita en cualquiera de las dos siguientes formas, Serial o Paralelo. Todala data dentro de un microcontrolador digital está representada en forma de código binario. Unapalabra de data binaria consiste en un grupo de bits, cada uno de estos bits puede ser un “1” ó “0”.La transmisión de Entrada/Salida en Paralelo (Parallel I/O) consiste en transferir todos los bitsde una palabra al mismo tiempo, es decir, un bit por línea como en el caso de los buses de control,data y direcciones. La transmisión de Entrada/Salida en Serie (Serial I/O) consiste en latransferencia de un solo bit a la vez sobre una sola línea, naturalmente la transmisión serie es muchomás lenta, pero requiere considerablemente mucho menos hardware que la transmisión en paralelo.

Page 39: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

12

1.4.7. Interrupciones

La disposición de Interrupciones (Interrupt) están incluidas en la mayoría de los microprocesadorescomo un medio para mejorar la eficiencia del CPU. Considere el caso de un computador que estáprocesando un gran volumen de Datos (Data), donde porciones de estos datos tienen que enviarsea la impresora. El CPU puede enviar a la impresora un bit de datos dentro de un ciclo sencillo demáquina, pero ésto puede requerir de la impresora el equivalente a muchos ciclos de máquina delmicroprocesador para imprimir el caracter especificado por el byte enviado. El CPU se vería obligadoa detenerse mientras espera hasta que la impresora pueda aceptar el siguiente byte de dato.

Si el computador tiene la capacidad de implementar las interrupciones, la impresora solicitará laatención del CPU utilizando una interrupción, el CPU responderá enviando el byte de dato a laimpresora para luego regresar al procesamiento principal de los datos. Cuando la impresora esté listapara aceptar el siguiente byte de dato, utilizará una nueva interrupción. Cuando el CPU reconoce estainterrupción, suspende momentáneamente la ejecución del programa principal y automáticamente“Salta” a la rutina que enviará el siguiente byte de data. Luego de que el byte es enviado, el CPU“Retorna” para continuar con la ejecución del programa principal. En principio, este procedimientoes similar a la llamada a una Subrutina, excepto que el salto es iniciado por una señal externa en vezdel programa principal.

Estructuras de interrupción más complejas son posibles, en las cuales diversos dispositivos externoscomparten el mismo microprocesador pero tienen diferentes niveles de prioridad. El procesamientode interrupciones es una característica muy importante que habilita la máxima capacidad delmicroprocesador para sistemas que tengan que manejar una pesada carga de multiprocesamiento.

1.4.8. Sostenimiento

Otra característica importante que mejora la capacidad de manejar datos de salida por elmicroprocesador es el Sostenimiento (Hold). La disposición de sostenimiento habilita lasoperaciones de Acceso Directo a Memoria (Direct Memory Access, DMA).

En operaciones ordinarias de entrada/salida, el mismo microprocesador supervisa por completo latransferencia de data. La información que debe colocarse en memoria es transferida desde eldispositivo de entrada hacia el microprocesador y luego desde el microprocesador hacia la posicionde memoria designada. De manera similar, la información que viene desde la memoria hacia losdispositivos de salida pasa a través del microprocesador. Algunos dispositivos periféricos, sinembargo, son capaces de transferir desde y hacia la memoria la data de manera mucho más rápidaque si se hiciese a través del microprocesador. Si una apreciable cantidad de data tiene que sertransferida hacia o desde un dispositivo de salida , la velocidad de transmisión del sistema puedeincrementarse ya que los dispositivos pueden realizar la transferencia directamente. Elmicroprocesador suspende temporalmente su operación durante tal acción, para prevenir conflictosque podrían producirse si el microprocesador y el dispositivo periférico intentan accesar la memoriasimultáneamente, es por ésta razón, que se implementa la opción de sostenimiento en algunosmicroprocesadores.

Page 40: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

También conocidos como Mnemotécnicos.12

13

1.5. EL LENGUAJE ENSAMBLADOR Y LOSMICROCONTROLADORES

1.5.1. Introducción

Todas las líneas de código fuente en lenguaje Ensamblador (Assembler o Assembly) se puedentrasladar directamente en una o más instrucciones de máquina para cada microprocesador enparticular. Por lo tanto, un programador tiene que estar familiarizado con ambos, tanto con ellenguaje Assembler como con el microprocesador para el cual se encuentra programando.

1.5.2. ¿Qué es el Assembler?

El Assembler es una herramienta de Software (Un Programa) diseñado para simplificar el trabajode la escritura de programas de bajo nivel. Si alguna vez ha tenido que escribir un programa demicroprocesador directamente en una forma reconocible por el mismo, como el código binario o elcódigo hexadecimal, se podrán apreciar las ventajas de programar en un lenguaje simbólico como elAssembler.

Los Códigos de Operación del Lenguaje Assembler (Opcodes) son fácilmente recordados12

(MOV para instrucciones de movimiento, GOTO para instrucciones de salto). También se puedenexpresar direcciones del programa y valores (Constantes y Variables) referenciados de manerasimbólica en el campo de operandos de la instrucción. Por ejemplo, si se manipula la fecha como undato, puedes asignar la misma al nombre simbólico o Etiqueta (Label) FECHA. Si el programacontiene un Grupo(Set) de instrucciones usados como un lazo de tiempo (Un grupo de instruccionesejecutadas repetitivamente hasta que una cantidad de tiempo específica ha pasado), puedes llamar estegrupo de instrucciones como la Subrutina RETARDO o DELAY.

1.5.3. ¿Qué hace el Assembler ?

Para usar el Assembler lo primero que se necesita es un programa fuente. El programa fuente consistede un grupo de instrucciones escritas por un programador en lenguaje Assembler. Estas instruccionesestán escritas usando códigos mnemónicos y etiquetas como se describió previamente.

Los programas fuente en código Assembler tienen que ser leíbles por la máquina, es por tal motivo,que el programa Ensamblador realiza un trabajo de oficina (En equipo) al trasladar el código fuente(Simbólico) a código objeto (Binario) que es el código que puede ejecutar el microprocesadorcorrespondiente. Un archivo de salida en Ensamblador consiste básicamente de tres archivos:

Page 41: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

14

* ARCHIVO OBJETO: que contiene el programa fuente (Código fuente) traducido al códigoobjeto (Binario).

* ARCHIVO LISTADO: que contiene el programa fuente, el código objeto generado por elprograma Ensamblador y la tabla de símbolos (Direcciones y Macros).

* ARCHIVO DE REFERENCIA GENERAL DE SIMBOLOS: que contiene un listado detodos los símbolos utilizados.

1.5.4. Archivo Objeto

Para muchas aplicaciones de microcomputadoras, probablemente se necesitará cargar el programafuente traducido a código binario en alguna forma de la ROM (PROM, EPROM, EEPROM). Sinembargo, previamente todos los programas para desarrollo de aplicaciones utilizan la memoria RAMpara cargar los programas fuente en élla, interpretarlos, probarlos y depurarlos. Esto le permitesometer a toda clase de pruebas el programa prototipo para desarrollar totalmente el sistema.

Una característica especial del programa ensamblador es que le permite dividir un programa muylargo en un número de módulos independientes, los cuales son mucho más fáciles de codificar yprobar de manera individual.

1.5.5. Archivo Listado

El archivo de listado provee de un registro permanente, tanto del programa fuente como del códigoobjeto. El Ensamblador también copia allí los mensajes de diagnóstico para los errores comunes deprogramación. Por ejemplo, si se especifica un valor de 16 bits para una instrucción que solamentepuede usar valores de 8 bits, el Ensamblador le participa que se excedió del rango permitido.

1.5.6. Archivo de Referencia General de Símbolos

Este archivo es otra de las herramientas de diagnóstico suministradas por el Ensamblador. Supongapor ejemplo, que su programa manipula un campo de datos llamado FECHA y las pruebas revelanun error lógico de programación en el manejo de estos datos. El archivo de referencia general desímbolos simplifica la depuración de este error porque indica cuáles instrucciones hacen referenciaa la etiqueta FECHA.

Page 42: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

15

1.6. TABLAS Y FIGURAS

Figura 1.2-01. Organización general de un microprocesador.

Page 43: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

16

Figura 1.3-01. Anidamiento de interrupciones.

Page 44: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

DIP: Dual Inline Pins, Pines de línea doble13

17

2. PIC16C5X, FAMILIA BASE.

2.1. DESCRIPCION GENERAL

Los PIC16C5X de tecnología Microchip son una familia de Microcontroladores EPROM basadosen tecnología CMOS, son de bajo costo, alto desempeño y 8 bits. Esta familia es compatibletotalmente a nivel de contactos y software con la familia de Dispositivos Mejorados (EnhacedDevices) PIC16C5X. En estas familias se emplea una arquitectura RISC (Resumed InstructionSecuence Code) con solamente 33 palabras de ciclo sencillo de instrucción. Todas las instruccionestienen un ciclo de 200nSeg (200x10 Seg) excepto por los saltos del programa los cuales tienen dos-9

ciclos de instrucción.

Con un ancho de instrucción de 12 bits se obtiene un sistema de comandos muy simétricos que resultaen una compresión de código de 2:1 sobre otros Microcontroladores de 8 bits de su misma clase.Obteniendo, como se indicó anteriormente, en un Assembler de solamente 33 instrucciones, de usomuy sencillo y fácilmente recordables, lo cual reduce significativamente el tiempo para desarrollo dela aplicación.

Todos los Microcontroladores de la familia PIC16C5X, se encuentran equipados con característicasespeciales que reducen los costos del sistema a nivel de componentes y requerimiento de energía. ElReset por encendido (Power On Reset, POR) y el dispositivo de Reset por Temporización(Timer Reset) eliminan la necesidad de circuitería externa para la reposición. Se puede seleccionaruna de cuatro posibles configuraciones para el sistema de Pulsos de Reloj (Clock), incluyéndose unapara el ahorro de energía y otra para el ahorro de costos a través de un oscilador RC.

Otras características incluidas que mejoran los costos, la energía y la rentabilidad del sistema son:

* Ahorro de energía por modo de Reposo (Sleep).

* Modo de Vigilancia Temporizada (Watch Dog Timer) contra lazos infinitos.

* Protección del Código (Code Protect) de la PROM.

Las versiones con encapsulado CERDIP (Ceramic DIP ) o SSOP (Montaje Superficial) pueden13

borrarse mediante luz ultravioleta y son ideales para el desarrollo del código, mientras que lasversiones Programables Una Sola Vez (One Time Programmable, OTP) son las más indicadaspara la producción definitiva en cualquier volumen.

Page 45: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Soportados en el concepto de que las características indicadas se encuentran incluídas y son14

totalmente operativas

Mapeados en el concepto de asignación numérica de direcciones de memoria.15

18

Todos los productos de la familia PIC16C5X son soportados por un compilador Macro Assembler14

con todas sus características, un simulador por software, un emulador circuital, un compilador delenguaje C, herramientas de soporte para Lógica Difusa (Fuzzy Logic), un programador paradesarrollo de bajo costo y un programador profesional. Todas estas herramientas están disponiblespara cualquier IBM PC y PC’s que sean 100% compatibles.

2.2. DIAGRAMAS DE PINES

En la tabla 2.2-01 (Pag. 52) se puede apreciar la distribución de los pines para los diferentes tipos deencapsulado.

En la tabla 2.2-02 (Pag. 53) se aprecian las características generales, tanto eléctricas como decompatibilidad, entre los diferentes dispositivos.

2.3. REVISION DE LA ARQUITECTURA DEL MICROCONTROLADOR.

El alto desempeño de la familia de dispositivos PIC16C5X puede ser atribuída al gran número depropiedades que existen en los Microprocesadores de arquitectura RISC. Además, esta familia deMicrocontroladores no utiliza la arquitectura tradicional Von Neumann, utiliza en su lugar laarquitectura Hardvard, en la cual las instrucciones y la data se accesan por buses diferentes oseparados. Esto proporciona una gran ventaja sobre la arquitectura tradicional en la cual los datosy las instrucciones se accesan a través del mismo bus de manera multiplexada.

Al separar la memoria de datos e instrucciones, se mejora el desempeño ya que la longitud de lapalabra de datos y la longitud de la palabra de instrucciones son diferentes, adicionalmente a ésto, enun mismo ciclo se pueden efectuar dos operaciones a la vez y de diferente longitud en bits (12 bitspara la Instrucción y 8 bits para los datos). Véase la tabla 2.3-01 (Pag. 54). Por este motivo, las 33instrucciones que componen el Assembler de la familia PIC16C5X se pueden ejecutar en un ciclosencillo de 200nSeg @ 20 Mhz, con excepción de los saltos del programa (condicionados o no).

La familia PIC16C5X puede de manera directa o indirecta direccionar sus registros de archivo,instrucciones y datos, todos los registros de funciones especiales incluyendo al contador del programase encuentran mapeados en la memoria de datos. La familia PIC16C5X es altamente ortogonal, es15

Page 46: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

( )* es una manera de representar una opción lógica activa en nivel bajo, lo que en el16

argot de los programadores digitales se conoce como NEGADO.

19

decir, tiene un Conjunto de Instrucciones (Instruction Set) simétricas que hace posible efectuarcualquier operación en cualquier registro utilizando cualquier modo de direccionamiento posible. Estanaturaleza simétrica crea situaciones especialmente óptimas que hacen de la programación con estafamilia de Microcontroladores PIC simple y eficiente, por lo tanto, la curva de aprendizaje se reducesignificativamente.

La familia de dispositivos PIC16C5X contiene una ALU de 8 bits al igual que los registros de trabajo.La ALU es una unidad aritmética de propósito general que realiza funciones Booleanas y aritméticasentre los datos contenidos en el registro de trabajo (Acumulador) y cualquier otro registro de archivo.

La ALU tiene una longitud de palabra de 8 bits y es capaz de realizar las siguientes operacionesbinarias: adición, substracción (Adición en complemento a dos), negación, rotación y operacioneslógicas. A menos de que sea indicado lo contrario, las operaciones aritméticas son complemento ados por naturaleza. En la ejecución de instrucciones con dos operandos, por lo general, uno de estosoperandos es el registro W (Acumulador), el otro operando es un registro de archivo, una constanteo una variable (Literales ambos). En la ejecución de instrucciones sencillas el operando puede ser elregistro W o un registro de archivo. El registro W es un registro de trabajo de 8 bits utilizado por laALU para sus operaciones, por lo tanto, no es un registro direccionable de manera directa.

Dependiendo de la naturaleza de la operación o instrucción ejecutada, la ALU puede afectar losvalores de las banderas (Flags):

* Acarreo (Carry, C)

* Dígito de Acarreo (Digit Carry, DC)

* Cero (Zero, Z)

Todas éstas en el registro de estado. Las banderas de Carry y Digit Carry pueden operar tambiéncomo el (Préstamo)* o (Borrow)* y el (Dígito de Préstamo)* o (Digit Borrow)*en las operaciones16

de sustracción respectivamente, se recomienda revisar las instrucciones SUBWF y ADDWF para losejemplos.

Un diagrama de bloques simplificado se muestra en la figura 2.3-01 (Pag. 55), el cual tienecorrespondencia con las tablas 2.3-02 (Pag. 56) y 2.3-03 (Pag. 57).

2.3.1. Esquema de pulsos de reloj, ciclo de instrucción.

La entrada de pulsos de reloj (OSC1/CLKIN) se encuentra dividida en cuatro, para generar igualcantidad de pulsos de reloj en cuadratura que no se sobreponen y se llaman T1, T2, T3, y T4. Elcontador del programa se incrementa con cada periodo de Q1, durante este lapso de tiempo la

Page 47: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

El concepto de Bancos de memoria se refiere a la “Unión” de dos o más registros de17

memoria cuyas direcciones son consecutivas en sus bits de mayor peso pero iguales en sus bits demenor peso. Ejemplo: 06h (0000 0110B), 16h (0001 0110B), 26h(0010 0110B), 36h (0011 0110B);equivale a un banco de 64 bits de memoria RAM, para registros de 8 bits.

20

instrucción anterior es decodificada y ejecutada, al mismo tiempo se busca la instrucción actual enla memoria para programas y se guarda en el registro de instrucción durante el borde de subida deQ4 para volver a repetir la secuencia, lo anterior puede ser apreciado de mejor manera en la figura2.3-02 (Pag. 58).

2.3.2. Secuencias de instrucción o Encausamento.

Como se estableció en el punto anterior, un ciclo de instrucción cuenta con cuatro ciclos T (T1, T2,T3, T4). Las instrucciones se buscan y ejecutan de manera secuencial, es decir, mientras en elpresente ciclo se está decodificando y ejecutando la instrucción inmediatamente anterior,simultáneamente se está buscando la instrucción actual, es por este encauzamiento que cadainstrucción en realidad se está ejecutando durante un sólo ciclo de máquina. Sin embargo, si unainstrucción causa un salto o cambio no secuencial en el contador del programa (Por ejemplo lainstrucción GOTO) se requieren entonces dos ciclos para completar la instrucción de salto. Loanterior se puede apreciar mejor en la figura 2.3-03 (Pag. 58).

Un ciclo de búsqueda comienza con el Contador de Programa (Program Counter, PC)incrementándose en Q1, durante la ejecución del ciclo la instrucción buscada es asegurada en elRegistro de Instruction (Instruction Register, IR) durante el ciclo de Q1. Esta instrucción sedecodifica y ejecuta durante los ciclos Q2, Q3 y Q4. La memoria de datos es leída durante el cicloQ2 (Lectura de operandos) y escrita durante el ciclo Q4 (Escritura de resultados).

2.4. ORGANIZACION DE LA MEMORIA

Para la familia PIC16C5X su memoria se encuentra organizada en la memoria de programas y lamemoria de datos. Para dispositivos con más de 512 Bytes en la memoria de programas se utiliza elesquema de Páginas de Memoria (Memory Pages). Para acceder a estas páginas de memoria esnecesario utilizar los 2 bits de selección de página en el registro de estado (PA0, PA1). Paradispositivos con una memoria de datos que utilice más de 32 registros de archivo, también se utilizael esquema de Bancos de Memoria (Memory Banks). Estos bancos son accesibles a través del17

selector de registros de archivo (FSR).

2.4.1. Organización de la memoria de programas

Es posible direccionar de manera directa 512 palabras de 12 bits de ancho de la memoria de programa

Page 48: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

21

EPROM. Programas con un número mayor de palabras se pueden direccionar por la selección de unade cuatro páginas con capacidad para 512 palabras cada una. La secuencia de las instrucciones estácontrolada por el contador del programa que automáticamente se incrementa para ejecutar losprogramas en la página base. Las operaciones de control del programa soportan los modos dedireccionamiento Directo, Indirecto y Relativo, los cuales pueden ser realizados por la verificaciónde condición, instrucciones de salto, instrucciones de llamada a Subrutina, instrucciones de salto opor la carga de la dirección necesaria en el registro contador de programa. En adición a todo ésto,se dispone de una pila interna con dos niveles de profundidad para un fácil anidado de Subrutinas, enfamilias posteriores la pila alcanza hasta nueve niveles de profundidad.

El PIC16C52 posee un contador de programa de 9 bits de ancho que es capaz de direccionar unespacio de memoria de 384 x 12 bits. Véase la figura 2.4-01 (Pag. 58). El vector de interrupción seencuentra localizado en la dirección 17F h.

Los PIC16C54s y PIC16C55s poseen un contador de programa de 9 bits de ancho que es capaz dedireccionar un espacio de memoria de 512 x 12 bits. Véase la figura 2.4-02 (Pag. 59). El vector deinterrupción se encuentra localizado en la dirección 1FF h.

El PIC16C56s posee un contador de programa de 10 bits de ancho que es capaz de direccionar unespacio de memoria de 1024 x 12 bits. Véase la figura 2.4-03 (Pag. 59). El vector de interrupción seencuentra localizado en la dirección 3FF h.

Los PIC16C57s y el PIC16C58s poseen un contador de programa de 11 bits de ancho que es capazde direccionar un espacio de memoria de 2048 x 12 bits. Véase la figura 2.4-04 (Pag. 60). El vectorde interrupción se encuentra localizado en la dirección 7FF h.

Cualquier intento de direccionar una posición de memoria fuera de las direcciones implementadasfísicamente podrá causar un solapamiento en las mismas. Al no definirse un vector de interrupciónen cualquiera de los PIC especificados, el contador del programa (al alcanzar ésta dirección dememoria) automáticamente se reinicia en la posición de memoria 000 h.

2.4.2. Organización de la memoria de datos

El bus de datos de 8 bits une o conecta dos unidades funcionales básicas:

* El registro de archivo compuesto de hasta 64 registros direccionables de 8 bits, incluyendolos puertos I/O.

* La Unidad Lógico Aritmética (ALU) con un ancho de 8 bits.

De estos 64 posibles registros de archivo disponibles, 48 son adicionales y direccionables de maneraindirecta a través del esquema de bancos de memoria como ya se específicó previamente. Estos datospueden direccionarse directa o indirectamente utilizando el Registro Selector de Archivo (File

Page 49: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Soportados en el concepto de que las características indicadas se encuentran incluidas y son18

totalmente operativas

Direccionado en el concepto de apuntado, indicado o señalado19

22

Select Register, FSR). El direccionamiento inmediato de datos está soportado por instrucciones18

especiales que trabajan con “Literales” que cargan datos desde la memoria de programas en elregistro W. Los registros de archivo se encuentran divididos en dos grupos funcionales:

* Los registros de funciones especiales: entre los cuales se incluye el registro temporizador 0(TMR0), el contador del programa (PC), el registro de estado (SR), los registros de puertosI/O (I/O Ports) y el selector de registros de archivos(FSR).

* Los registros de propósito general: que se utilizan para control de información o datos de lasinstrucciones.

Además de éstos, existen registros de propósito especial que son utilizados para la configuración decontrol de los puertos I/O y opciones del Contador (Prescaler).

Los registros especiales pueden ser clasificados en dos grupos. Los registros especiales asociadoscon funciones de Núcleo (Core) los cuales se describen en los puntos a continuación y aquellosrelacionados con la operación de características periféricas, lo cuales se describen en la seccióncorrespondiente de cada periférico.

Para toda la familia PIC16C5X, la memoria de datos se encuentra compuesta de 7 registros dearchivo para funciones especiales y 25 registros de archivo para propósito general, ésta es laconfiguración básica. Véase la figura 2.4-05 (Pag. 60).

Para el PIC16C55s en particular, la memoria de datos se encuentra compuesta de 8 registros dearchivo para funciones especiales (Inclusión del puerto C) y 24 registros de archivo para propósitogeneral.

Para el PIC16C57s, la memoria de datos se encuentra compuesta de 8 registros de archivo parafunciones especiales (Inclusión del puerto C) y 24 registros de archivo para propósito general.Adicionalmente, se tiene acceso a 48 registros de archivo de propósito general que pueden serdireccionados utilizando un esquema de bancos de memoria. Véase la figura 2.4-06 (Pag. 61).19

Para el PIC16C58s, el registro de archivo está compuesto de 7 registros de archivo para funcionesespeciales y 25 registros de archivo para propósito general. Adicionalmente se tiene acceso a 48registros de archivo de propósito general que pueden ser direccionados utilizando un esquema debancos de memoria. Véase la figura 2.4-07 (Pag. 61).

Page 50: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

( )* Negados, es decir, activos en nivel lógico bajo o “0” 20

23

2.4.3. Registro de estado (Status)

Este registro contiene el estado aritmético de la ALU (Las Banderas del sistema), el estado del resety los bits de preselección de página de memoria para aquellos programas con más de 512 palabras.Véase la tabla 2.4-01 (Pag. 62).

Así como cualquier otro registro de archivo de propósito general, el registro de estado puede ser eldestino de cualquier instrucción. Sin embargo, los bits de estado son redefinidos en la siguienteescritura por acción de la ALU, aunque no es posible escribir en los bits (TO)* y (PD)* . 20

Es necesario o conveniente tener presente que no todas las instrucciones afectarán al registro deestado del mismo modo como lo harían con los registros de archivo para propósito general, unejemplo es la siguiente instrucción:

Clrf Status ;Limpiar el registro de estado, Status = 00h

esta instrucción podrá limpiar todos los bits de registro a excepción del (TO)* y (PD)* y luego seredefine el Bit de Z (Cero), el registro de estado debería ser “0” y en realidad el resultado de lainstrucción anterior sería:

Status= 0 0 0 U U 1 0 0, entendiendo U por No Cambiado (Unchanged)

En vista de lo anterior, se recomienda ampliamente la utilización de las instrucciones BCF, BSF yMOVWF para alterar el registro de estado, por cuanto estas instrucciones no causan una redefinicióndel registro por la acción de la ALU. Para ver otras instrucciones que podrían afectar los bits delregistro de estado, véase la tabla 2.8-01 (Sumario del Set de instrucciones, Pag. 78).

2.4.4. Registro de opciones (Option)

El registro de opciones tiene un ancho de 6 bits, es un registro de sólo escritura que contiene variosbits de control para configurar el módulo de timer 0 (TMR0), el contador (Prescaler) del WatchdogTimer (WDT) y las interrupciones externas (INT). Véase la tabla 2.4-02 (Pag. 63).

Por la ejecución de la instrucción OPTION, el contenido del registro W se transfiere al registro deopciones, con lo cual se le configura. Cualquier tipo de reset coloca todo los bits del registro deopciones a “1”.

2.4.5. Contador del programa

En la medida en que se ejecutan las instrucciones de un programa, el Contador de Programa

Page 51: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Cargados en el concepto de adquisición del dato o valor númerico21

24

(Program Counter, PC) contendrá la dirección de la siguiente instrucción a ser ejecutada, Dondeel valor del contador de programa se incrementa en la unidad con la ejecución de cada ciclo deinstrucción, a menos, por supuesto, que una instrucción cambie el valor del contador del programa.

Para una instrucción GOTO, los nueve bits que conforman la dirección de destino sonproporcionados por la instrucción. El Cerrojo (Latch) del PC es mapeado o cargado con los 8 bitsde peso 0 a 7. Véase la figura 2.4-08 (Pag. 64) y la figura 2.4-09 (Pag. 64).

Para los PIC16C56s, PIC16C57s, PIC16C58s, se hace necesario suministrar también la página dememoria donde se encuentra la dirección de destino. Los bits de peso 5 y 6 en el Registro de Estado(Status Register) proveen la información de la página seleccionada a los bits de peso 9 y 10 delcontador de programa. Véase la figura 2.4-09 (Pag. 64) y la figura 2.4-10 (Pag. 64).

Para una instrucción CALL, o cualquier instrucción donde el destino sea el cerrojo del contador deprograma (PCL), los bits de peso 0 a 7 del contador de programa son proporcionados por la mismainstrucción CALL. Sin embargo, el bit de peso 8 del contador de programa no proviene de ningunainstrucción , por este motivo siempre es limpiado o puesto a “0”. Razón por la cual, todas lasllamadas a Subrutinas o saltos condicionados se encuentran limitadas a las primeras 256 posicionesde cualquier página de memoria de programa de las 512 disponibles. Véase la figura 2.4-08 (Pag. 64)y la figura 2.4-09 (Pag. 64).

Para una instrucción RETLW, el contador del programa se carga con la dirección de memoria quese encuentre en el Tope de la Pila (Top Of Stack, TOS). Es de aclarar, que independientemente deldispositivo utilizado la Pila (Stack) tiene la misma longitud en bits del contador del programa. Todoslos bits del contador del programa son puestos a “1” después de cualquier tipo de Reposición oReset durante la ejecución del programa, es automáticamente incrementado con cada instrucción,a menos que la instrucción en sí misma tenga por función cambiar el valor del contador del programa.

Si el contador del programa es el destino de cualquier instrucción como por ejemplo: MOVWF PC,ADDWF PC o BSF PC,5, sólo los 8 bits de peso 0 a 7 resultantes de la operación son cargados en21

el contador de programa, el noveno bit (Peso 8) es limpiado o puesto a “0”. En los dispositivos queposeen más de 512 Bytes de memoria, los dos bits de peso mayor (10 y 9) son cargados del selector21

de página (PA1, PA0) del registro de estado.

Cuando nos encontramos en una página de memoria diferente a “0”, no hay ningún inconveniente sise está en la última dirección de una página inferior ya que automáticamente el contador del programapasa a la página superior del mismo bloque. Se hace necesario aclarar, que para que ésto sea realidadno se pueden cambiar los bits de selección de página en el registro de estado por la ejecución delmismo programa en el bloque actual. Por ejemplo, una instrucción NOP localizada en la dirección1FFh de la página “0”, al ser ejecutada, incrementará de manera automática a la dirección 200h enla página 1. Si dentro de ésta página se ejecuta la instrucción GOTO XXX h, se ejecutará un saltoa la dirección XXXh en la página 0, si es que no se han modificado los bits selectores de página enel registro de estado (PA1, PA0), ya que no existe una actualización automática de éstos bits. Es por

Page 52: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Puestos en el concepto de asignacion de un valor numérico.22

25

esta razón, que se debe tener mucho cuidado en la estructura de programación con la utilización delregistro de estado. También debe recordarse que después de cualquier reset los bits del registro deestado son puestos todos a “0”.22

2.4.6. El puntero de Pila (Stack Pointer)

Los dispositivos de la familia PIC16C5X, disponen de una pila por hardware de dos niveles, con unancho de 9 a 11 bits (Dependiendo del dispositivo en particular). Véase la figura 2.4-01 (Pag. 58),la figura 2.4-02 (Pag. 59), la figura 2.4-03 (Pag. 59) y la figura 2.4-04 (Pag. 60).

La ejecución de una instrucción CALL (Llamado a una “Segunda” Subrutina) dentro de una“Primera” Subrutina, empuja el valor contenido en la pila Nro. 1 hacia la pila Nro. 2, copiando en lapila número 1 el valor de contador del programa incrementado en la unidad como la dirección deretorno de esta “Segunda” Subrutina. Si se ejecuta el llamado a una “Tercera” Subrutina, la operaciónse repite de nuevo, pero se debe tener presente que sólo se tendrá la dirección de retorno de las dosúltimas Subrutinas, es decir, la “Tercera” y la ”Segunda”, ya que se pierde la dirección de retorno dela “Primera” Subrutina.

La ejecución de una instrucción RETLW ejecuta la operación inversa, es decir, el contenido de la pila1 se “Mueve” hacia el contador de programa y el contenido de la pila 2 se “Copia” en la pila 1. Si seejecutan más de 2 instrucciones RETLW, el contador de programa siempre será cargado con ladirección inicialmente existente en la pila 2

2.4.7. Direccionamiento indirecto, registros INDF y FSR

El registro INDF, NO es una dirección de registro físico y es utilizado en conjunción con el registroFSR (A manera de puntero) para ejecutar el direccionamiento indirecto. Cualquier instrucción queutilice el registro INDF tendrá acceso a datos en páginas de memoria indicadas por el registro FSR,que de manera normal no se encontrarían disponibles. Véase la figura 2.4-11 (Pag. 65).

El registro FSR es un registro que tiene 5 bits de ancho para los PIC16C52, PIC16C54s, PIC16C55sy PIC16C56s. Tiene 7 bits de ancho para los PIC16C57s y el PIC16C58s. Este se utiliza enconjunción con el registro INDF para accesar de manera indirecta el área de memoria de datos. Losbits de peso 4 a 0 del FSR son el puntero para la dirección de la memoria de datos entre 00h y 1Fh.El bit de peso 4 realiza el intercambio entre los 16 registros de archivos bajos (00h a 0Fh) y los 16registros de archivos altos (10h a 1Fh). Cuando el bit de peso 4 del FSR tiene valor “0”, apunta hacialos 16 registros de archivos bajos y cuando tiene valor 1, apunta hacia los 16 registros de archivosaltos. El bit de peso 3 del FSR provee el valor de la dirección específica del registro dentro de cadaárea (Alto, Bajo).

Cuando no se está ejecutando el direccionamiento indirecto, el registro FSR puede ser utilizado como

Page 53: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Implementados en el concepto de disponibilidad para uso del programador23

26

un registro de propósito general de 5 bits (Peso 4 a 0), sin embargo, no se recomienda esta prácticapara garantizar la portabilidad de los programas hacia dispositivos futuros.

A continuación, se indica un programa ejemplo de direccionamiento indirecto que permite limpiar lasposiciones de memoria RAM comprendidas entre las direcciones 20h y 2fh.

;Label Mnemo. Operando Comentario;

Movlw 0x10 ;Inicializamos el punteroMovwf FSR ;Habilitamos la página de memoria

Lazo Clrf INDF ;Limpieza de posiciónIncf FSR, f ;Incrementamos el punteroBtfsc FSR, 4 ;Si FSR, 4 = 0, ir a Laz01Goto Lazo ;Ir a Label Lazo

Con01 ;Continuar ejecución normal

Para los PIC16C52, PIC16C54s y PIC16C55s, no se utiliza el esquema de bancos de memoria, porlo tanto, los bits de peso 5 y 6 del registro FSR no se encuentran implementados , es decir, se leen23

como “1”

Para el PIC16C56s, los bits de peso 5 y 6 del registro FSR se encuentran implementados como el23

selector de banco de la siguiente manera; 00 = Banco 0, 01 = Banco 1, donde, 10 y 11 soncombinaciones inválidas.

Para los PIC16C57s y PIC16C58s, los bits de peso 5 y 6 del registro FSR se encuentranimplementados como el selector de banco de la siguiente manera; 00 = Banco 0, 01 = Banco 1, 10 = Banco 2, 11 = Banco 3.

2.4.8. Registro W (Working)

El registro W (También conocido como acumulador) tiene el segundo operando en cualquieroperación aritmética o lógica, además de que soporta la transferencia interna de datos.

2.4.9) Eventos que afectan los bits de tiempo fuera y Reposo.

El Watchdog Timer (WDT) puede ocasionar un reset sin importar el valor del bit (TO)* en elregistro de estado. La instrucción SLEEP puede ser ejecutada independientemente del valor del bit(PD)* en el registro de estado. Véase la tabla 2.4-03 (Pag. 65) y la tabla 2.4-04 (Pag. 65). Los bitsdel registro de estado (TO)* y (PD)* se pueden leer para determinar qué acción ocasionó un reset.También se indican aquí los valores que tomarían estos bits en función del evento acaecido. Es dehacer notar, que un pulso de nivel bajo en el pin (MCLR)* no es suficiente para afectar los bits

Page 54: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

27

(PO)* y (PD)* en el registro de estado.

2.5. PUERTOS I/O

Gracias a la tecnología de diseño utilizada por la Microchip, los puertos pueden ser leídos o escritoscomo cualquier otro registro de archivo. Sin embargo, las instrucciones de lectura como por ejemplo:MOVF PORTB,W, siempre leerán los pines del puerto B independientemente del modo de asignaciónI/O que le haya sido definido. Por la ejecución de cualquier reset, todos los puertos son definidos pordefecto como entradas (Los circuitos de salida se encuentran en alta impedancia), del mismo modoque los registros de control I/O (TRIS A, TRIS B, TRIS C) son todos definidos a “1”. Otro de losaspectos importantes de ésta arquitectura de diseño es que “En un mismo puerto” se pueden definirunos pines como entradas y otros como salida (Los que se deseen en orden y número).

2.5.1. Puerto A

El puerto A es un registro de archivo de solamente 4 bits (Los de menor peso), ya que los bits depeso superior (bits 4 a 7) no se encuentran implementados y son leídos como “0” .

2.5.2. Puerto B

El puerto B es un registro de archivo de 8 bits, todos se encuentran disponibles para Lectura oEscritura.

2.5.3. Puerto C

Para los PIC16C55s y PIC16C57s, el puerto C es un registro de archivo de 8 bits, todos seencuentran disponibles para Lectura o Escritura. Para los PIC16C54s y PIC16C58s, NO es unpuerto, es solamente un registro de propósito general de 8 bits.

2.5.4. Registro TRIS

Para definir qué pines de un determinado puerto se van a declarar como salida o como entrada esnecesario ejecutar la instrucción TRIS 05, TRIS 06 o TRIS 07. Es de aclarar, que previamente se hadebido cargar en el acumulador el valor binario que corresponda con el peso de cada bit en el puertode salida. Un valor de “1” definirá el pin correspondiente como una entrada, es decir, colocará elcircuito TTL de salida en modo de alta impedancia de forma que sólo se pueda leer de este pin. Unvalor de “0” ejecutará la acción inversa, es decir, lo declara como una salida.

Page 55: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

28

Nota: Cualquier lectura del puerto debe interpretarse como una lectura del pin correspondiente, nocomo el valor de los cerrojos (Latch) de salida de datos. Por ejemplo, si un cerrojo seencuentra habilitado para salida y el valor asignado es alto (1), pero el circuito externoconectado al pin se encuentra en un valor bajo, como un diodo LED conectado a tierra (0Voltios), cualquier acción de lectura de este pin indicará un valor bajo .

El registro TRIS es solamente para escritura y se encuentra definido a “1” en todos sus bits despuésde cualquier acción de reset.

2.5.5. Características de Lectura o Escritura

El circuito equivalente de un puerto I/O es el que se muestra en la figura 2.5-01 (Pag. 66). Todos lospuertos de cualquier microprocesador PIC pueden ser utilizados en lectura o escritura. Paraoperaciones de lectura el pin no posee un circuito cerrojo (Latch) que mantenga el valor del pindurante algún tiempo. Es por ésto que al efectuar una operación de lectura, se leerá el valor del pinen ese instante y se mantendrá en el registro correspondiente hasta que se efectúe una nuevaoperación de lectura en ese puerto. Para utilizar cualquier pin del puerto como salida, es necesarioque el bit de control correspondiente en el acumulador se encuentre a un valor de “0” al utilizar lainstrucción TRIS; en este caso el valor asignado al pin como salida será mantenido todo el tiemponecesario hasta que se efectúe otra operación de escritura que cambie el valor previo (Acción decerrojo). Motivado a la facilidad de asignación de valores binarios al acumulador, se afirma que cadapin del puerto puede programarse de manera independiente e individual, tanto para salida como paraentrada. Incluso un mismo pin del puerto puede servir, tanto para entrada como para salida, a lo largode la ejecución del programa al efectuar la instrucción TRIS de manera repetida.

2.5.6. Consideraciones de programación I/O

Algunas operaciones internas ejecutan la lectura del puerto, seguida luego por una escritura delmismo. Por ejemplo, las instrucciones BCF y BSF ejecutan una lectura de todos los ocho bits delpuerto (4 bits para el puerto A), se ejecuta la operación de comparación en el bit especificado y luegoescribe el valor leído en el puerto. Por este motivo, se debe tener mucho cuidado al ejecutar estasinstrucciones sobre un puerto en el cual varios de sus pines han sido configurados para Lectura oEscritura. Por ejemplo: Una instrucción BSF en el bit 5 del puerto B, ejecutará una lectura de los 8bits del puerto, efectuará la comprobación en el bit 5, luego ejecutará una escritura en el puerto B ya continuación ejecutará la rutina correspondiente como resultado de la comparación. Si alguno delos bits del puerto han sido configurados para escritura, el mismo se comportará como un bitbidireccional, sobrescribiendo el dato anterior, en cualquier caso el resultado de tal operacion podríaser desconocido y dependerá de la circuiteria externa conectada al pin como puerto de salida.

Es fundamental no exceder la corriente máxima que puede proporcionar el puerto cuando se leconfigura como salida a objeto de evitar daños en la circuitería interna del microprocesador.

Page 56: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Subida: Transición de nivel bajo a nivel alto24

Bajada: Transición de nivel alto a nivel bajo

29

2.6. MODULO TIMER 0 (TMR0)

El TMR0 es un módulo temporizador/contador que posee las siguientes características.

C Temporizador / Contador de Ocho bits

C Se puede Leer / Ecribir en el mismo

C Prescaler de 8 bits programable por software

C Selección del pulso de reloj Interno / Externo para conteo

C Selección del borde (Subida o Bajada) de reloj Interno / Externo24

La figura 2.6-01 (Pag. 66) es un diagrama de bloques simplificado del módulo TMR0, mientras quela figura 2.6-02 (Pag. 66) muestra la estructura eléctrica del circuito de entrada del TMR0.

El modo temporizador se selecciona poniendo a “0” el bit T0CS (Bit 5) del registro OPTION. Eneste modo, el módulo TMR0 puede incrementarse con cada ciclo de instrucción (Dependiendo delvalor asignado al prescaler). Si el TMR0 se activa para escritura, el incremento se encontrará inhibidodurante los siguientes dos ciclos de instrucción, durante este tiempo el programador puede ajustarel valor del conteo (Por ende tiempo) para el módulo TMR0.

El modo contador de eventos se selecciona poniendo a “1” el bit T0CS (Bit 5) del registro OPTION.En este modo el contador puede ser incrementado con las transiciones de subida o bajada que seproporcionen en el pin T0CLK. La determinación del tipo de transición a efectos de incremento seselecciona en el bit T0SE (Bit 4) del registro OPTION. Las restricciones a ser consideradas para lospulsos externos aplicados en el pin T0CLK se tratarán con más detalle en la sección 2.6.1.

Es de hacer notar, que el prescaler se encuentra compartido entre el módulo TMR0 y el WatchdogTimer. La asignación del prescaler se controla por software a través del bit de control PSA (Bit 3)del registro OPTION, colocando a “0” el bit PSA, será asignado al TMR0 y las relaciones delprescaler podrán ser: 1:2, 1:4, 1:8, ..., 1:256. Un valor de “1” en el bit PSA lo asignará al WatchdogTimer y las relaciones del prescaler podrán ser: 1:1, 1:2, 1:4, ..., 1:128. En la sección 2.6.2 se tratarácon detalle la operación del prescaler.

2.6.1. Utilización del TMR0 con pulsos externos (Eventos).

Cuando se utiliza un pulso externo con el TMR0, éste debe cumplir con ciertos requerimientos quepermitan sincronizarlo con el reloj de fase interna (TOSC) ya que es necesaria cierta duración del

Page 57: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

30

pulso externo para cumplir con las condiciones del contador, además, si no se está utilizando elprescaler, se utiliza el mismo tiempo o frecuencia del pulso externo (Relación 1:1, configuración delTMR0 como contador y asignación del prescaler al WDT). La sincronización del pin T0CKI con elreloj de fase interna requiere del muestreo de la salida del prescaler durante los ciclos Q3 y Q4 delreloj de fase interna. Véase la figura 2.3-02 (Pag. 58). Es por este motivo que se hace necesario queel nivel del pin T0CKI se mantenga a un nivel alto, o a un nivel bajo, durante por lo menos dosperiodos del oscilador externo.

Cuando el prescaler se está utilizando, los pulsos externos se encuentran divididos por un contadorde ripple asíncrono (Prescaler) que garantiza una salida simétrica. Para que los pulsos externoscumplan con los requerimientos de muestreo, se hace necesario que el pulso aplicado en el pinT0CLK se mantenga a un nivel estable durante por lo menos 4 periodos del oscilador interno divididopor el valor del prescaler. De manera general, se puede establecer que la única limitación en el anchode los pulsos aplicados al pin T0CLK, es que éstos tengan un ancho mayor a 10 nano segundos(10x10 Seg.), con un nivel minimo entre V y 0.15V ; y un nivel maximo entre 0.85V y V .-9

SS DD DD DD

2.6.2. Prescaler.

Debe entenderse por prescaler un contador binario de 8 bits que se encuentra disponible tanto parael módulo TMR0 como para el Watchdog Timer (En este caso, se le identificaría más exactamentecomo Postcaler), en cualquier caso se le llamará prescaler a lo largo del presente documento. Es dehacer notar que cuando el prescaler se encuentre asignado al módulo TMR0, no lo podrá utilizar elWatchdog Timer y viceversa, es decir, son mutuamente exclusivos. Esta asignación se encontrarádefinida por el valor del bit PSA en el registro de opciones, del mismo modo que las relaciones deconteo se encuentran definidas por los bits PS2, PS1, PS0 en el registro OPTION.

Cuando el prescaler se encuentre asignado al módulo TMR0, todas las instrucciones de escritura eneste módulo (CLRF 1, BSF 1, MOVWF 1, ...) podrán limpiar (Poner a “0” ) el prescaler. Cuando elprescaler se encuentre asignado al Watchdog Timer, solamente la instrucción CLRWDT limpiará(Pondrá a “0” ) ambos. Al prescaler no se le puede definir otro valor de conteo que el especificadoen las “Tazas” de relación a través de los bits PS2, PS1, PS0. Bajo cualquier condición de reset elvalor del prescaler será de “0” en todos sus bits. En la figura 2.6-03 (Pag. 67) se puede apreciar undiagrama de bloques del prescaler.

2.7. CARACTERISTICAS ESPECIALES

A continuación se enumeran una serie de características desarrolladas para todas la familas deMicrocontroladores Microchip a objeto de maximizar la eficiencia del sistema, minimizar los costosa través de la eliminación de componentes externos, proveer modos de ahorro de energía y muchomás. Estas características son:

C Selección del tipo de oscilador, una de cuatro opciones.

Page 58: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

31

C Pin de reset externo, (MCLR)*.

C Reset por encendido independiente de circuitos externos (Circuito POR).

C Reset por dispositivo temporizador (Circuito DRT).

C Watch Dog Timer (Circuito WDT).

C Reposo (SLEEP).

C Protección de código hexadecimal (CP).

C Identificación de locaciones (ID Locations)

La familia de dispositivos PIC16C5X posee un Watchdog Timer que sólo puede ser puesto fuera deservicio a través del bit de configuración WDTE en la palabra de configuración, en esta misma palabrase define el tipo de oscilador con el cual va a trabajar el Microcontrolador. También existe un retardoen el encendido de 18 mSeg con el cual se trata de mantener el chip en condición de mínimofuncionamiento a objeto de permitir que el oscilador de cristal se estabilice, de este modo no senecesita de un circuito externo de reset, si V cumple determinadas condiciones en su tiempo deDD

subida y establecimiento.

El modo de reposo se a diseñado para ofrecer un modo de corriente mínima mientras elmicrocontrolador no se encuentre realizando un trabajo efectivo. El usuario puede resetear el modode funcionamiento normal a través del pin externo de reset o a través de un tiempo fuera por elWatchdog Timer. Se encuentran disponibles diferentes opciones de selección del circuito oscilador.El modo de oscilador RC ahorra costos del sistema final mientras que el oscilador por cristal LPahorra energía.

2.7.1. Bits de configuración.

La palabra de configuración consta de 4 o 12 bits, dependiendo del dispositivo que se deseaconfigurar. Los bits de configuración pueden ser definidos de manera independiente. Dos de ellos seutilizan para definir el tipo de oscilador, uno para habilitar el Watchdog Timer y el otro para habilitarla protección del código, se recomienda revisar la directiva _CONFIG, punto 4.7.9, página 98. Es deaclarar que ésta palabra de configuración sólo estará “Accesible” para el programador al momentode transferir el programa objeto al microcontrolador. Se recomienda por tanto efectuar una revisióncon más detenimiento de las diferentes técnicas de programación a través del documento 30190.pdfen la dirección de INTERNET: http://www.microchip.com/10/Lit /Index.htm, el cual tambien seencuentra disponible en el CD adjunto al presente documento. Véase la tabla 2.7-01 (Pag. 67).

Page 59: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

32

2.7.2. Configuración del Oscilador.

La familia PIC16C5X se puede operar en Cuatro modos diferentes de oscilador. El usuario puedeescoger uno de los siguientes modos.

C LP: Cristal de bajo consumo

C XT: Cristal o Resonador

C HS: Cristal o Resonador de alta velocidad

C RC: Resistor - Capacitor

En los modos XT, LP o HS un cristal o resonador cerámico se conecta a los pines OSC1/CLKIN yOSC2/CLKOUT para establecer la oscilación, véase la figura 2.7-01 (Pag. 68). Este tipo de osciladorrequiere del diseño de un cristal por corte paralelo. La utilización de cristales por diseño de corteserie, pueden proporcionar una frecuencia fuera de los rangos especificados por el fabricante.También en los modos XT, LP o HS, el dispositivo puede ser alimentado por un generador de relojexterno, el cual se debe conectar en el pin OSC1/CLKIN como se indica en la figura 2.7-02 (Pag. 68).

En las tabla 2.7-02 (Pag. 68) y la tabla 2.7-03 (Pag. 69) se proporcionan una serie de valores posiblesde capacitores en función del modo de oscilación, debe recordarse que los mismos sonproporcionados como una guía de diseño solamente. Desde que cada resonador y cristal posee suspropias características, se deben consultar las Hojas de Especificaciones (Data Sheet) de cadacomponente para utilizar los valores apropiados a cada uno de ellos.

Aunque los microcontroladores PIC pueden ser utilizados con un oscilador sencillo a cristal, si seexperimentan algunos problemas en cuanto a la estabilidad en la frecuencia o se desean utilizar lospulsos del oscilador del microcontrolador en otros circuitos, se recomiendan los circuitos osciladoresexternos con compuertas TTL que se indican en la figura 2.7-03 (Pag. 69) y la figura 2.7-04 (Pag.69).

En la figura 2.7-03 (Pag. 69) se muestra la implementación de un circuito oscilador con cristal decorte paralelo, el mismo se encuentra diseñado para oscilar a la frecuencia fundamental del cristal. Elchip 74AS04 realiza una inversión en la fase de 180 grados, que es una de las condiciones requeridaspor este tipo de oscilador. El resistor de 4.7 KÙ provee la realimentación negativa para estabilidad.El potenciómetro de 10 KÙ efectúa los ajustes necesarios para polarizar al 74AS04 en la región lineal.Este tipo de circuito es muy común en todos aquellos montajes que utilizan osciladores externos.

En la figura 2.7-04 (Pag. 69) se muestra un circuito oscilador con cristal de corte serie, este circuitotambién se encuentra diseñado para trabajar a la frecuencia fundamental del cristal. También aquí, el74AS04 ejecuta una inversión de 180 grados en la fase. Los resistores de 330Ù proveen larealimentación negativa necesaria para polarizar los chips en su región lineal.

Para aplicaciones donde las variaciones de frecuencia sean de poca importancia, la opción de oscilador

Page 60: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

33

RC ofrece un ahorro adicional en los costos. La frecuencia del oscilador RC es función de la tensiónde alimentación, de los valores de Rext y Cext, además de la temperatura de operación. En adicióna ésto, la frecuencia del oscilador podría variar en algunas unidades de manera normal, de la mismaforma que varían los parámetros del proceso. Debe tenerse presente que las capacitancias parásitasdebidas al tipo de encapsulado del chip también podrían afectar la frecuencia de oscilación,especialmente para valores bajos de Cext. También se hace necesario tener presente las variacionespor tolerancia de los componentes externos utilizados, Rext y Cext. La figura 2.7-05 (Pag. 69)muestra cómo la combinación del circuito R/C se conecta al PIC16C5X. Para valores del resistorexterno (Rext) por debajo de 2.2 KÙ, la operación del oscilador podría tornarse inestable o detenersetotalmente. Para valores del resistor externo muy elevados (Por ejemplo 1MÙ) el oscilador se hacesensitivo al ruido, humedad y fugas de dielectrico en el capacitor, es por éstos motivos que serecomienda que se mantenga el valor de Rext entre 3 KÙ y 100 KÙ (3 KÙ < Rext < 100 KÙ).

Aunque el oscilador interno en modo RC puede operar sin un capacitor externo conectado (Cext =0 pF), se sugiere que la capacitancia mínima utilizada para Cext se encuentre alrededor de los 20 pF,no se recomienda la operación sin capacitor por razones de estabilidad, ya que la frecuencia puedevariar dramáticamente en función de los cambios de las capacitancias parásitas externas como lapresentada por el circuito impreso de bakelita, fibra de vidrio o la capacitancia interterminales segúnel tipo de encapsulado.

Cuando se selecciona el modo de oscilador RC en el pin OSC2/CLKOUT, se obtiene un tren depulsos cuya frecuencia será 1/4 de la frecuencia del oscilador RC (fosc/4), éstos pueden ser utilizadospara propósitos de prueba o sincronización de circuitos lógicos externos. En la tabla 2.7-04 (Pag. 70)se dan algunos valores típicos de Rext y Cext para valores típicos de frecuencia probados en lapráctica, para otros valores de frecuencia o tensión de alimentación, se sugiere revisar las figuras 2.7-06 (Pag. 70), 2.7-07 (Pag. 71), 2.7-08(Pag. 72) y 2.7-09(Pag. 73).

2.7.3. Reset

Todas las familias de Microcontroladores PIC poseen tipos u opciones de reset, a continuación seenumeran.

C Reset por encendido (Power On Reset, POR).

C Reset por nivel bajo en el pin (MCLR)* durante la operación normal.

C Reset por nivel bajo en el pin (MCLR)* durante un lapso de reposo (Sleep).

C Reset por tiempo fuera (Time out) a causa del Watchdog Timer (WDT)

Algunos registros no son afectados por ninguna condición de reset. Su estado es desconocido alefecturase un reset por encendido y permanece sin cambio ante cualquier otro reset. Muchos otrosregistros son definidos a un “Estado de reset” al efecturase un reset por encendido, un reset por nivelbajo en el pin (MCLR)* o un reset a causa del Watchdog Timer. Debe notarse que para la familia

Page 61: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

34

PIC16C5X hay diferencias entre un reset causado por el Watchdog Timer durante un periodo “Sleep”o durante un periodo de operación normal. Los bits (TO)* y (PD)* son definidos o limpiadosdependiendo del tipo de reset efectuado, véase la tabla 2.7-05 (Pag. 74). Estos bits se pueden utilizarpara determinar la naturaleza del reset. Véase la tabla 2.7-06 (Pag. 74) para una descripción total delos estados de reset en todos los registros. Véase la tabla 2.7-07 (Pag. 75) para las condiciones dereset en los registros especiales. La figura 2.7-10 (Pag. 75) muestra un diagrama de bloquessimplificado del circuito de reset interno.

2.7.4. POR (Power On Reset) y DTR (Device Timer Reset)

La familia de Microcontroladores PIC incorpora dentro del mismo Circuito Integrado (Chip) toda lacircuiteria necesaria para proveer el reset interno por encendido. Para utilizar ésta característicasolamente es necesario unir eléctricamente el pin (MCLR)*/Vpp al pin V de manera momentáneaDD

durante el arranque, de ésta forma al encenderse el microcontrolador el circuito POR mantendrá lacondición de reset durante un lapso de tiempo inicial de 0.018 Seg. después del cual detectará si elpin (MCLR)* se encuentra a un nivel alto para retirar la condición de reset.

Un diagrama de bloques simplificado de la circuiteria interna del reset por encendido se muestra enla figura 2.7-10 (Pag. 75). El circuito de reset por encendido (POR) y el dispositivo contador de reset(DTR) se encuentran estrechamente relacionados. Durante el encendido el Cerrojo (Latch) es puestoa “1” y el DTR es reseteado. El contador del DTR comienza la cuenta una vez que detecta que el pin(MCLR)* pasa a nivel alto (+ V ) cuando ésta cuenta se completa (Aproximadamente 18 mSegDD

despues) el cerrojo es puesto a “0” y el microcontrolador comienza su operación normal.

Las figuras 2.7-11 (Pag. 75) y 2.7-12 (Pag. 76) muestran dos situaciones de encendido con un tiempode subida relativamente rápido en V . En la figura 2.7-11 (Pag. 75) a V se le permite una subidaDD DD

y estabilización antes de que el pin (MCLR)* pase a un nivel alto (Operación normal). En la figura2.7-12 (Pag. 76) la característica interna de reset por encendido no tiene tiempo de ser utilizada, elpin (MCLR)* se une eléctricamente al pin V ) donde V tiene un tiempo de subida muy rápido, porDD DD

lo tanto el contador de arranque no alcanza su valor final con lo cual se existe una situación muyinconveniente para un arranque normal. La figura 2.7-13 (Pag. 76) muestra una situaciónpotencialmente problemática donde V se eleva muy lentamente, en ésta situación, cuando elDD

contador de arranque alcance su valor final V no habrá alcanzado el valor mínimo de tensiónDD

necesaria para garantizar la correcta operación del microcontrolador (V1).

Siempre que la rata de crecimiento en la tensión de alimentación (V ) no sea menor de 0.05 V/mSegDD

partiendo desde 0 Voltios, será innecesaria la utilización de circuitos externos de reset. Este circuitoen cambio podrá requerirse para cristales que necesiten más de 18 mSeg. para arrancar y estabilizarse,en éstos casos se recomienda la utilización de un circuito externo RC para lograr un retardo mayoren el arranque inicial, véase la figura 2.7-14 (Pag. 76). La función del diodo D es ayudar en ladescarga rápida del capacitor C cuando se apaga la fuente V . Se recomienda que R sea menor deDD

40 KÙ para garantizar que la caída de tensión a través de R no exceda 0.2 Voltios (Corriente de fugamáxima en el pin (MCLR)*/Vpp, 5 µAmp) ya que de lo contrario se degradaría el vivel V aplicadoIH

al pin (MCLR)*. R1 debe de tener un valor comprendido entre 100 Ù y 1000 Ù para limitar cualquier

Page 62: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Puesto a cero25

35

flujo de corriente hacia el pin (MCLR)* desde el capacitor externo durante el periodo de apagado deV .DD

En otras oportunidades, tal vez sea necesario detener el funcionamiento del circuito cuando el nivelde tensión de alimentación caiga por debajo de determinado nivel; para éstos casos se recomienda lautilización de los circuitos que se indican en la figura 2.7-15 (Pag. 77) y la figura 2.7-16 (Pag. 77).En la primera el microcontrolador se reiniciara cuando la tensión en V sea menor que (Vz + 0.7)DD

Voltios. Para el segundo caso el circuito es más economico pero menos preciso ya que el sistema sereiniciara cuando:

Vdd * R1 -------------- = 0.7 Voltios

R1 + R2

el cual dependerá de las tolerancias de las resistencias.

2.7.5. Watchdog Timer (WDT)

El Watchdog Timer se encuentra activado por un oscilador RC dentro del chip que trabaja de maneraindependiente, es decir, no se requieren componentes externos para el mismo y se encuentra separadode los pines OSC1/CLKIN y OSC2/CLKOUT, por tal motivo se encontrará trabajando aunque eloscilador externo se encuentre detenido por la acción de una instrucción de reposo (Sleep), bajo estascircunstancias, una vez cumplido el conteo prestablecido para el WDT, éste generará una condiciónde reset que provocará el Restablecimiento del Dispositivo (Wake up from sleep) para quecontinúe con la operación normal. El Watchdog Timer puede ser inhabilitado permanentemente porla configuración del bit WDTE como “0”. Véase la sección 2.7.1. En la figura 2.7-17 (Pag. 77) seaprecia un diagrama de bloques simplificado del circuito Watchdog Timer.

El Watchdog Timer tiene un retardo base de 18 mSeg (Sin prescaler) antes de producir la señal dereset de tiempo fuera (Time out). Este retardo base puede cambiar con la temperatura, el nivel deV , y variaciones propias del proceso de fabricación; si se desea un retardo mayor, se debe definirDD

el prescaler con una razón de 1:128, a través del registro OPTION, de éste modo se pueden conseguirretardos de hasta 2 o 3 Segundos antes de que se produzca la señal de reset por tiempo fuera. Lasinstrucciones CLRWDT y SLEEP, limpian el Watchdog Timer y el postcaler, evitando previene quese produzca un reset de tiempo fuera. Otra opción es limpiar el bit (TO)* (Bit 4 del registroSTATUS) antes de que se produzca el reset.

2.7.6. Modo de bajo consumo (SLEEP)

Se entra en un modo de bajo consumo cuando se ejecuta la instrucción SLEEP. Bajo estascircunstancias, el contador del Watchdog Timer es limpiado pero se mantendrá corriendo; el bit25

Page 63: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

36

(TO)* del registro STATUS se pone a 1, el bit (PD)* del registro STATUS se pone a 0 y se apagael circuito driver del oscilador externo. Los puertos I/O mantienen su estado o nivel de tensión antesde la ejecución de la instrucción SLEEP.

Es de hacerse notar que la generación de un reset de tiempo fuera por el WDT, NO llevará el pin(MCLR)* / V a un nivel de tensión bajo. PP

Cualquier microcontrolador PIC en estado de reposo puede ser restablecido por la ocurrencia de unocualquiera de los siguientes eventos:

C Una señal externa de reset (Nivel bajo) aplicada en el pin (MCLR)* / VPP

C Una condición de reset por tiempo fuera causada por el Watchdog Timer si éste a sidohabilitado

Los bits (TO)* y (PD)* del registro STATUS se pueden utilizar para determinar la causa del reset.El bit (TO)* es puesto a 0 por la ocurrencia de un reset por tiempo fuera del WDT, y elmicrocontrolador se restablece a su operación normal. El bit (PD)* que es puesto a 1 al momento deencender por primera vez el microcontrolador, se pone a 0 cuando se ejecuta una instrucción SLEEP.El Watchdog Timer siempre será limpiado o puesto a cero cuando el dispositivo se resetea,independientemente de la fuente del reset.

2.8. SET DE INSTRUCCIONES

Cada instrucción de la familia base tiene una longitud de 12 bits, la misma se divide en un Código deOperación (Opcode) el cual específica el tipo de instrucción y uno o más operandos que especificanla acción de la instrucción. En la tabla 2.8-01 (Pag. 78) se puede apreciar un set de instruccionesresumido en el cual los grupos se orientan de la siguiente manera:

C Operación orientada a Bytes

C Operación orientada a bits

C Operación orientada a literales y control

Para las operaciones orientadas a Bytes, la “f ” representa un registro de archivo mientras que la “d” representa el destino de la operación. La “f” se puede utilizar para designar uno cualquiera de los32 registros de archivo que pueden ser utilizados por la instrucción (De manera directa), mientrasque el valor numérico de la “d” específica donde se colocará el resultado de la operación, si “d” tieneel valor de “0” , el resultado de la operación se colocará en el registro W (Acumulador), si “d” tieneel valor de “1” el resultado de la operación será colocado en el registro de archivo indicado en lainstrucción.

Page 64: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

37

Para las intrucciones orientadas a bits, la “b” representa la posición o peso del bit dentro del registrode archivo que será afectado por la operación, mientras que la “f” representa el registro de archivoafectado.

Para operaciones orientadas a literales y control, la “k” representa una variable literal o constanteliteral de 8 o 9 bits la cual debe definirse previamente a través de las directivas EQU, VARIABLE oCONSTANT.

Todas las instrucciones se ejecutan dentro de un ciclo de instrucción sencillo a menos que unaverificación de condición resulte verdadera o que el registro contador del programa sea cambiadocomo resultado de una instrucción, en éste caso, la ejecución toma dos ciclos de instrucción. Un ciclode instrucción consiste en cuatro periodos del oscilador, es decir, para un oscilador a cristal de 4Mhzla ejecución normal de un ciclo de instrucción tomaría un tiempo de 1 µSeg (1x10 Segundos). Si-6

una prueba condicional resulta verdadera o el contador del programa se cambia como resultado deuna instrucción, el tiempo de ejecución de la instrucción sera de 2 µSeg (2x10 Segundos)-6

2.8.1. Instrucciones para funciones logicas

2.8.1.1. Andlw k

Sintaxis: [Etiqueta] Andlw k

Operando: 00 h # k # FF h

Bandera afectada: Z

Descripción: Se efectúa un AND lógico entre un valor existente en el acumulador y el valorindicado por el literal k, el resultado de la operación se almacena en elacumulador

;Label Mnemo. Operando ComentarioAnd01 Andlw 0x5F

2.8.1.2. Andwf f,d

Sintaxis: [Etiqueta] Andwf f, d

Operando: 00 h # f # 7F h 00 h # d # 01h

Bandera afectada: Z

Page 65: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

38

Descripción: Se efectúa un AND lógico entre un valor existente en el acumulador y el valorcontenido en el registro de archivo indicado por f , si d=0, el resultado de laoperación se almacena en el acumulador, si d=1, el resultado de la operaciónse almacena en el registro de archivo indicado por f.

;Label Mnemo. Operando ComentarioAnd02 Andwf fsr, 1

2.8.1.3. Iorlw k

Sintaxis: [Etiqueta] Iorlw k

Operando: 00 h # k # FF h

Bandera afectada: Z

Descripción: Se efectúa un OR lógico inclusivo entre un valor existente en el acumuladory el valor indicado en el literal k, el resultado de la operación se almacena enel acumulador.

;Label Mnemo. Operando ComentarioIor01 Iorlw 0x35

2.8.1.4. Iorwf f, d

Sintaxis: [Etiqueta] Iorwf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Z

Descripción: Se efectúa un OR lógico inclusivo entre el valor existente en el acumulador yel valor contenido en el registro de archivo indicado por f , si d=0, el resultadode la operación se almacena en el acumulador, si d=1, el resultado de laoperación se almacena en el registro de archivo indicado por f.

;Label Mnemo. Operando ComentarioIor02 Iorwf Resultado, 0

2.8.1.5. Xorlw k

Sintaxis: [Etiqueta] Xorlw k

Page 66: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

39

Operando: 00 h # k # FF h

Bandera afectada: Z

Descripción: Se efectúa un OR lógico exclusivo entre el valor existente en el acumuladory el valor indicado en el literal k, el resultado de la operación se almacena enel acumulador.

;Label Mnemo. Operando ComentarioXor01 Xorlw 0xAF

2.8.1.6. Xorwf f, d

Sintaxis: [Etiqueta] Xorwf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Z

Descripción: Se efectúa un OR lógico exclusivo entre un valor existente en el acumuladory el valor contenido en el registro de archivo indicado por f , si d=0, elresultado de la operación se almacena en el acumulador, si d=1, el resultadode la operación se almacena en el registro de archivo indicado por f.

;Label Mnemo. Operando ComentarioXor02 Xorwf Registro, 1

2.8.1.7. Comf f, d

Sintaxis: [Etiqueta] Comf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Z

Descripción: El contenido del registro de archivo indicado por f se complementa en formabinaria, es decir, los “0” se cambian a “1” y los “1” se cambian a “0”, si d=0,el resultado de la operación se almacena en el acumulador, si d=1, el resultadode la operación se almacena en el registro de archivo indicado por f.

;Label Mnemo. Operando ComentarioCom01 Comf Reg05, 0

Page 67: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

40

2.8.2. Instrucciones para funciones aritmeticas

2.8.2.1. Addwf f, d

Sintaxis: [Etiqueta] Addwf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: C, DC, Z

Descripción: El contenido del acumulador se suma al registro de archivo indicado por f, sid=0, el resultado de la operación se almacena en el acumulador, si d=1, elresultado de la operación se almacena en el registro de archivo indicado porf.

;Label Mnemo. Operando ComentarioAdd01 Addwf Fsr, 0

2.8.2.2. Subwf f, d

Sintaxis: [Etiqueta] Subwf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: C, DC, Z

Descripción: El contenido del acumulador se resta (A través del metodo de complementoa dos) del registro de archivo indicado por f, si d=0, el resultado de laoperación se almacena en el acumulador, si d=1, el resultado de la operaciónse almacena en el registro de archivo indicado por f.

;Label Mnemo. Operando ComentarioSub01 Subwf Registro, 1

Page 68: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

41

2.8.3. Instrucciones para limpiar registros

2.8.3.1. Clrw

Sintaxis: [Etiqueta] Clrw

Operando: Ninguno

Bandera afectada: Z

Descripción: El contenido del acumulador se limpia o pone a “0”, con lo cual la bandera decero (Z) se pone a “1”

;Label Mnemo. Operando ComentarioClr01 Clrw

2.8.3.2. Clrf f

Sintaxis: [Etiqueta] Clrf f

Operando: 00 h # f # 7F h

Bandera afectada: Z

Descripción: El contenido del registro de archivo indicado por f se limpia o pone a “0”, conlo cual la bandera de cero (Z) se pone a “1”

;Label Mnemo. Operando ComentarioClr02 Clrf Reg_Banderas

2.8.3.3. Clrwdt

Sintaxis: [Etiqueta] Clrwdt

Operando: Ninguno

Bandera afectada: (TO)*, (PD)*

Descripción: La instrucción Clrwdt resetea el Watchdog Timer y el prescaler con lo cuallos bits (TO)* y (PD)* se ponen a “1”

Page 69: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

42

;Label Mnemo. Operando ComentarioClr03 Clrwdt

2.8.4. Instrucciones para incrementar y decrementar

2.8.4.1. Incf f, d

Sintaxis: [Etiqueta] Incf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Z

Descripción: El contenido del registro de archivo indicado por f se incrementa (Alsumársele la unidad), si d=0, el resultado de la operación se almacena en elacumulador, si d=1, el resultado de la operación se almacena en el registro dearchivo indicado por f.

;Label Mnemo. Operando ComentarioInc01 Incf Contador, 1

2.8.4.2. Incfsz f, d

Sintaxis: [Etiqueta] Incfsz f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Ninguna

Descripción: El contenido del registro de archivo indicado por f se incrementa (Alsumársele la unidad), si d=0, el resultado de la operación se almacena en elacumulador, si d=1, el resultado de la operación se almacena en el registro dearchivo indicado por f.

Si el resultado del incremento es “0” la instrucción siguiente se ignora, es decirse le considera como la instrucción NOP, es por éste motivo que se utilizandos ciclos.

Page 70: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

43

;Label Mnemo. Operando ComentarioLazo01 Nop ;Inicio de comprobacionInc02 Incfsz Contador, 1

Goto Lazo01Continuar Incf Acumulador

2.8.4.3. Decf f, d

Sintaxis: [Etiqueta] Decf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Z

Descripción: El contenido del registro de archivo indicado por f se decrementa (Alrestársele la unidad), si d=0, el resultado de la operación se almacena en elacumulador, si d=1, el resultado de la operación se almacena en el registro dearchivo indicado por f.

;Label Mnemo. Operando ComentarioDec01 Decf Contador, 1

2.8.4.4. Decfsz f, d

Sintaxis: [Etiqueta] Decfsz f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Ninguna

Descripción: El contenido del registro de archivo indicado por f se decrementa (Alrestársele la unidad), si d=0, el resultado de la operación se almacena en elacumulador, si d=1, el resultado de la operación se almacena en el registro dearchivo indicado por f.

Si el resultado del decremento es “0” la instrucción siguiente se ignora, esdecir se le considera como la instrucción NOP, es por éste motivo que seutilizan dos ciclos.

;Label Mnemo. Operando ComentarioLazo02 Nop ;Inicio de comprobacionDec02 Decfsz Apuntador, 1

Page 71: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

44

Goto Lazo02Continuar Incf Contador

2.8.5. Instrucciones de rotación e intercambio

2.8.5.1. Rlf f, d

Sintaxis: [Etiqueta] Rlf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: C

Descripción: El contenido del registro de archivo indicado por f se rota un bit hacia laizquierda a través de la bandera de acarreo (Carry), si d=0, el resultado de laoperación se almacena en el acumulador, si d=1, el resultado de la operaciónse almacena en el registro de archivo indicado por f.

;Label Mnemo. Operando ComentarioRlf01 Rlf Reg01, 0

2.8.5.2. Rrf f, d

Sintaxis: [Etiqueta] Rrf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: C

Descripción: El contenido del registro de archivo indicado por f se rota un bit hacia laderecha a través de la bandera de acarreo (Carry), si d=0, el resultado de laoperación se almacena en el acumulador, si d=1, el resultado de la operaciónse almacena en el registro de archivo indicado por f.

;Label Mnemo. Operando ComentarioRrf01 Rrf Reg10, 1

Page 72: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

45

2.8.5.3. Swapf f, d

Sintaxis: [Etiqueta] Swapf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Ninguna.

Descripción: Se ejecuta un intercambio entre el nibble (4 bits) de más peso y el nibble (4bits) de menos peso en el registro de archivo indicado por f. si d=0, elresultado de la operación se almacena en el acumulador, si d=1, el resultadode la operación se almacena en el registro de archivo indicado por f.

;Label Mnemo. Operando ComentarioSwa01 Swapf Salida, 1

2.8.6. Movimiento entre registros

2.8.6.1. Movlw k

Sintaxis: [Etiqueta] Movlw k

Operando: 00 h # k # FF h

Bandera afectada: Ninguna

Descripción: Se carga el acumulador con el valor indicado por el literal k.

;Label Mnemo. Operando ComentarioMov01 Movlw 0x5F

2.8.6.2. Movwf f

Sintaxis: [Etiqueta] Mowf f

Operando: 00 h # f # 7F h

Bandera afectada: Ninguna

Page 73: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

46

Descripción: Se carga el registro de archivo indicado por f con el valor existente en elacumulador.

;Label Mnemo. Operando ComentarioMov02 Movwf Reg_Datos

2.8.6.3. Movf f, d

Sintaxis: [Etiqueta] Movf f, d

Operando: 00 h # f # 7F h 00 h # d # 01 h

Bandera afectada: Z

Descripción: El contenido del registro de archivo indicado por f se mueve a la direcciónindicada por d, si d=0, el resultado de la operación se almacena en elacumulador, si d=1, el resultado de la operación se almacena en el registro dearchivo indicado por f. La utilidad de d=1 es que permite verificar el registrode archivo indicado por f ya que la bandera de cero (Z) se afecta.

;Label Mnemo. Operando ComentarioMov03 Movf Reg03, 1

2.8.6.4. Option

Sintaxis: [Etiqueta] Option

Operando: Ninguno

Bandera afectada: Ninguna

Descripción: El contenido del acumulador se copia en el registro de opciones.

;Label Mnemo. Operando ComentarioOpt01 Option

Page 74: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

47

2.8.7. Instrucciones de llamado y retorno (Subrutinas)

2.8.7.1. Call k

Sintaxis: [Etiqueta] Call k

Operando: 00 h # k # 7FF h

Bandera afectada: Ninguna

Descripción: Esta instrucción ejecuta el llamado de una Subrutina de la siguiente manera,la dirección de retorno (PC+1) se empuja al stack pointer, los bits de peso 0a 7 indicados en el valor de k se coloca en el Program Counter (PC), el bit depeso 8 es puesto a “0” (Limpiado), los bits de peso 9 y 10 se cargan delregistro de estado PA1, PA0 (Pesos 6 y 5). Esta instrucción requiere de dosciclos de máquina.

;Label Mnemo. Operando ComentarioCal01 Call 0x4F

2.8.7.2. Retlw k

Sintaxis: [Etiqueta] Retlw k

Operando: 00 h # k # FF h

Bandera afectada: Ninguna

Descripción: Esta instrucción ejecuta el retorno de una Subrutina cargando en el contadorde programa (PC) el valor existente en el tope de la pila (Dirección deretorno), de igual manera se carga en el acumulador el valor indicado por elvalor de k.

;Label Mnemo. Operando ComentarioRet01 Retlw 0x3F

Page 75: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

48

2.8.8. Instrucciones de salto incondicional

2.8.8.1. Goto k

Sintaxis: [Etiqueta] Goto k

Operando: 00 h # k # 7FF h

Bandera afectada: Ninguna

Descripción: Esta instrucción ejecuta un salto incondicional cargando en el contador delprograma los bits de peso 0 a 8 indicados en el valor de k, los bits de peso 9y 10 se cargan del registro de estado PA1, PA0 (Pesos 6 y 5). Esta instrucciónrequiere de dos ciclos de máquina.

;Label Mnemo. Operando ComentarioJmp01 Goto Comparacion

2.8.9. Instrucciones para el manejo de bits

2.8.9.1. Bcf f, b

Sintaxis: [Etiqueta] Bcf f, b

Operando: 00 h # f # 7F h 00 h # b # 07 h

Bandera afectada: Ninguna

Descripción: El bit de peso indicado por “b” en el registro de archivo indicado por “f” eslimpiado o puesto a “0”.

;Label Mnemo. Operando ComentarioBcf01 Bcf Flag_Reg, 3

2.8.9.2. Bsf f, b

Sintaxis: [Etiqueta] Bsf f, b

Operando: 00 h # f # 7F h

Page 76: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

49

00 h # b # 07 h

Bandera afectada: Ninguna

Descripción: El bit de peso indicado por “b” en el registro de archivo indicado por “f” esdefinido o puesto a “1”.

;Label Mnemo. Operando ComentarioBsf02 Bsf Pto_A, 3

2.8.9.3. Btfsc f, b

Sintaxis: [Etiqueta] Btfsc f, b

Operando: 00 h # f # 7F h 00 h # b # 07 h

Bandera afectada: Ninguna

Descripción: Si el bit de peso indicado por “b” en el registro de archivo indicado por “f” es“0”, la instrucción siguiente se ignora, es decir, se interpreta como lainstrucción NOP. La ejecución de ésta instrucción requiere de dos ciclos demáquina.

;Label Mnemo. Operando ComentarioBtf01 Btfsc Contador, 6

2.8.9.4. Btfss f, b

Sintaxis: [Etiqueta] Btfss f, b

Operando: 00 h # f # 7F h 00 h # b # 07 h

Bandera afectada: Ninguna

Descripción: Si el bit de peso indicado por “b” en el registro de archivo indicado por “f” es“1”, la instrucción siguiente se ignora, es decir, se interpreta como lainstrucción NOP. La ejecución de ésta instrucción requiere de dos ciclos demáquina.

;Label Mnemo. Operando ComentarioBtf02 Btfss Contador, 4

Page 77: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

50

2.8.10. Instrucciones para control del microcontrolador

2.8.10.1. Sleep

Sintaxis: [Etiqueta] Sleep

Operando: Ninguno.

Bandera afectada: (TO)*, (PD)*

Descripción: Esta instrucción carga el Watchdog Timer (WDT) y el prescaler del WatchdogTimer con el valor de 00 h. La bandera del registro de estado (PD)* es puestaa “0” y la bandera del registro de estado (TO)* es puesta a “1”. Bajo estascondiciones el procesador se coloca en un estado de reposo (Sleep) aldetenerse el oscilador externo

;Label Mnemo. Operando ComentarioSlp01 Sleep

2.8.10.2. Tris f

Sintaxis: [Etiqueta] Tris f

Operando: 05 h # f # 07 h

Bandera afectada: Ninguna

Descripción: El valor del registro de estado para el manejo del puerto indicado por “f” secarga desde el acumulador.

;Label Mnemo. Operando ComentarioTri01 Tris Puerto_A

2.8.10.3. Nop

Sintaxis: [Etiqueta] Nop

Operando: Ninguno

Bandera afectada: Ninguna

Descripción: Aunque se realiza el ciclo de máquina en cuanto a búsqueda del código de

Page 78: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

51

operación y su ejecución, no tiene ningún efecto sobre el desempeño delmicrocontrolador. Esta instrucción es muy útil para ajustar con precisiónrutinas de retardo en el tiempo.

;Label Mnemo. Operando ComentarioNop01 Nop

Page 79: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

52

2.9. TABLAS Y FIGURAS

Tabla 2.2-01. Distribución de pines.

PIN CERDIP con Ventana SSOP

PIC16C52 PIC16C55s PIC16C54s/CR54s PIC16C55sPIC16C54s/CR54s PIC16C57s PIC16C56s/CR56s PIC16C57sPIC16C56s/CR56s PIC16CR57s PIC16C58s/CR58s PIC16CR57sPIC16C58s/CR58s

1 RA2 TOCKI RA2 VSS

2 RA3 V RA3 T0CKIDD

3 T0CKI No Conectado T0CKI VDD

4 (MCLR)* / V V (MCLR)* / V VPP SS PP DD

5 V No Conectado V RA0SS SS

6 RB0 RA0 V RA1SS

7 RB1 RA1 RB0 RA2

8 RB2 RA2 RB1 RA3

9 RB3 RA3 RB2 RB0

10 RB4 RB0 RB3 RB1

11 RB5 RB1 RBA RB2

12 RB6 RB2 RB5 RB3

13 RB7 RB3 RB6 RB4

14 V RB4 RB7 VDD SS

15 OSC2 / CLKOUT RB5 V RB5DD

16 OSC1 / CLKIN RB6 V RB6DD

17 RA0 RB7 OSC2 / CLKOUT RB7

18 RA1 RC0 OSC1 / CLKIN RC0

19 RC1 RA0 RC1

20 RC2 RA1 RC2

21 RC3 RC3

22 RC4 RC4

23 RC5 RC5

24 RC6 RC6

25 RC7 RC7

26 OSC2 / CLKOUT OSC2 / CLKOUT

27 OSC1 / CLKIN OSC1 / CLKIN

28 (MCLR)* / V (MCLR)* / VPP PP

Page 80: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

53

Tabla 2.2-02. Características eléctricas

Dispositivo Rango de Programa Oscilador ROM FiltroVoltaje de selección equivalente (MCLR)*

del osciladorexterno

PIC16C52 3.0 - 6.25 Usuario - No

PIC16C54 2.5 - 6.25 Fábrica PIC16CR54A No

PIC16C54A 2.0 - 6.25 Usuario - No

PIC16C54B 3.0 - 5.5 Usuario Véase nota PIC16CR54B Si

PIC16C55 2.5 - 6.25 Fábrica - No

PIC16C55A 3.0 - 5.5 Usuario - Si

PIC16C56 2.5 - 6.25 Fábrica - No

PIC16C56A 3.0 - 5.5 Usuario PIC16CR56A Si

PIC16C57 2.5 - 6.25 Fábrica - No

PIC16C57C 3.0 - 5.5 Usuario PIC16CR57C Si

PIC16CR57C 2.5 - 5.5 Fábrica - Si

PIC16C58A 2.0 - 6.25 Usuario PIC16CR58A Si

PIC16C58B 3.0 - 5.5 Usuario Véase nota PIC16CR58B Si

PIC16CR54A 2.5 - 6.25 Fábrica - Si

PIC16CR54B 2.5 - 5.5 Fábrica - Si

PIC16CR56A 2.5 - 5.5 Fábrica - Si

PIC16CR57B 2.5 - 6.25 Fábrica - Si

PIC16CR58A 2.5 - 6.25 Fábrica - Si

PIC16CR58B 2.5 - 5.5 Fábrica - Si

Nota: Si se cambia éste dispositivo por otro, por favor, verifique las características del oscilador en su aplicación definitiva

Page 81: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

54

Tabla 2.3-01, Características Generales.

Dispositivo Familia Puertos I/O EPROM / ROM RAM

PIC16C52 PIC16C52 12 384 x 12 25 x 8

PIC16C54 PIC16C54s 12 512 x12 25 x 8

PIC16C54A 12 512 x 12 25 x 8

PIC16C54B 12 512 x 12 25 x 8

PIC16CR54A 12 512 x 12 25 x 8

PIC16CR54B 12 512 x 12 25 x 8

PIC16C55 PIC16C55s 20 512 x 12 24 x 8

PIC16C55A 20 512 x 12 24 x 8

PIC16C56 PIC16C56s 12 1024 x 12 25 x 8

PIC16C56A 12 1024 x 12 25 x 8

PIC16CR56A 12 1024 x 12 25 x 8

PIC16C57 PIC16C57s 20 2048 x 12 72 x 8

PIC16C57C 20 2048 x 12 72 x 8

PIC16CR57B 20 2048 x 12 72 x 8

PIC16CR57C 20 2048 x 12 72 x 8

PIC16C58A PIC16C58s 12 2048 x 12 73 x 8

PIC16C58B 12 2048 x 12 73 x 8

PIC16CR58A 12 2048 x 12 73 x 8

PIC16CR58B 12 2048 x 12 73 x 8

Page 82: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

9 - 11EPROM / ROMDe 384 x 12 a

2048 x 12

12

12

8

9 - 11

98

2

55 - 7

8, Bus de Datos

4 4 88

88

4 8 8

6

Registro deInstrucciones

DecodificadorDe

Instrucciones

PC

Pila 1Pila 2

Palabra de ConfiguraciónPin

T0CKI

Watch DogTimer

OSC1 OSC2 (MCLR)*

ProteccionDe

Codigo

Reposo(Sleep)

Oscilador y Control de

TiempoPrescaler delWDT / TMR0

Reg. Opcion “Option”

STATUS

W A L U

TMR0 F S R

Registros deArchivo dePropósitoGeneral

(SRAM)

De W De W De W

RA3:RA0 RB7:RB0 RC7:RC0Dispositivos

De 28 Pines

TRIS A Port A TRIS B Port B TRIS C Port CTRIS 5 TRIS 6 TRIS 7

Tiempo fueraDel WDT

Deshabilitar

8

DirecciónDirecta Dirección Directa

De RAM

55

Figura 2.3-01. Diagrama de bloques de la serie PIC16C5X

Page 83: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

56

Tabla 2.3-02, Descripción de pines para: PIC16C52 / 54s / 56s / 58s

Nombre CERDIP SSOP Tipo Tipo de DescripciónPin Nro. Pin de Pin Buffer

Nro. I/O/P

RA0 17 19 I/O TTL Puerto I/O BidireccionalRA1 18 20 I/O TTLRA2 1 1 I/O TTLRA3 2 2 I/O TTL

RB0 6 7 I/O TTL Puerto I/O BidireccionalRB1 7 8 I/O TTLRB2 8 9 I/O TTLRB3 9 10 I/O TTLRB4 10 11 I/O TTLRB5 11 12 I/O TTLRB6 12 13 I/O TTLRB7 13 14 I/O TTL

T0CKI 3 3 I ST Entrada de reloj para el timer TMR0. Tiene queser unido a Vss o Vdd si no ésta en uso parareducir el consumo de corriente

(MCLR)*/ 4 4 I ST Entrada de reposición maestra (Reset) o EntradaVpp de voltaje para programación. Este pin es activo

en bajo para reponer el dispositivo. El voltaje enéste pin no debe exceder a Vdd para evitar modosde entrada a prueba no intencionales

OSC1 16 18 I ST Entrada para el oscilador a cristal externo o/CLKIN Entrada para una fuente externa de pulsos de reloj

OSC2 / 15 17 O --- Salida del oscilador a cristal. Se conecta al otroCLKOUT pin del cristal o resonador. En modo RC

OSC2=(OSC1)/4, y denota el promedio de tiempodel ciclo de instrucción

Vdd 14 15, 16 P --- Fuente de alimentación positiva para el Chip y lospines I/O.

Vss 5 5, 6 P --- Referencia de tierra para el Chip y los pines I/O.

Leyenda:I = Entrada (Input)O = Salida (Output)P = Energía (Power)--- = No utilizadoTTL = Lógica Transistor Transistor (Transistor Transistor Logic)ST = Disparador de Schmitt (Schmitt Trigger)

Page 84: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

57

Tabla 2.3-03, Descripción de pines para: PIC16C55s / 57s

Nombre CERDIP SSOP Tipo Tipo de DescripciónPin Nro. Pin de Pin Buffer

Nro. I/O/P

RA0 6 5 I/O TTL Puerto I/O BidireccionalRA1 7 6 I/O TTLRA2 8 7 I/O TTLRA3 9 8 I/O TTL

RB0 10 9 I/O TTL Puerto I/O BidireccionalRB1 11 10 I/O TTLRB2 12 11 I/O TTLRB3 13 12 I/O TTLRB4 14 13 I/O TTLRB5 15 15 I/O TTLRB6 16 16 I/O TTLRB7 17 17 I/O TTL

RC0 18 18 I/O TTL Puerto I/O BidireccionalRC1 19 19 I/O TTLRC2 20 20 I/O TTLRC3 21 21 I/O TTLRC4 22 22 I/O TTLRC5 23 23 I/O TTLRC6 24 24 I/O TTLRC7 25 25 I/O TTL

T0CKI 1 2 I ST Entrada de reloj para el timer TMR0. Tiene que unirse a Vss o Vdd si no ésta en uso para reducir el consumode corriente

(MCLR)*/Vp 28 28 I ST Entrada de reposición maestra (Reset) o Entrada dep voltaje para programación. Este pin es activo en bajo

para reponer el dispositivo. El voltaje en éste pin nodebe exceder a Vdd para evitar modos de entrada aprueba no intencionales

OSC1 27 27 I ST Entrada para el oscilador a cristal externo o Entrada/CLKIN para una fuente externa de pulsos de reloj

OSC2 26 26 O --- Salida del oscilador a cristal. Se conecta al otro pin del/CLKOUT cristal o resonador. En modo RC OSC2=(OSC1)/4, y

denota el promedio de tiempo del ciclo de instrucción

Vdd 2 3, 4 P --- Fuente de alimentación positiva para el Chip y lospines I/O.

Vss 4 1, 14 P --- Referencia de tierra para el Chip y los pines I/O.

No Conectado 3,5 --- --- --- No Utilizado

Leyenda:I = Entrada (Input)O = Salida (Output)P = Energía (Power)--- = No utilizadoTTL = Lógica Transistor Transistor (Transistor Transistor Logic)ST = Disparador de Schmitt (Schmitt Trigger)

Page 85: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

PC, Bits de peso 8 a 0

Pila, Nivel 1Pila, Nivel 2

Vector de RESET

Memoria de Programas

Dentro del Chip

CALL, RETLW

000 h

17F h

MemoriaDe

Usuario

9

Página 0

58

Figura 2.3-02. Ciclo de instrucción y reloj

Figura 2.3-03. Encauzamiento del flujo de instrucciones

Figura 2.4-01. Mapa de memoria y pila del PIC16C52

Page 86: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

PC, Bits de peso 8 a 0

Pila, Nivel 1Pila, Nivel 2

Vector de RESET

Memoria de Programas

Dentro del Chip

CALL, RETLW

000 h

1FF h

MemoriaDe

Usuario

9

Página 0 0FF h100 h

59

Figura 2.4-02. Mapa de memoria y pila del PIC16C54s / 55s

Figura 2.4-03. Mapa de memoria y pila del PIC16C56s

Page 87: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

PC, Bits de peso 10 a 0

Pila, Nivel 1Pila, Nivel 2

CALL, RETLW

000 h

0FF h100 h

1FF h200 h

2FF h300 h

3FF h400 h

4FF h500 h

5FF h600 h6FF h700 h

7FF h

Memoria de Programas Dentro del Chip

Página 0

11

Memoria de Programas Dentro del Chip

Página 2

Memoria de Programas Dentro del Chip

Página 1

Memoria de Programas Dentro del Chip

Página 3

Vector de RESET

MemoriaDe

Usuario

Registro de archivo

00 h

01 h

02 h

03 h

04 h

05 h

06 h

07 h08 h

1F h

0F h10 h

INDF (1)

TMR0

PCL

STATUS

FSR

PUERTO A

PUERTO B

PUERTO C (2)

Registros de Archivo

DePropositoGeneral

(1) No es un registro de archivo físico(2) Solamente los PIC16C55s y PIC16C57s, para los

demás es un registro de archivo de propósito general

60

Figura 2.4-04. Mapa de memoria y pila del PIC16C57s / 58s

Figura 2.4-05. Mapa de los registros de archivo básicos para la familia PIC16C5X

Page 88: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

FSR, Bits 6 y 5

Registros de archivo

00 01 10 11

00 h

01 h

02 h

03 h

04 h

06 h

07 h

05 h

0F h10 h

1F h

20 h 40 h 60 h

2F h 4F h 6F h

30 h 50 h 70 h

3F h 5F h 7F h

INDF (1)

TMR0

PCL

STATUS

FSR

PUERTO A

PUERTO B

Registros deArchivo dePropósitoGeneral

Registros deArchivo dePropósitoGeneral

Registros deArchivo dePropósitoGeneral

Registros deArchivo dePropósitoGeneral

Registros deArchivo dePropósitoGeneral

(1) No es un registro de archivo físico.

Estas direcciones recaen

En el banco 0 de memoria

Banco 0 Banco 1 Banco 2 Banco 3

PUERTO C

FSR, Bits 6 y 5

Registros de archivo

00 01 10 11

00 h

01 h

02 h

03 h

04 h

06 h

07 h

05 h

0F h10 h

1F h

20 h 40 h 60 h

2F h 4F h 6F h

30 h 50 h 70 h

3F h 5F h 7F h

INDF (1)

TMR0

PCL

STATUS

FSR

PUERTO A

PUERTO B

Registros deArchivo dePropósitoGeneral

Registros deArchivo dePropósitoGeneral

Registros deArchivo dePropósitoGeneral

Registros deArchivo dePropósitoGeneral

Registros deArchivo dePropósitoGeneral

(1) No es un registro de archivo físico.

Estas direcciones recaen

En el banco 0 de memoria

Banco 0 Banco 1 Banco 2 Banco 3

61

Figura 2.4-06. Mapa de los registros de archivo para el PIC16C57s

Figura 2.4-07. Mapa de los registros de archivo para el PIC16C58s

Page 89: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

62

Tabla 2.4-01. Banderas del registro de estado

Registro: STATUS W: EscrituraDirección: 03h R: LecturaValor en P.O.R.: 0001 1XXX U: No Implementado, se lee como 0(TO)*, (PD)* sólo pueden ser Definidos (Set) o Limpiados P.O.R.: Reposición por Encendido (Power On (Cleared) Reset)

X: Que puede tomar cualquier valor

7 6 5 4 3 2 1 0

PA2 PA1 PA0 (TO)* (PD)* Z DC C

R/W R/W R/W R R R/W R/W R/W

PA2Este bit no se encuentra implementado en éste momento. La utilización del PA2 como un bit de Lectura o Escritura depropósito general no se recomienda, ya que éste puede afectar la capacidad de portabilidad futura hacia nuevos productos.

PA1/PA0Bits de preselección de la página programa. Solamente PIC16C56s y PIC16C57s00 = Banco 0 (000h - 1FFh)01 = Banco 1 (200h - 3FFh)10 = Banco 2 (400h - 4FFh)11 = Banco 3 (600h - 7FFh)Cada banco es de 512 palabras. La utilización del PA1:PA0 como bits de Lectura o Escritura de propósito general endispositivos que no tengan la posibilidad de utilización de la preselección de la página de programa, no se recomienda, ya quese puede afectar la capacidad de portabilidad futura hacia nuevos productos.

(TO)*Bit de tiempo fuera (Cumplimiento de temporización).1 = Después de una reiniciación por encendido, o después de la ejecución de las instrucciones CLRWDT o SLEEP.0 = Por la ocurrencia de un “Tiempo Fuera” por efecto del Watchdog timer.

(PD)* Bit indicativo de caída de tensión1 = Después del encendido o por la ejecución de la instrucción CLRWDT0 = por la ejecución de la instrucción SLEEP

ZBit de la bandera de cero.1 = El resultado de la operación lógica o aritmética es “0".0 = El resultado de la operación lógica o aritmética no es “0".

DCBit de la bandera de acarreo auxiliar o bit de la bandera de préstamo auxiliar (Borrow bit)*, (Si el resultado excede de 4bits). Para las instrucciones ADDWF y ADDLW.1= Se a generado acarreo desde el 4º bit (Nibble menos significativo) hacia el 5º bit (Nibble más significativo).0= No se a generado acarreo desde el 4º bit (Nibble menos significativo) hacia el 5º bit (Nibble más significativo).Nota: Para el caso del préstamo se produce el valor inverso (Polaridad Invertida).

CBit de bandera de acarreo o bit de la bandera de préstamo (Borrow bit)*Para las instrucciones ADDWF y ADDLW1= Se a generado un acarreo desde el bit más significativo del acumulador como resultado de la operación. Es de

hacer notar que la sustracción se efectúa por la adición del complemento a dos del segundo operando. Para lasinstrucciones de rotación (RRF, RLF) el valor del Carry se carga en el bit más significativo o en el bit menossignificativo (Según el sentido de rotación) del registro bajo acción de rotación.

0= No se a generado acarreo desde el bit más significativo del resultado de la operación.Nota: Para el caso del préstamo se produce el valor inverso (Polaridad Invertida).

Page 90: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

63

Tabla 2.4-02. Registro de opciones

Registro: OPTION W: EscrituraDirección: No Disponible U: No implementado, se lee como 0Valor P.O.R.: FFh P.O.R.: Power On Reset

Bit 7 6 5 4 3 2 1 Bit 0

U U W W W W W W

- - T0CS T0SE PSA PS2 PS1 PS0

T0CSBit del TMR0 que define la fuente de pulsos de reloj1= Transición en el pin T0CKI0= Ciclo de reloj para instrucciones internas (CLKOUT)

T0SEBit del TMR0 que define el tipo de transición de la fuente de pulsos de reloj1= Incrementar en una transición de alto a bajo en el pin del T0CKI0= Incrementar en una transición de bajo a alto en el pin del T0CKI

PSABit de asignación del contador (Prescaler)1= Contador (Prescaler) asignado al Watchdog Timer (WDT)0= Contador (Prescaler) asignado al módulo del timer (TMR0)

PS2, PS1, PS0Bits que definen el valor máximo de conteo del prescaler y relación de las tasas de tiempo delWatchdog Timer y el TMR0.

PS2 PS1 PS0 Taza del TMR0 Taza del WDT

0 0 0 1 : 2 1 : 1

0 0 1 1 : 4 1 : 2

0 1 0 1 : 8 1 : 4

0 1 1 1 : 16 1 : 8

1 0 0 1 : 32 1 : 16

1 0 1 1 : 64 1 : 32

1 1 0 1 : 128 1 : 64

1 1 1 1 : 256 1 : 128

Page 91: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

64

Figura 2.4-08. Instrucciones de salto para los PIC16C52 / 54s / 55s

Figura 2.4-09. Instrucciones de salto para los PIC16C56s

Figura 2.4-10. Instrucciones de salto para los PIC16C57s / 58s

Page 92: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

65

Figura 2.4-11. Direccionamiento directo e indirecto

Tabla 2.4-03. Eventos que afectan los bits (TO)* y (PD)* del registro de estado

Evento (TO)* (PD)* Nota

Encendido 1 1

Reset por WDT 0 X No afecta (PD)*

Instrucción SLEEP 1 0

Instrucción CLRWDT 1 1

Tabla 2.4-04. Estado de los bits (TO)* y (PD)* después de un reset.

(TO)* (PD)* Resetcausado por

0 0 Restablecimiento (Wake Up From Sleep) por WDT

0 1 Tiempo Fuera por Watchdog Timer (Fuera de un SLEEP)

1 0 Restablecimiento por pin (MCLR)*

1 1 Encendido

U U équivalente a un Pulso bajo en el pin (MCLR)*

Page 93: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

66

Figura 2.5-01. Circuito equivalente para un pin sencillo I/O

Figura 2.6-01. Diagrama de bloques del TMR0

Figura 2.6-02. Estructura eléctrica del pin T0CKI

Page 94: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

MUX

MUX

MUX

Pin T0CKI

T0SE T0CSPSA

2 CiclosParaSinc.

TMR0

Bus de Datos

8 Bits

TCY = Fosc / 4

01

0

0

0

1

1

1

Prescaler de 8 Bits

MUX de 8 a 1 PS2, PS1, PS0

8

PSAMUX

Tiempo Fuera, WDT

WatchDog

Timer

WDT

Bit de habilitación del WDT

MUX; Multiplexor

T0SE, T0CS, PSA, PS2, PS1, PS0, se encuentran en el registro de Opciones (OPTION)

PSA

67

Figura 2.6-03. Diagrama de bloque del prescaler del TMR0 / Watchdog Timer

Tabla 2.7-01. Palabra de configuración para los PIC16C5X.

Registro de configuración especificaciones de programación de cada dispositivoPara referencias particulares se recomienda revisar las

en particular

Bit 11 10 9 8 7 6 5 4 3 2 1 Bit 0

- - - - - - - - CP WDTE FOSC1 FOSC0

Del bit de peso 11 al bit de peso 4, no se encuentran implementados en la serie estandar, se leen como “0”

CP: Bit de protección de codigo 1 = Protección de código deshabilitada 0 = Protección de código habilitada

WDTE: Bit de habilitación del Watchdog Timer 1 = Watchdog Timer habilitado 0 = Watchdog Timer deshabilitado

FOSC1:FOSC2: Bits de selección del tipo de oscilador externo 00 = Oscilador por cristal de cuarzo de bajo consumo (LP) 01 = Oscilador por cristal o resonador de cuarzo (XT) 10 = Oscilador por cristal o resonador de cuarzo de alta velocidad (HS) 11 = Oscilador por circuito RC (RC)

Page 95: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

C1

C2

XTAL

RS

OSC1

OSC2

RF

PIC16C5X

Reposo

Nota

Nota: Se puede requerir un resistor en seriepara cristales de corte Strip AT

68

Figura 2.7-01.Configuración de los osciladores LP, XT, HS

Figura 2.7-02. Operación con una entrada de reloj externo

Tabla 2.7-02, Selección del capacitor para resonadores cerámicos

Modo del Oscilador Frecuencia de Rango de Rango deresonancia capacitancia para capacitancia para

C1 C2

X T 2.0 MHz 15 - 68 Pf 15 - 68 Pf455 KHz 68 - 100 Pf 68 - 100 Pf

4.0 MHz 10 - 100 Pf 10 - 100 Pf

H S 8.0 MHz 10 - 68 Pf 10 - 68 Pf16.0 MHz 10 - 10 Pf 10 - 10 Pf

Page 96: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

69

Tabla 2.7-03, Selección del capacitor para cristal oscilador

Modo del Oscilador Frecuencia de Rango de capacitancia Rango de capacitanciaresonancia para C1 para C2

L P 32 Khz † 33 - 68 Pf 33 - 68 Pf200 KHz 15 - 33 Pf 15 - 33 Pf

X T 100 KHz 68 - 100 Pf 68 - 100 Pf2.0 MHz 10 - 22 Pf 10 - 22 Pf4.0 MHz 10 - 22 Pf 10 - 22 Pf

H S 8 MHz 22 - 47 Pf 22 - 47 Pf20 MHz 22 - 47 Pf 22 - 47 Pf

† Para V > 4.5 Volt, C1 = C2 = 30 Pf, es lo recomendado.DD

Figura 2.7-03. Circuito para un cristal o resonador externo en paralelo, Tipos LP, XT, HS

Figura 2.7-04. Circuito para un cristal o resonador externo en serie, Tipos LP, XT, HS

Figura 2.7-05. Circuito para un oscilador en modo RC.

Page 97: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Frecuencias Normalizadas a 25 ‘C

0.88

0.90

0.92

0.94

0.96

0.98

1.00

1.02

1.04

1.06

1.08

1.10

0 10 20 25 30 50 60 7040

T en EC

FOSCFOSC@25 EC

VDD = 5.5 V

VDD = 3.5 V

70

Tabla 2.7-04. Frecuencias típicas de osciladores RC

Cext. Rext. Promedio de frecuencia @5V, 25 ºC

20 pF 5 KÙ 3.82 Mhz ±21%3.3 KÙ 4.973 Mhz ±27%

10 KÙ 2.22 Mhz ±21%100 KÙ 262.15 KHz ±31%

100 pF 5 KÙ 1.19 Mhz ±13%3.3 KÙ 1.63 Mhz ±13%

10 KÙ 684.64 Khz ±18%100 KÙ 71.56 Khz ±25%

300 pF 5 KÙ 484.1 Khz ±14%3.3 KÙ 660 Khz ±10%

10 KÙ 267.63 Khz ±15%160 KÙ 29.44 KHz ±19%

Figura 2.7-06. Frecuencia típica del oscilador RC vs la temperatura

Page 98: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

5.5

5.0

4.5

4.0

3.5

3.0

2.5

2.0

1.5

1.0

0.5

0.0

Mhz

3.0 3.5 4.0 4.5 5.0 5.5 6.0

VDD, Voltios

Rext = 3K3

Rext = 5K

Rext = 10K

Rext = 100K

Cext = 20 pF

71

Figura 2.7-07. Frecuencias típicas del oscilador RC vs V , Cext. = 20 pF, T = 25 ECDD

Page 99: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

2.2

2.0

1.8

1.6

1.4

1.2

1.0

0.8

0.6

0.4

0.2

0.0

Mhz

3.0 3.5 4.0 4.5 5.0 5.5 6.0

VDD, Voltios

Rext = 5K

Rext = 3K3

Rext = 10K

Rext = 100K

Cext = 100 pF

72

Figura 2.7-08. Frecuencias típicas del oscilador RC vs V , Cext. = 100 pF, T = 25 ECDD

Page 100: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

1200

1000

900

800

700

600

500

400

300

200

100

0.0

Khz

3.0 3.5 4.0 4.5 5.0 5.5 6.0VDD, Voltios

Rext = 5K

Rext = 3K3

Rext = 100K

Cext = 300 pF

Rext = 10K

73

Figura 2.7-09. Frecuencias típicas del oscilador RC vs V , Cext. = 300 pF, T = 25 ECDD

Page 101: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

74

Tabla 2.7-05. Estado de los bits (TO)* y (PD)* después de un reset.

(TO)* (PD)* Reset causado por:

0 0 Reset del Watchdog Timer durante un estado sleep

0 1 Reset del Watchdog Timer fuera de un estado sleep

1 0 Reset por nivel bajo en pin (MCLR)* durante un estado sleep

1 1 Reset por encendido

u u Reset por un pulso de nivel bajo en el pin (MCLR)*

Leyenda: u = Sin cambios

Tabla 2.7-06. Condiciones de reset para todos los registros.

Registro Direccion Reset por Reset por (MCLR) oencendido Watchdog Timer

W No Disponible xxxx xxxx uuuu uuuu

TRIS No Disponible 1111 1111 1111 1111

OPTION No Disponible 0011 1111 0011 1111

INDF 00h 0000 0000 0000 0000

TMR0 01h xxxx xxxx uuuu uuuu

PCL 02h 1111 1111 1111 1111

STATUS 03h 0001 1xxx 000? ?uuu ^

FSR 04h xxxx xxxx 1uuu uuuu

PORTA 05h 0000 xxxx 0000 uuuu

PORTB 06h xxxx xxxx uuuu uuuu

PORTC 07h xxxx xxxx uuuu uuuu

Registros de propósito general 08h - 7Fh xxxx xxxx uuuu uuuu

Leyenda:u = Sin Cambios; x = Desconocido; ? = El valor depende de la condicion^ Véase la tabla 2.7-06 para valores de reset por condiciones específicas

Page 102: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

75

Tabla 2.7-07. Condiciones de reset para registros especiales

Condicion Registro STATUSDirección: 03h

Reset por (MCLR)* durante operación normal 000u uuuu

Reset por (MCLR)* durante periodo sleep 0001 0uuu

Reset por Watchdog Timer durante operación normal 0000 1uuu

Reset por Watchdog Timer durante periodo sleep 0000 0uuu

Leyenda: u = Sin Cambios

Figura 2.7-10. Diagrama de bloques simplificado del circuito de reset interno

Figura 2.7-11. Secuencia de tiempo fuera al energizar, (MCLR)* no unido a V , condición DD

NORMAL

Page 103: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

76

Figura 2.7-12. Secuencia de tiempo fuera al energizar, (MCLR)* unido a V , Tiempo de subida enDD

V muy RAPIDO.DD

Figura 2.7-13. Secuencia de tiempo fuera al energizar, (MCLR)* unido a V , Tiempo de subida enDD

V muy LENTODD

Figura 2.7-14. Circuito de reset externo. Para un tiempo de subida en V muy lento o muy rápidoDD

Page 104: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

77

Figura 2.7-15. Circuito de reset externo. Primer esquema.

Figura 2.7-16. Circuito de reset externo. Segundo esquema.

Figura 2.7-17. Diagrama de bloques del Watchdog Timer

Page 105: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

78

Tabla 2.8-01. Sumario del set de instrucciones

Instruccion Descripcion Ciclos Bandera NotaAfectada

Operación orientada a nivel de Bytes

ADDWF f, d Suma el acumulador y el registro f 1 C, DC, Z 1,2,4

ANDWF f, d AND lógico entre el acumulador y el registro f 1 Z 2,4

CLRF f Limpia el registro f 1 Z 4

CLRW Limpia el acumulador 1 Z

COMF f, d Complementa el registro f 1 Z

DECF f, d Decrementa el registro f 1 Z 2,4

DECFSZ f, d Decrementa el registro f. Ignorar siguiente 1 (2) Ninguna 2,4instrucción si es “0”

INCF f, d Incrementa el registro f 1 Z 2,4

INCFSZ f, d Incrementa el registro f. Ignorar siguiente 1 (2) Ninguna 2,4instrucción si es “0”

IORWF f, d OR Inclusivo entre acumulador y el registro f 1 Z 2,4

MOVF f, d Mover el registro f 1 Z 2,4

MOVWF f Mover el acumulador al registro f 1 Ninguna 1,4

NOP No operar 1 Ninguna

RLF f, d Rotar a la izquierda a través del Carry 1 C 2,4

RRF f, d Rotar a la derecha a través del Carry 1 C 2,4

SUBWF f, d Restar del registro f el valor del acumulador 1 C, DC, Z 1,2,4

SWAPF f, d Intercambiar nibbles en el registro f 1 Ninguna 2,4

XORWF f, d OR Exclusivo del acumulador con el registro f 1 Z 2,4

Operación orientada a nivel de bits

BCF f, d Limpiar el bit en el registro f 1 Ninguna 2,4

BSF f, d Definir el bit en el registro f 1 Ninguna 2,4

BTFSC f, d Verificación del bit en el registro f. Ignorar 1 (2) Ningunasiguiente Instrucción si es “0”

Page 106: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Instruccion Descripcion Ciclos Bandera NotaAfectada

79

BTFSS f, d Verificación del bit en el registro f. Ignorar 1 (2) Ningunasiguiente Instrucción si es “1”

Operación orientada a literales y control

ANDLW k AND lógico entre el literal y el acumulador 1 Z

CALL k Llamada a Subrutina 2 Ninguna 1

CLRWDT k Limpiar el Watchdog Timer 1 (TO)*(PD)*

GOTO k Salto incondicional 2 Ninguna

IORLW k OR Inclusivo entre el literal y el acumulador 1 Z

MOVLW k Mover literal al acumulador 1 Ninguna

OPTION k Cargar el registro OPTION con el literal 1 Ninguna

RETLW k Retornar copiando el literal en el acumulador 2 Ninguna

SLEEP Activar modo de reposo 1 (TO)*(PD)*

TRIS f Cargar el acumulador en el registro TRIS 1 Ninguna 3

XORLW k OR Exclusivo entre el literal y el acumulador 1 Z

Nota 1: El bit de peso 9 del Contador de Programa podrá ser “0” si cualquier instrucción tratade escribir en el Contador de Programa, a excepción de la instrucción GOTO. Se recomiendarevisar las especificaciones de cada dispositivo

Nota 2: Cuando un puerto se modifica a si mismo por una instrucción MOV PUERTOB, 1; elvalor presente en el pin será utilizado para cambiar el estado de ese pin en el puerto (Entrada /Salida)

Nota 3: La instrucción TRIS f implica que el valor existente en el acumulador sea utilizadopara configurar el estado del puerto f, un valor de “1” hace que el pin correspondiente al pesodel bit sea habilitado para la lectura solamente

Nota 4: Si ésta instrucción es ejecutada en el registro TMR0 (y cuando sea aplicable, d=1), elprescaler podrá ser limpiado si fue asignado al TMR0

Page 107: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

80

Page 108: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

El código objeto relativo se refiere a código binario que se encuentra en direcciones de26

memoria no absolutas, por el concepto de módulos y enlazamiento.

81

3. MPASSEMBLER, Microchip

3.1. DEFINICION

MPASSEMBLER (MPASM) es una aplicación para PC basada en MS-DOS que provee la plataformapara desarrollar el código de los programas fuente para los Microcontroladores de la Microchip,incluyendo las familias PIC 16C5X, PIC 16CXX, PIC 17CXX y series futuras. De manera genérica,MPASM puede ser referido enteramente como una plataforma de desarrollo que incluye el MacroAssembler y funciones utilitarias, específicamente como:

3.1.1. MpAsm

Se refiere al programa que realiza la compilación, es decir, que genera el código objeto absoluto apartir del código objeto relativo y el código fuente en Assembler.26

3.1.2. MpLink

Se refiere al programa enlazador que traslada el código objeto relativo al código binario ejecutableabsoluto en localizaciones de memoria especificas.

3.1.3. MpLib

Se refiere a las librerías de utilidades que permite que los códigos objetos relativos sean agrupadosen un sólo archivo o librería. Por conveniencia estas librerías pueden ser referenciadas por vía delMPLINK como un archivo objeto de salida desde el MPASM.

En la tabla 3.1-01 (Pag. 90), se observa la extensión de todos los archivos utilizados y generados porel MpAsm.

3.2. ALGUNOS TERMINOS

Cón el objeto de proveer un cuadro común de referencia, se definen a continuación algunos términos.

Page 109: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

82

3.2.1. Ensamblar

El acto de ejecutar el macro Assembler del MPASM para trasladar el código fuente a código demáquina o código objeto (Binario).

3.2.2. Directivas

Las directivas proporcionan el control de las operaciones de ensamblado al decirle al MPASM cómotiene que tratar los Mnemónicos, definición de los datos y el formato del archivo listado de salida, Lasdirectivas hacen el código fácil de interpretar y proveen las salidas específicas en concordancia conlas necesidades del usuario.

3.2.3. Archivo Hexadecimal

Este archivo contiene el código de máquina definitivo que va a cargarse en el microcontrolador. Esteformato sólo es leíble por un dispositivo programador.

3.2.4. Enlazamiento

El enlazamiento o enlazado, se refiere a la traslación de los códigos objetos relativos al código demáquina definitivo que va a ser ejecutado por el microcontrolador, las direcciones absolutas dememoria son asignadas durante éste procedimiento.

3.2.5. Archivo Listado

Un archivo listado, es un archivo en texto ASCII que muestra el código de máquina generado porcada instrucción en Assembler, las directivas del MPASM o por los macros encontrados en el códigofuente. El archivo de listado absoluto muestra la colección de todos los objetos (Códigos) relativosjuntos, dentro de su dirección absoluta en la memoria del Microcontrolador de la familia PIC 16/17,donde las direcciones relativas se pueden ver en éste archivo relacionadas directamente con el códigomacro Assembler.

3.2.6. Macro

Un macro consiste de una secuencia de comandos en Assembler, es decir es una Subrutina de usogeneral. El hecho de pasar los argumentos de la operación al macro incrementa la funcionalidadgeneral.

Page 110: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

83

3.2.7. Mnemónicos

Estas son las instrucciones que se trasladan directamente al código de máquina (Código objeto). Seutilizan para realizar las operaciones aritméticas y lógicas en los datos del programa o en los datosde la memoria de los PIC 16/17.

También tienen la habilidad de mover los datos desde y hacia los registros con respecto a la memoria,así como también los saltos condicionados hacia direcciones específicas de memoria. Todos éstos seconocen como los Códigos Operativos (Opcodes).

3.2.8. PIC 16/17

PIC 16/17 se refiere al conjunto de Microcontroladores de la Microchip, incluyendo las familias delos Microcontroladores PIC 16C5X, PIC 16CXX y PIC17CXX.

3.2.9. Código Objeto Relativo

Es una unidad de código intermedio que puede no tener una dirección base absoluta en la memoriade los PIC 16/17. Esta dirección base absoluta se asigna durante el tiempo de enlazado.

3.2.10. Código Fuente

Este es el archivo de instrucciones de los PIC16/17 y de las directivas y macros del MPASM que sontrasladados a código de máquina. Este código fuente también es el utilizado por los simuladores oemuladores de los PIC 16/17 a objeto de perfeccionar o depurar el programa fuente. Este es unarchivo de texto ASCII, el cual puede crearse con cualquier editor de texto, siendo necesario asignarlela extensión ASM (*.asm).

3.3. ENTORNO

3.3.1. Introducción

MPASM provee una plataforma universal para ensamblar el código fuente de los PIC 16/17. Esteproducto ésta representado por diferentes programas como se discutió previamente (MPASM,MPLINK y MPLIB). Este segmento se dedica a describir los comandos de línea y las Interfaces

Page 111: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Shells o Interfaces, són programas que facilitan al usuario la realización de las diferentes27

actividades.

84

(Shells) de usuario del MPASM.27

3.4. INTERFACE DE COMANDOS EN LINEA

Se refiere a los comandos utilizados para el ensamblado directo de los programas fuente con susopciones, en el caso del MPASM, se puede ejecutar el mismo indicándole el nombre del archivo aensamblar como línea de comando. En ausencia de cualquier opción de línea de comando o delnombre del archivo, un Shell preestablecido puede ser ejecutado. Véase la tabla 3.4-01 (Pag. 90).

El MPASM puede ser invocado con sus opciones de líneas de comando como se indica acontinuación:

MPASM [/Opción] [/Opción] [/Opción] ... [Nombre_Archivo.Asm]oMPASMWIN [/Opción] [/Opción] [/Opción] ... [Nombre_Archivo.Asm]

Donde :

* Lo que se encuentra dentro del corchete [...] es opcional.

* Opción [+, -], se refiere a la opción de la línea de comandos, + para activarla, - paradesactivarla, + por defecto, ejemplo: c +; e -

* Nombre_Archivo.Asm, se refiere al nombre del archivo que se desea compilar, es convenienteque se halle dentro del directorio en el cual se encuentran los archivos del MPASM, de locontrario es necesario indicar el camino, ruta o Vía de Acceso (Path).

3.5. INTERFACE PARA MS-DOS

3.5.1. Introducción

Esta interface o Shell muestra las opciones mínimas que el programador debe definir en modo detexto, En ésta pantalla se puede definir el nombre del archivo fuente que se busca ensamblar y otrainformación de carácter general.

Para cambiar entre campos se debe utilizar la tecla del Tabulador (TAB), para seleccionar una

Page 112: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

85

opción del menú se utilizan las teclas de flechas, para aceptar la opción seleccionada se utiliza la tecla

Enter, Return o 5. En la figura 3.5-01 (Pag. 91), se ilustra la presentación del shell de interface parael DOS.

3.5.2. Archivo Fuente (Source File)

Se refiere al nombre del archivo, en el cual se debe incluir el camino o ruta del MSDOS si el mismono se encuentra en el directorio actual. También se pueden utilizar los Comodines(* o ?) delMSDOS. Si se utilizan los comodines se muestra una lista de todos los archivos que concuerden paraseleccionar el buscado.

3.5.3. Tipo de microprocesador (Micro Processor Type)

Si no se define el tipo de microprocesador en el archivo fuente (Directiva List o Processor), se deberáutilizar éste campo para seleccionarlo, se utilizan las teclas de flechas del cursor para buscarlo de entre

los tipos mostrados, para seleccionarlo utilice la tecla Enter, Return o 5.

3.5.4. Archivo de Errores (Error File)

Por defecto se crea un archivo de errores de la forma: Nombre_Archivo.Err. Para desactivar éstaopción se debe seleccionar NO del menú correspondiente (Presionando la tecla de flecha hacia abajo).Si se desea dejar activa la opción pero se quiere cambiar su nombre, se debe presionar la tecla TABpara moverse a la región sombreada y luego escribir el nuevo nombre. En ésta opción no se permitenlos comodines.

3.5.5. Archivo de Referencia General (Cross Reference File)

En éste archivo se indican todas las referencias a bloques de código o archivos que se incluirán en elarchivo de código objeto absoluto. Las opciones de creación o el nombre del archivo(Nombre_Archivo.Xrf), se modifican siguiendo el mismo procedimiento definido para el archivo deerrores.

3.5.6. Archivo de Listado (Listing File)

En éste archivo se muestra el total de las actividades realizadas al compilar el código fuente. Lasopciones de creación o el nombre del archivo (Nombre_Archivo.Lst), se modifican siguiendo elmismo procedimiento definido para el archivo de errores.

Page 113: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

86

3.5.7. Tipo de salida Hexadecimal (HEX Dump Type)

Las opciones de creación o el nombre del archivo (Nombre_Archivo.Hex), se modifican siguiendoel mismo procedimiento definido para el archivo de errores.

3.5.8. Ensamblar en un Archivo Objeto (Assemble to Object File)

Habilitando ésta opción se puede generar el archivo de código objeto relativo que se utiliza comoentrada al Enlazador y suprime la generación del archivo hexadecimal. Este es modificado por elarchivo de errores.

3.6. INTERFACE PARA WINDOWS

3.6.1. Introducción

MPASM provee también de una interface para Windows a través de la cual se pueden seleccionarvarias opciones como en el caso de la interface para MS-DOS, sólo que en ésta oportunidad para éstainterface se dispone de un mayor control sobre el programa ensamblador debido al incremento delnúmero de las opciones.

En la figura 3.6-01 (Pag. 92), se muestra la pantalla de compilación para el MPASM para Windows.

3.6.2. Radix

Tiene precedencia sobre el radix definido en el archivo fuente

3.6.3. Nivel de alerta (Warning Level)

Tiene precedencia sobre el nivel definido en el archivo fuente

3.6.4. Salida Hexadecimal (Hex Output)

Tiene precedencia sobre el tipo de salida definido en el archivo fuente

Page 114: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

87

3.6.5. Archivos generados (Generated Files)

Habilita / Deshabilita los diversos archivos de salida generados

3.6.6. Sensibilidad al tipo de letra (Case Sensitive)

Habilita / Deshabilita la detección de minúsculas / mayúsculas

3.6.7. Expansión de los macros (Macro Expansion)

Tiene precedencia sobre la opción definida en el archivo fuente

3.6.8. Procesador (Processor)

Tiene precedencia sobre la selección hecha en el archivo fuente

3.6.9. Tamaño del tabulador (Tab Size)

Define el tamaño del tabulador utilizado en el archivo de listado general

3.6.10. Opcines Extra (Extra Options)

Véase la interface de comandos en línea. Apartado 3.4

3.6.11. Guardar configuración (Save Settings)

Guarda estas definiciones en el archivo MPLAB.INI

3.7. FORMATO DEL CODIGO FUENTE

3.7.1. Introducción

El archivo de código fuente se crea utilizando cualquier editor de texto ASCII (Como el Edit delMS-DOS), y debe realizarse cumpliendo con los siguientes requisitos:

Page 115: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

88

Cada línea (Fila) del archivo fuente puede contener los siguientes cuatro tipos de información.

* Etiquetas (Label)

* Mnemónicos

* Operandos

* Comentarios

El orden y la posición de éstos es muy importante debiendo cumplirse las siguientes características:

* Las Etiquetas deben comenzar en la columna número Uno

* los Mnemónicos pueden comenzar en la columna Dos o posteriores

* los operandos siguen a los mnemónicos separados por al menos un espacio

* los comentarios pueden seguir a los operandos, Mnenomicos o las etiquetas y puedencomenzar en cualquier columna, se distinguen de todos los demás porque DEBEN iniciarsecon un punto y coma ( ;), el ancho máximo de cualquier fila es de 255 caracteres.

* Como se refirió en los apartados anteriores, uno o más espacios deben separar las etiquetasde los mnemónicos y los mnemónicos de los operandos. Los operandos múltiples deben estarseparados entre si por una coma (,). Se sugiere la siguiente estructura:

;;Titulo o Comentarios generales sobre el programa;;Label Mnemo Operando Comentario;

A continuación se definen los tipos de información que implican cada una de las columnas anteriores

3.7.2. Label (Etiquetas)

Todas las etiquetas comienzan en la columna Uno, pueden ir seguidos a continuación por un espacio,tabulación, dos puntos (:) o un final de línea.

Las etiquetas deben comenzar con un caracter alfabético o una barra de subrayado (_), pudiendodespués continuar con caracteres alfabéticos, números, barras de subrayado o signos de interrogación.

Las etiquetas pueden tener hasta 32 caracteres de longitud, por defecto el MPASM (ProgramaEnsamblador) es sensible a la detección de minúsculas, es decir: “Hola” es diferente de “hola” a

Page 116: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

89

causa de la “H”. Esta opción puede ser modificada por el programador desde la línea de comandoso las Interfaces de Usuario (Shells). Cuando los dos puntos (:) son colocados como la parte finalde la etiqueta, éstos se tratan como un operador de etiquetas y no como parte de la etiqueta en símisma.

3.7.3. Mnemónicos

Las instrucciones del Assembler son los mnemónicos. Las directivas del Assembler y las llamadas alos macros deben comenzar al menos en la columna Dos. Si hay una etiqueta en la misma línea, éstadebe estar separada de los mnemónicos por dos puntos (:), una tabulación o por lo menos un espacio.

3.7.4. Operandos

Los operandos deben estar separados de los mnemónicos por uno o más espacios o tabulaciones.Cuando se deba utilizar un operando múltiple, éste debe estar separado entre si por comas.

3.7.5. Comentarios

El MPASM trata cualquier cadena de caracteres como un comentario si ésta se encuentra iniciada(Precedida) por un Punto y Coma ( ;). Todos los caracteres a continuación del punto y coma sonignorados para efecto de compilación, enlazamiento o simulación. Se permiten cadenas de caracteresque poseen un punto y coma dentro de su estructura y no serán confundidas con comentarios.

Page 117: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

90

3.8. TABLAS Y FIGURAS

Tabla 3.1-01. Archivos utilizados por el MPASM.

Archivo Función

*.ASM Extensión por defecto para el archivo fuente de entrada al MPASM

*.OBJ Extensión por defecto para los archivos de objetos relativos

*.LST Extensión por defecto para los archivos de listado generados por el MPASM o el MPLINK

*.ERR Extensión por defecto para los archivos de Error del MPASM

*.MAP Extensión por defecto para los archivos de mapa de salida del MPLINK

*.HEX Extensión por defecto para los archivos de salida Hexadecimal del MPASM o el MPLINK

*.HXH Extensión por defecto para los archivos de salida hexadecimal del MPASM o el MPLINK*.HXL cuando se separan los bytes de más peso (*.HXH) de los bytes de menor peso (*.HXL)

*.LIB Extensión por defecto para los archivos de librería creados por MPLIB y referenciados por elMPLINK.

*.LNK Extensión por defecto para los archivos de comandos de enlazamiento

*.COD Extensión por defecto para los archivos de salida para símbolos y depuración, éstos archivospueden obtenerse del MPASM o el MPLINK.

Tabla 3.4-01. Opciones de la línea de comandos.

Opción V. Por Defecto Descripción

? No Disponible Muestra el panel de ayuda del MPASM

a INHX8M Coloca el formato Hexadecimal de salida, las opciones son:INHX8M, INHX8S, INHX32

c Activa Habilita/Deshabilita la detección de minúsculas

d Ninguno Define símbolos, dMax=5, dCadena= "abcd"

e Activa Habilita/Deshabilita el camino para los archivos de error

h No Disponible Muestra el panel de ayuda del MPASM

i Activa Habilita/Deshabilita/Define el camino para el archivo delistado general

m Activa Habilita/Deshabilita la expansión de macrós

Page 118: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Opción V. Por Defecto Descripción

Radix, es el formato o sistema base según el cual se interpretaran los diferentes valores28

numéricos proporcionados en el programa.

91

o Inactiva Habilita/Deshabilita/Define el camino para el archivo con elcódigo Objeto

p Inactiva Define el tipo de microcontrolador, ejemplo : P16C54

q Inactiva Habilita/Deshabilita el modo estático (Suprime la salida apantalla)

r Hex Define el Radix , las opciones son :28

r Hex, r Dec, r Oct

t 8 Define el tamaño de las tabulaciones en el archivo de listadogeneral

w 0 Define el nivel de los mensajes.0 - Todos los mensajes1 - Errores y Alertas solamente2 - Errores solamente

x Inactiva Habilita/Deshabilita/Define el camino para el archivo dereferencia general

Figura 3.5-01. Ventana de interface MS-DOS.

MPASM 01.30 Released©1993-95 Microchip Technology Inc. Byte Craft Limited

Source File: *.ASM Processor Type: None Error File: Yes Cross Reference File: No Listing File: Yes Hex Dump Type: INHX8M.HEX Assemble to Object File: No

89, Tab: Move Cursor Esc : Quit Type the name of your source file.F1 : Help F10 : Assemble

Page 119: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

92

Figura 3.6-01. Ventana de interface Windows.

M MPASM V 01.30 Microchip Technology Inc –

Source File Name: MMicrochipC:\MPASMV13\TESTS\SAMPLE.ASM Browse

Options:

Radix: Warning Level: Hex Output: Generated Files:! Default ! Default ! Default # Error File" Hexadecimal " All Messages " INHX8M G List File" Decimal " Warnings and Errors " INHX8S G Cross Reference File" Octal " Errors Only " INHX32 G Object File

# Case Sensitive Macro Expansion: Processor. Default –! Default" On" Off

Tab Size: 8 •–

Extra Options:

XX Exit UU Assemble # Save Settings ón Exit ? Help

Page 120: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

93

4. LENGUAJE ASSEMBLER PORDIRECTIVAS (MACROASSEMBLER)

4.1. INTRODUCCION

Las líneas a continuación describen el lenguaje de directivas del MPASM.

Las directivas son los comandos del Assembler que aparecen en el código fuente pero no sontrasladadas directamente a los códigos operativos (Debe recordarse está característica cuando se ésteprogramando, Lenguaje Assembler por Instrucciones). El macroassembler se utiliza para controlardel Assembler las Salidas, Entradas, y la localización de los datos.

Muchas de las directivas del Assembler tienen nombres alternos al igual que formatos. Estos puedenexistir para permitir la compatibilidad con todos los programas desarrollados previamente para losprimeros productos de la Microchip y que además sean compatibles con las prácticas habituales delos programadores en Assembler. Si se desea que los programas sean portables dentro de la familiade productos Microchip, se recomienda que los programas se escriban usando las especificacionesque se describen en éste documento.

4.2. TIPOS DE DIRECTIVAS

A continuación se definen los grupos de directivas utilizadas en el MPASM

* Declaración de Variables

* Declaración de Constantes

* Estructuras de Decisión

* Estructuras Repetitivas

* Directivas de Control

* Directivas de Macros

* Directivas de Memoria

* Directivas de Datos (Variables y Constantes)

Page 121: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

94

* Emulación del ANSI C

* Definición de Mensajes

Cada uno de éstos grupos se describen a continuación a través de las directivas que los forman. Esde tenerse claro que las expresiones que se encuentren entre corchetes ( [ ] ) son opcionales, lossignos < > se utilizan para demarcar la expresión.

4.3. DEFINICION DE VARIABLES

4.3.1. Variable <Label01> [=<Valor01>, <Label02>=<Valor02>...]

Declara una variable simbólica; declara un símbolo (Palabra o cadena de caracteres) como unavariable, es decir, se le puede cambiar el valor a lo largo de la ejecución del programa principal.La directiva VARIABLE crea un símbolo que es funcionalmente equivalente al creado por la directivaSET, la diferencia radica en que para la directiva VARIABLE no se requiere que el símbolo seainicializado cuando es declarado.

Los valores de la variable no se pueden actualizar dentro de un operando. Se hace necesario que lasasignaciones a la variable, incrementos, decrementos y las operaciones con la misma se manejen enuna línea aparte.

;Label Mnemo. Operando ComentarioVariable VP ;Valor PromedioVariable VI=15, VF=20 ;Valor Inicial=15, Valor Final=20

4.3.2. <Label> Set <Valor>

Define una variable en Assembler, es decir su existencia será trasladada al código hexadecimalcorrespondiente. Asigna a un símbolo válido de la sintaxis MPASM el valor especificado. La directivaSET es funcionalmente equivalente a la directiva EQU excepto que el valor asignado por SET puedeser alterado por otra directiva SET.

;Label Mnemo. Operando ComentarioAlto Set 15 ;Alto = 15Ancho Set 25 ;Ancho = 25

Page 122: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

95

4.4. DEFINICION DE CONSTANTES

4.4.1. Constant <Label01>=<Valor01> [, <Label02>=<Valor02> ...]

Declara una constante simbólica; Crea un símbolo para ser utilizado en las expresiones del MPASM.

Las constantes no pueden ser redefinidas después de que han sido inicializadas, y la expresión tieneque ser totalmente solucionable en el momento de la asignación.

Esta es la principal diferencia entre los símbolos declarados con la directiva CONSTANT y lasdeclaradas con la directiva VARIABLE o las creadas con la directiva SET.

;Label Mnemo. Operando ComentarioConstant Lg=10, La=15 ;Longitud=10, Latitud=15

4.4.2. <Label> Equ <Valor>

Define una constante en Assembler; es decir, su existencia se trasladara al código hexadecimalcorrespondiente, asigna a un símbolo válido de la sintaxis MPASM el valor especificado.

;Label Mnemo. Operando ComentarioCuatro Equ 04 ;Cuatro = 04Dieciséis Equ 16 ;Dieciséis = 16

4.4.3. Cblock [<Valor>]

Define un bloque de constantes; crea una lista de constantes de nombre, a cada una de ellas se leasigna un valor mayor en una unidad con respecto a su antecesora. El propósito de ésta directiva esla de asignar direcciones consecutivas a cada etiqueta o constante. El listado de constantes terminacuando se encuentra una directiva ENDC. Si no se define el valor inicial de arranque para asignaciónde la primera constante, se utiliza por defecto el valor siguiente de la última definición CBLOCK. Sepueden proporcionar múltiples nombres para las constantes en una sola línea si se separan por comas.

;Label Mnemo. Operando ComentarioCbl01 Cblock 08 ;Inicio del bloque

Alto ;Alto=08Ancho ;Ancho=09Largo ;Largo=10

Endc ;Final del bloque

Page 123: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

96

4.4.4. Endc

Endc es la directiva utilizada para finalizar una asignación automática de constantes. Es indispensablesuministrarla para finalizar el listado de constantes.

Véase la directiva CBLOCK

4.5. ESTRUCTURAS DE DECISION

4.5.1. IF <Expresión>

Comienza la ejecución de un bloque de código condicional. Si la expresión evaluada es verdaderase ejecuta el código siguiente se ejecutado, de lo contrario el código subsecuente se ignora o saltahasta que se encuentre una directiva ELSE o una directiva ENDIF.

Una expresión que al ser evaluada representa un valor de “0” es considerada lógicamente como Falsa.Si la expresión evaluada arroja cualquier otro valor es considerada lógicamente como verdadera.

Las directivas IF y WHILE operan con el valor lógico de la expresión. Una expresión relacionalretornará un valor de “1” si el resultado es verdadero, y retornará un valor de “0” si el resultado esfalso.

;Label Mnemo. Operando ComentarioCom02 If Versión = = 100 ;Si versión = 100

Movlw 0X0A ;Acumulador = 0AEls01 Else ;Si Versión >< 100

Movlw 0X1A ;Acumulador = 1AEndif ;Final de comparación

4.5.2. Else

Inicia el bloque alterno de la Directiva IF. Se utiliza en conjunción con la directiva IF para proveerun camino alterno al código a ejecutar si la expresión evaluada arroja un valor lógico de falso o “0”.

La directiva ELSE también puede utilizarse dentro del bloque de programa regular o dentro de unMACRO.

Véase la directiva IF

Page 124: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

97

4.5.3. Endif

Finaliza un bloque condicional. Esta directiva marca el final de un bloque de código condicionado.La directiva ENDIF puede utilizarse dentro de un bloque regular de código o dentro de un MACRO

Véase la directiva IF

4.6. ESTRUCTURAS REPETITIVAS

4.6.1. While <Expresión>

Realiza un lazo mientras la condición sea verdadera. Las líneas entre la directiva WHILE y la directivaENDW se ejecutan mientras la evaluación de la expresión correspondiente sea verdadera. Cualquierexpresión que al ser evaluada arroje un valor de “0” se le considerara como falsa. Si arroja cualquierotro valor se le considerara como verdadera. El valor máximo de repeticiones que puede ejecutar unlazo WHILE es de 256.

;Label Mnemo. Operando ComentarioConstant Cuenta = 10 ;Cuenta = 10Variable i ;Declaración de iWhile i < Cuenta ;Mientras i < 10Movlw i ;Acumulador = i

i+=1 ;Incrementamos iEndw ;Final del While

4.6.2. Endw

Indica el final del bloque de código que se ejecutará dentro del lazo While mientras la condiciónevaluada sea verdadera.

Véase la directiva WHILE.

4.7. DIRECTIVAS DE CONTROL

4.7.1. [<Label>] Org <Valor>

Define la dirección origen a partir de la cual se empezará a copiar el código que se encuentre a

Page 125: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

98

continuación de la directiva ORG. Si se específica una Etiqueta (Label) antes de la directiva ORG,ésta puede tomar el valor especificado a continuación de la directiva ORG. Si no se específica ladirectiva ORG, la generación de código hexadecimal comenzará por defecto a partir de la direcciónCero (000h). Si se genera un archivo objeto, se hace obligatorio definir una etiqueta para la directivaORG. Para los demás tipos de archivos la etiqueta es opcional.

;Label Mnemo. Operando ComentarioVec01 Org 0X20 ;Vector Interrupción 01 comienza en direcc. 20H...Org03 Org 000 ;Origen del programa...

4.7.2. End

Indica el Final o cierra el bloque de programa principal.

;Label Mnemo. Operando Comentario...Org01 Org 000 ;Origen del programa principal

... ;Código

... ;Código

... ;CódigoEnd ;Fin del programa principal

4.7.3. Processor <Código>

Define el tipo de microcontrolador a ser utilizado. También se puede interpretar como la definicióndel tipo de microcontrolador para el cual se escribió el programa principal.

;Label Mnemo. Operando ComentarioPro01 Processor 16C55 ;Tipo de PIC a ser Utilizado

4.7.4. Radix <Expresión>

Específica el tipo de Radix a utilizar para interpretar los valores numéricos utilizados en el programaprincipal, es decir, si se específica un Radix Hexadecimal (HEX), el MPASM interpretará que acualquier variable o constante que se le asigne el valor de 14 se referirá a 14 hexadecimal (14H), elcual será equivalente a 20 decimal (20D). El Radix por defecto es el Hexadecimal (Hex) aunquetambién se encuentran disponibles el Decimal (Dec) y el Octal (Oct).

;Label Mnemo. Operando ComentarioRadix Oct ;Formato Octal

Page 126: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

99

4.7.5. List [<Opciones>, ...]

Define una lista de opciones. La directiva LIST tiene la ventaja de que se pueden especificar todaslas opciones de configuración en una sola línea de comando, las opciones a las cuales se tiene accesoson las indicadas en la tabla 4.7-01 (Pag. 113).

;Label Mnemo. Operando ComentarioList p=17c42, f=INHX32, r=Dec ;Configuración general

4.7.6. NoList

Cancela todas las definiciones establecidas por el usuario para el archivo *.LST y ubica como activaslas definiciones por defecto.

;Label Mnemo. Operando ComentarioNoList ;Redefinición de opciones

4.7.7. Include <<Archivo>> o [“<Archivo>”]

Incluye el archivo fuente adicional en el archivo actual al momento de efectuarse la compilación yenlazamiento. El archivo especificado se lee como una fuente de código, el mismo debe encontrarseente comillas dobles (") o corchetes de ángulo (<, >). Sólo se permiten hasta seis niveles deanidamiento. Si se específica el camino completo donde se encuentra el archivo a ser incluido, sólose explorará ésta vía, si no se específica la vía de búsqueda el orden por defecto es el siguiente :

* Directorio Actual de trabajo.

* Directorio del archivo fuente.

* Directorio de los archivos ejecutables del MPASM.

;Label Mnemo. Operando ComentarioInclude "C:\SYS\SYSDEF.INC"Include <Regs.h> ;Incluir el archivo Regs.h

4.7.8. Cbank

Directiva que será desarrollada en un futuro por el equipo diseñador de Software y aplicaciones dela Microchip.

Page 127: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

100

4.7.9. _ _Config <Valor>

Define la configuración del microprocesador a nivel de bits por el código proporcionado en <Valor>,esta opción tambien se encuentra disponible externamente segun el modelo del programador utilizado.Refiérase a la tabla 2.7-01 (Pag. 67) para la serie estandar 16C5X, o al Data Book o Data Sheet delos Microcontroladores PIC 16/17 para la descripción de los bits de configuración de cadamicroprocesador en particular, tambien se recomienda la lectura del documento 30190.pdf para lasdiferentes tecnicas de programacion. El mismo se encuentra incluido en el CD adjunto.

Antes de utilizar ésta directiva, debe declararse el tipo de microprocesador en las líneas de comandosdel MPASM por la directiva LIST o por la directiva PROCESSOR. Si ésta directiva se utiliza conla familia PIC 17CXX, el formato de salida hexadecimal tiene que definirse como INHX32 a travésde la línea de comandos o de la directiva LIST.

;Label Mnemo. Operando ComentarioList p=17c42,f=INHX32 ;Definición del tipo de PIC y formato_ _Config H’FFFF’ ;Bits de configuración por defecto (Hex)

4.7.10. ErrorLevel <Valor>

Define el nivel de mensajes. Declara el tipo de mensajes que se imprimen en los archivos de listadogeneral (*.LST) y de errores encontrados (*.ERR). Las opciones a utilizar por <Valor> se encuentranindicadas en la tabla 4.7-02 (Pag. 113).

* Los mensajes de error no pueden ser deshabilitados.

* Los Niveles 0,1,2 tiene precedencia sobre definiciones individuales.

;Label Mnemo. Operando ComentarioErrorLevel 1, -202

4.8. CODIGOS DE LOS MENSAJES

4.8.1. Errores

101 ERROR: (DEFINIDO POR EL USUARIO)102 FUERA DE MEMORIA103 TABLA DE SIMBOLOS LLENA104 ERROR EN LA CREACION DE UN ARCHIVO TEMPORAL105 NO SE PUEDE ABRIR EL ARCHIVO106 CADENA DE SUSTITUCION MUY COMPLEJA

Page 128: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

101

107 DIGITO ILEGAL108 CARACTER ILEGAL109 PARENTESIS SIN CERRAR110 PARENTESIS SIN ABRIR111 SIMBOLO PERDIDO112 OPERADOR PERDIDO113 SIMBOLO NO DEFINIDO PREVIAMENTE114 DIVISION POR CERO115 ETIQUETA DUPLICADA116 DIRECCION DE LA ETIQUETA DUPLICADA O DIFERENTE EN LA SEGUNDA VUELTA117 DIRECCION DEVUELTA A CERO118 CONTENIDO PREVIO DE LA DIRECCION SOBRE ESCRITO119 CODIGO DEMASIADO FRAGMENTADO120 LLAMADA O SALTO NO PERMITIDA PARA ésta DIRECCION121 ETIQUETA ILEGAL122 CODIGO OPERATIVO ILEGAL123 DIRECTIVA ILEGAL124 ARGUMENTO ILEGAL125 CONDICION ILEGAL126 ARGUMENTO FUERA DE RANGO127 DEMASIADOS ARGUMENTOS128 NO HAY SUFICIENTES ARGUMENTOS129 EXPECTATIVA POR TIPO DE ARGUMENTOS 130 TIPO DE MICROPROCESADOR PREVIAMENTE DEFINIDO131 NO SE A DEFINIDO EL TIPO DE MICROPROCESADOR132 MICROPROCESADOR DESCONOCIDO133 SE REQUIERE FORMATO HEXADECIMAL TIPO INXH32134 ARCHIVO DE FORMATO HEXADECIMAL ILEGAL135 NOMBRE DEL MACRO OLVIDADO136 NOMBRE DEL MACRO DUPLICADO137 ANIDACION DE MACROS MUY PROFUNDA138 ANIDACION DE ARCHIVOS INCLUIDOS MUY PROFUNDA139 MAXIMO DE 100 LINEAS DENTRO DE UN LAZO WHILE-ENDW140 LAZO WHILE DEBE TERMINAR DENTRO DE LAS 256 ITERACIONES141 ANIDACION DE LAZOS WHILE MUY PROFUNDA142 ANIDACION DE IF'S MUY PROFUNDA143 ANIDACION ILEGAL144 LLAMADA A ENDC SIN ABRIR CBLOCK145 LLAMADA A ENDM SIN ABRIR MACRO 146 LLAMADA A EXITM SIN ABRIR MACRO147 SE PERDIO EL NOMBRE DEL SEGMENTO PARA EL ARCHIVO *.OBJ148 EL CODIGO FUENTE EXPANDIDO EXCEDE DE 200 CARACTERES149 ERROR DESCONOCIDO

Page 129: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

102

4.8.2. Advertencias (Warnings)

201 SIMBOLO NO DEFINIDO PREVIAMENTE202 ARGUMENTOS FUERA DE RANGO203 EXISTE CODIGO OPERATIVO EN LA COLUMNA NUMERO 1204 EXISTE PSEUDO CODIGO OPERATIVO EN LA COLUMNA NUMERO 1205 EXISTE UNA DIRECTIVA EN LA COLUMNA NUMERO 1206 EXISTE UNA LLAMADA A MACRO EN LA COLUMNA NUMERO 1207 EXISTE UNA ETIQUETA DESPUES DE LA COLUMNA NUMERO 1208 ETIQUETA TRUNCADA A 32 CARACTERES209 COMILLA PERDIDA210 EXISTE UNA COMA EXTRA211 EXISTEN ARGUMENTOS EXTRA EN LA LINEA212 EXPECTATIVA POR CIERTO TIPO DE ARGUMENTOS213 DIRECTIVAS EXTERNAS SOLO TIENE SENTIDO CUANDO SE ENLAZAN ARCHIVOS214 NO SE ABRIO PARENTESIS215 SE ESPECIFICO EL MICROPROCESADOR EN LA LINEA DE COMANDOS216 SE ESPECIFICO EL RADIX EN LA LINEA DE COMANDOS217 SE ESPECIFICO EL ARCHIVO HEXADECIMAL EN LA LINEA DE COMANDOS218 MALA ESPECIFICACION DEL RADIX219 ESPECIFICACION INVALIDA DE POCISION EN LA RAM220 LA DIRECCION EXCEDE EL VALOR MAXIMO DE ESTE MICROPROCESADOR221 NUMERO DE MENSAJE INVALIDO222 MENSAJES DE ERROR NO PUEDEN SER INHABILITADOS223 SE REDEFINIO EL MICROPROCESADOR224 EL USO DE ésta INSTRUCCION NO ésta RECOMENDADO225 ADVERTENCIA DESCONOCIDA

4.8.3. Mensajes

301 MENSAJE: (DEFINIDO POR EL USUARIO)302 ARGUMENTO FUERA DE RANGO 303 PALABRA DEL PROGRAMA MUY LARGA304 VALOR DE LAS LOCACIONES ID MUY LARGAS (Más de 4)305 UTILIZANDO DESTINO POR DEFECTO PARA EL ARCHIVO306 SE ATRAVEZO LOS LIMITES DE LA Página307 DEFINICION DE LA Página DE BITS308 NIVEL DE WARNINGS DE LA LINEA DE COMANDOS TIENE PRECEDENCIA309 LINEA DE COMANDOS TIENE PRECEDENCIA SOBRE LA EXPANSION DE MACROS310 LA DIRECTIVA _MAXRAM A SIDO USADA PREVIAMENTE311 MENSAJE DESCONOCIDO

Page 130: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

103

4.9. DIRECTIVAS DE MACROS

4.9.1. <Label01> Macro [<Label02>, ...]

Como tal, declara una definición de macro. Un macro es una secuencia de instrucciones que puedeninsertarse en el código fuente en Assembler por el uso de una simple llamada al macrocorrespondiente. El macro tiene que definirse previamente para que pueda ser utilizado en el códigofuente subsiguiente. Un macro puede llamar a otro macro o puede llamarse a sí mismo de manerarecursiva. No están permitidas las referencias posteriores a macros. Todos las declaraciones oEstamentos (Estatements) que siguen a la directiva MACRO son parte de la definición del macro.Todas las Etiquetas (Labels) usadas dentro del macro son locales al macro si se utiliza la directivaLOCAL precediéndolas, estas etiquetas son del uso particular del macro. Debe tenerse gran cuidadocuando se escriben Macros que son recursivos, ya que debe proveerse la forma de salir de ellos. LosMacros sólo pueden ser anidados hasta seis (6) niveles de profundidad.

;Label Mnemo. Operando ComentarioTest_Mac Macro Count ;Rutina del Macro

... ;Código

... ;Código

... ;CódigoEndm ;Fin de rutina del macro

;Start ;Inicio de la rutina principal

... ;Código

... ;Código

... ;CódigoTest_Mac 01F ;Llamada al macro con Count=1FH... ;Código... ;Código... ;CódigoEnd ;Fin de la rutina principal

4.9.2. Endm

Finaliza o cierra el código fuente que define un macro.

Véase la Directiva MACRO

4.9.3. Local <Label> [, <Label>, ...]

Declara que los elementos de datos especificados (Variables o Constantes) deberán ser consideradossolamente en el contexto local de la macro. El nombre de éstos elementos podrá ser idéntico a

Page 131: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

104

cualquier otro que haya sido declarado fuera del macro ya que no habrá conflictos entre los dos. Siun macro es llamado recursivamente, cada invocación podrá tener su propia copia local de loselementos correspondientes.

;Label Mnemo. Operando ComentarioPrueba Macro Var01 ;Declaración del macro

Local Lo, La ;Variables locales Longitud y LatitudLo Set Var01 ;Longitud = Var01La Set 500 ;Latitud = 500

... ;Código

... ;Código

... ;CódigoEndm ;Final del Macro

4.9.4. Exitm

Fuerza un retorno inmediato desde la expansión del macro durante el ensamblado. Tiene el mismoefecto que cuando se encuentra la directiva ENDM.

;Label Mnemo. Operando ComentarioPrueba Macro RegArch ;Definición del macro

If RegArch==1 ;Si RegArch = 1Exitm ;Salir inmediatamente

Else ;Si RegArch >< 1Movlw 0A ;Acumulador = AH... ;Código... ;Código... ;CódigoEndif ;Final del IfEndm ;Final del macro

4.9.5. Expand

Hace que todos los Macros definidos sean totalmente expandidos y copiados al archivo de listadogeneral (*.LST). Esta directiva es aproximadamente equivalente a la opción "/m" de la línea decomandos del MPASM, pero ésta última puede estar limitada por el alcance de la ocurrencia de ladirectiva NOEXPAND

;Label Mnemo. Operando ComentarioExpand ;Activa la opción de expansión de Macros

Page 132: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

105

4.9.6. NoExpand

Desactiva o elimina la opción de expansión de Macros en el archivo de listado general, *.LST

;Label Mnemo. Operando ComentarioNoExpand ;Desactiva la opción de expansión de Macros

4.10. DIRECTIVAS DE MEMORIA

4.10.1. [<Label>] Fill <Expresion01>, <Expresion02>

Genera un conteo de ocurrencias de una palabra del programa principal. Es posible asignar unaetiqueta para ésta directiva. Dentro de los operandos, primero se debe indicar la palabra a ser contaday luego se debe indicar el número máximo de conteos. Si la palabra a ser contada se encierra dentrode paréntesis, ésta podría ser una expresión del Assembler.

;Label Mnemo. Operando ComentarioFill 0X1009,5 ;Rellenar con una constante

4.10.2. [<Label>] Res <Unidades>

Reservar Memoria. Hace que el Contador del Programa se incremente desde su actual posición enuna cantidad indicada por la variable "Unidades". Es de hacer notar que una Etiqueta (Label) puedeasignarse como una dirección en oposición a una constante o una variable.

;Label Mnemo. Operando ComentarioVar01 Res 64 ;Reservar 64 palabras para almacenamiento

4.10.3. _ _MaxRam <Valor01>, _ _BadRam <Valor02> - <Valor03>

Las directivas _ _MaxRam y _ _BadRam, ambas, permiten al programador tener acceso a lasbanderas de los registros no implementados para definir segementos de memoria RAM.

La directiva _ _MaxRam define en <Valor01> la direccion de memoria RAM mas alta que pueder serdireccionada por el programa, el cual puede ser “Inferior o Igual” a la cantidad de memoria RAMdisponible en el microcontrolador en sus diferentes bancos o paginas de memoria, esta directiva tieneque ser la primera indicada o ser precedente a la directiva _ _BadRam. En cualquier caso el valormáximo que se puede especificar para la directiva _ _MaxRam es de 1000H.

Page 133: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

ID, són cuatro direcciones de memoria a las cuales se les asignan valores de manera directa.29

106

La directiva _ _BadRam define las locaciones de memoria RAM invalidas, es decir, no utilizables porel programa, para marcar varias direcciones de memoria consecutivas como invalidas, la directiva _ _BadRam debe indicar el valor inferior (<Valor02>) y el valor superior (<Valor03>) de lasdirecciones de memoria separadas por un guion (-). Es de aclarar que ambos valores se debenencontrar dentro del rango establecido por la directiva _ _MaxRam, es decir, ambos valores debenser menores al valor indicado por _ _MaxRam (<Valor01>).

Una vez que la directiva _ _MaxRam a sido definida, se habilita un chequeo estricto de la memoriaRAM, utilizando el mapa de memoria especificado por la directiva _ _BadRam.

La directiva _ _MaxRam puede utilizarse más de una vez dentro del mismo archivo fuente. Cadautilización redefine el valor máximo de la dirección que se puede utilizar para la memoria RAM yrepone el mapa de memoria RAM para todas las locaciones.

;Label Mnemo. Operando ComentarioList P=16C622 ;Tipo de PICList Radix=Hex ;Radix Hexadecimal_ _MaxRam BF ;Máxima dirección de RAM_ _BadRam 07 ;Dirección invalida_ _BadRam 0D - 1E ;Rango de direcciones invalidasMovwf 07 ;Genera un alerta por RAM Invalida

4.10.4. _ _Idlocs <Valor>

Define las cuatro pocisiones ID para los dígitos hexadecimales indicados por <Valor>. Por ejemplo29

si este tiene el valor de 1AF, la primera posición ID es “0”, la segunda es “1”, la tercera es “A” y lacuarta es “F”. Esta directiva no es válida para la familia PIC17CXX, el tipo de microprocesador tieneque definirse antes de utilizar ésta directiva.

;Label Mnemo. Operando Comentario _ _Idlocs H’1234’

4.10.5. [<Label>] De <Expresión01> [, <Expresión02>, ...]

Define un byte de datos de la EEPROM. Reserva palabras de memoria con 8 bits de datos. Cada<Expresión> debe tener un valor de 8 bits. Los bits de peso más significativo en la palabra son cero.Cada caracter de la cadena se almacena en palabras diferentes.

Inicialmente ésta directiva fue diseñada para inicializar la EEPROM de datos de la familia de PIC16C8X, la directiva puede utilizarse en cualquier pocisión de cualquier microprocesador.

Page 134: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

107

;Label Mnemo. Operando ComentarioOrg H’2100’ ;Inicialización de datos de la EEPROMVer De,"Versión 1.0",0 ;Datos a ser cargados en la EEPROM

4.11. DIRECTIVAS DE DATOS

4.11.1. [<Label>] Db <'Expresion01'> [, <'Expresion02'>, ...]

Declara datos de un byte de extensión. Reserva memoria del programa principal con palabras de 8bits de datos. Cada "Expresión" debe evaluarse como un valor de 8 bits.

Si se evalúa una palabra (16 bits), los 8 bits de más peso son cero, utilizándose solamente los 8 bitsde menor peso, cada caracter de una cadena es almacenado en palabras separadas.

Aunque ésta directiva fue diseñada para inicializar la EEPROM de datos en el PIC 16C8X, la directivapuede utilizarse en cualquier pocisión de cualquier tipo de microprocesador.

;Label Mnemo. Operando ComentarioOrg H’2100’ ;Inicialización de datos de la EEPROMDb 'Mi Programa, V1.0', 0 ;Mensaje

4.11.2. [<Label>] Dt <Expresión01> [, <Expresión02>, ...]

Define una tabla. Genera una serie de instrucciones RETLW, una instrucción por cada <Expresión>.Cada expresión tiene que ser un valor de 8 bits. Cada caracter en una cadena es almacenado en supropia instrucción RETLW.

;Label Mnemo. Operando ComentarioDt "Un mensaje", 0

4.11.3. [<Label>] Dw <Expresión01> [, <Expresión02>, ...]

Declara datos de una Palabra de longitud (16 bits). Reserva palabras de memoria para datos delprograma, inicializando el espacio para valores específicos. Estos valores se almacenan en locacionesconsecutivas de memoria y el contador de direcciones se incrementa de uno en uno. Las expresionespueden ser cadenas literales y se almacenan como se describe en la directiva DATA.

;Label Mnemo. Operando ComentarioDw 39, "Diagnostico 39", (Var01+Var05) ;Declaración de

;palabras

Page 135: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

108

4.11.4. [<Label>] Data <Expresión01> [, <Expresion02>, ...]

Crea datos de texto y numéricos. Inicializa una o más palabras de la memoria del programa con datos.Estos datos pueden ser en forma de constantes, relocalizables, Etiquetas Externas (ExternalLabels) o expresiones de algunos de los tipos anteriores.

Los datos también pueden consistir en cadenas de caracteres de texto ASCII; si se trata de un sólocaracter debe ir encerrado dentro de comillas sencillas (‘), para cadenas de caracteres debe utilizarsecomillas dobles ("). Los caracteres sencillos son colocados justificados a la derecha dentro de lapalabra completa, es decir, el código del caracter ocupa solamente los 8 bits de menor peso dentrode la Palabra. Las cadenas de caracteres son "Empacadas" de dos en dos dentro de cada palabra conel primer caracter de cada pareja dentro de la cadena (De izquierda a derecha) ocupando el byte mássignificativo de la palabra. Si se proporciona una cadena con un número impar de caracteres, el bytefinal se rellena con ceros.

Todos los caracteres de las secuencias de escape ANSI se pueden utilizar en los dos últimos byte dedatos.

;Label Mnemo. Operando ComentarioData Var01+10 ;ConstantesData 1,2,Etiq_Ext ;Constantes ExternasData "Pruebas 1,2,3" ;Cadenas de caracteresData ‘N’ ;Caracteres sencillosData Comienzo_Programa ;Etiquetas relocalizables

4.12. EMULACION DEL ANSI C

4.12.1. #Define <Nombre> [, <Cadena>]

Esta directiva define una cadena para sustitución de texto. Cuando se encuentra <Nombre> en elcódigo fuente, éste se sustituye por <Cadena>. Si se usa ésta directiva sin <Cadena> hace que ladefinición de <Nombre> se anote internamente y pueda ser probada por el uso de la directiva IFDEF.Esta directiva emula el #Define del ANSI C estandard. Los símbolos definidos por éste método nose pueden ver usando el MPLAB del PICMASTER o el MPSIM.

;Label Mnemo. Operando Comentario#Define Longitud, 20 ;Longitud es 20

Page 136: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

109

4.12.2. #Undefine <Label>

Elimina o borra una etiqueta de sustitución (<Label>), donde la etiqueta es un identificadorpreviamente definido por la directiva #DEFINE, ésta debe ser una etiqueta válida del MPASM, dondeesta etiqueta es removida de la tabla de símbolos.

;Label Mnemo. Operando Comentario#Define Alto, 300 ;Alto es 300 metros... ;Código... ;Código... ;Código#Undefine Alto

4.12.2. Ifdef <Nombre>

Ejecuta el código correspondiente si se ha definido un símbolo. Si <Nombre> a sido previamentedefinido con la directiva #DEFINE o por una instrucción de la línea de comandos del MPASM seejecutará el código que le corresponda hasta que se encuentre una directiva ELSE o ENDIF.

;Label Mnemo. Operando Comentario#Define Prueba01 ;Definir Prueba01 como "On" o "True"

... ;Código

... ;Código

... ;CódigoIfdef Prueba01 ;Si Prueba01 existe

... ;Código

... ;Código

... ;CódigoEndif ;Final de la Condición

4.12.4. Ifndef <Nombre>

Ejecuta un código si un símbolo no a sido definido. Si <Nombre> no a sido previamente definido porla directiva #DEFINE o a sido "Indefinido" por la directiva #UNDEFINE, el código a continuaciónde la directiva se puede ejecutar hasta que se encuentre una directiva ELSE o ENDIF.

;Label Mnemo. Operando Comentario#Define Prueba01 ;Definir Prueba01 como "On" o "True"

... ;Código

... ;Código

... ;Código#Undefine Prueba01 ;Eliminar definición de Prueba01

... ;Código

Page 137: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

110

... ;Código

... ;CódigoIfndef Prueba01 ;Si Prueba01 no existe

... ;Código

... ;Código

... ;CódigoEndif ;Final de la Condición

4.12.5. Else

Inicia el bloque alterno de la Directiva IFDEF o IFNDEF. Se utiliza en conjunción con las directivasanteriores para proveer de un camino alterno de código a ejecutar si la expresión evaluada arroja unvalor lógico de falso o cero. La directiva ELSE también puede utilizarse dentro del bloque deprograma regular o dentro de un MACRO.

Véase la directiva IF

4.12.6. Endif

Finaliza un bloque condicional, ésta directiva marca el final de un bloque de código condicionado. Ladirectiva ENDIF se puede utilizar dentro de un bloque regular de código o dentro de un MACRO

Véase la directiva IF

4.13. DEFINICION DE MENSAJES

4.13.1. Title “<Texto>”

Específica el titulo del programa. <Texto> es una cadena de caracteres ASCII imprimible que seencuentra encerrada entre comillas dobles (" "). Debe tener hasta 60 caracteres de longitud o menos.Esta directiva establece el texto que va a ser usado al comienzo de cada página del archivo de listadogeneral.

;Label Mnemo. Operando ComentarioTitle "Revisión General"

Page 138: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

111

4.13.2. SubTitle “<Texto>”

Define el subtítulo del programa principal. Se cumple aquí con las mismas especificacionesestablecidas para la directiva TITLE con la salvedad que ésta será la segunda línea de texto para cadaarchivo de listado general.

;Label Mnemo. Operando ComentarioSubTitle "Primera Parte"

4.13.3. Messg “<Mensaje>”

Crea un mensaje definido por el programador. Esta directiva tiene el efecto de crear un mensaje deinformación general o específica, que va a imprimir en el archivo de listado general. Este mensajepuede tener hasta 80 caracteres de longitud. Las salidas de la directiva MESSG no definen ningúncódigo de error para el retorno.

;Label Mnemo. Operando ComentarioMensaje Macro ;Definición del macro

Messg “Macro invocado sin argumentos” ;MensajeEndm ;Final de éste macro

4.13.4. Error “<Texto>”

Da salida a un mensaje de error. <Texto> se imprime en un formato idéntico al utilizado por elMPASM para sus mensajes de error, la longitud máxima del mensaje es de 80 caracteres ASCII.

;Label Mnemo. Operando ComentarioIf Var01>10 ;Si Var01 es mayor de 10 Error "El valor excede las especificaciones" ;MensajeEndif ;Final de la Comparación

4.13.5. Space <Valor>

Inserta la cantidad de líneas en blanco indicadas por <Valor> en el archivo de listado general.

;Label Mnemo. Operando ComentarioSpace 05 ;Insertar 5 líneas en blanco

Page 139: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

112

4.13.6. Page

Inserta una página en blanco en el archivo de listado general.

;Label Mnemo. Operando ComentarioPage ;Página en blanco

4.14. SINTAXIS DE LA EXPRESION Y OPERACION

4.14.1. Precedencia

Es el concepto por el cual algunos elementos o expresiones se evaluan primero que otras. En general,la precedencia viene establecida de izquierda a derecha, y las expresiones en paréntesis siempre seevaluan primero.

4.14.2. Operadores Lógico-Aritméticos y su Precedencia.

En la tabla 4.14-01 (Pag. 114) se indica de manera decreciente el nivel de importancia en laprecedencia.

4.14.3. High/Low

Las operaciones High / Low se utilizan para retornar el byte de mayor peso o el byte de menor pesodel valor de una etiqueta o variable que ha sido definida como de 16 bits. Esta directiva es muy útilpara manejar cálculos con punteros dinámicos que se pueden utilizar como tablas para lectura yescritura de instrucciones.

Page 140: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

113

4.15. TABLAS Y FIGURAS

Tabla 4.7-01. Opciones de la directiva List.

Opción Defecto Descripción

b=n n=8 Define el tamaño del tabulador para el archivo *.LST

c=n n=132 Define el numero de columnas para el archivo *.LST

f=Formato Formato= Define el formato de salida hexadecimal del enlazador; losINHX8M formatos disponibles son: INHX8M, INHX8S, INHX32

free Fixed Define el formato para frases libres, se provee para garantizar laportabilidad de programas antiguos.

Fixed Fixed Utilizado para fijar el formato de frase.

mm=Op. Op.=On Imprime el mapa de la memoria utilizada por el programa delmicrocontrolador en el archivo *.LST

n=q q=60 Define el número de líneas por página para el archivo *.LST

p=Código No Define el tipo de microcontrolador

r=Op. Op.=Hex Define el tipo de Radix a utilizar

t=Op. Op.=Off Trunca las líneas del archivo *.LST, de otro modo las "Dobla"

w=Op. Op.=0 Define el nivel de mensajes en caso de errores

x=Op. Op.=On Activa o desactiva la expansión de Macros

Tabla 4.7-02. Definición de niveles de error.

Valor Acción

0 Se imprimen todos los mensajes

1 Se imprimen solamente los Alertas (Warnings) y Errores

2 Se imprimen solamente Errores

-Núm.. Deshabilita la impresión del mensaje definido por Núm. (Número)

+Núm. Habilita la impresión del mensaje definido pón Núm. (Número)

Page 141: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

114

Tabla 4.14-01. Operadores lógico-aritméticos, precedencia.

Operador Descripción

( Paréntesis izquierdo

) Paréntesis Derecho

‘ Not, negador, Complementador lógico

- Negación, Complemento a dos (2)

High Retornar el byte más Significativo

Low Retorna el byte menos Significativo

* Multiplicación

/ División

% Módulo

+ Adición, Suma

- Resta, Sustracción

<< Rotar a la izquierda

>> Rotar a la derecha

>= Mayor o igual que

> Mayor que

< Menor que

== Igual a

‘= Diferente de, No igual a

^ Or exclusivo relacional entre expresiones

| Or inclusivo relacional entre expresiones

~ Complemento

&& And lógico, Bit a Bit

|| Or lógico, Bit a Bit

= Igual a, de asignación

+= Adicionar e igualar, sintaxis del ANSI C

-= Sustraer e igualar, sintaxis del ANSI C

Page 142: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Operador Descripción

115

*= Multiplicar e igualar, sintaxis del ANSI C

/= Dividir e igualar, sintaxis del ANSI C

%= Hallar módulo e igualar

<<= Rotar a la izquierda e igualar

>>= Rotar a la derecha e igualar

&= Efectuar un And relacional e igualar

|= Efectuar un Or Inclusivo relacional e igualar

^= Efectuar un Or Exclusivo relacional e igualar

$ Valor actual del Contador de programa

Page 143: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

116

Page 144: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

( )*, es una manera de representar una opción lógica activa en nivel bajo, lo que en el argot30

de los diseñadores lógicos se conoce como "Negado".

117

5. INTRODUCCION AL MPSIM

5.1. CARACTERISTICAS

MPSIM es una herramienta para simulación de eventos discretos diseñada para :

* Imitar la operación de la tecnología Microchip de la familias de MicrocontroladoresPIC16C5X, PIC16CXX y PIC 17CXX

* Prestar asistencia a los usuarios en la depuración de software que utilizan los dispositivosMicrocontroladores Microchip

Un simulador de eventos discretos (Software), en oposición a un emulador circuital (Hardware), éstadiseñado para ayudar en la depuración de la lógica general de sus programas. El MPSIM comosimulador de eventos discretos permite al usuario la modificación de su programa en código objetoe inmediatamente re-ejecutar, inyectar estímulos externos al microprocesador simulado y trazar laejecución del código objeto. Un simulador difiere de un emulador de circuito en tres importantesáreas:

* Tiempo I/O

* Velocidad de Ejecución

* Costo

El presente material cubre la versión 5.0 del MPSIM y establece una referencia general para versionesposteriores.

5.2. TIEMPO I/O

La "Señalización" externa del MPSIM se procesa solamente una vez durante cada ciclo deinstrucción. Señales transitorias como un pulso en el Pin (MCLR)* más pequeño que un ciclo de30

instrucción no se pueden simular pero podrían ser "Vistos" por un emulador circuital. En el MPSIM,los estímulos externos se inyectan exactamente antes de la ejecución del siguiente ciclo de instrucción.

Page 145: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

118

5.3. VELOCIDAD DE EJECUCION

La velocidad de ejecución de un simulador de eventos discretos puede ser varios ordenes de magnitudmenor o mayor que la solución orientada en hardware, ésto es debido fundamentalmente a lascaracterísticas de procesamiento del PC donde se implemente la simulación. Por lo tanto, dichavelocidad dependerá de la frecuencia de reloj del Bus en el correspondiente PC. Algunos usuariospueden ver una bajo velocidad de ejecución como una limitación o como una bendición. Algunossimuladores de eventos discretos son en realidad inaceptablemente lentos, MPSIM sin embargo,intenta proveer la simulación de ciclo más rápida posible.

5.4. COSTO

El costo de una herramienta para depuración puede ser un requisito para algunos desarrolladores desoftware. Por ésta razón, el equipo tecnológico de la Microchip a desarrollado éste simulador paraque sea la herramienta con la relación Costo-Efectividad más alta en la depuración del software deaplicación. MPSIM no requiere de ningún hardware externo conectado al PC, lo cual reduce el costoal mínimo.

5.5. HERRAMIENTA PARA DEPURACION

El simulador sin embargo es una gran herramienta para la depuración, es particularmente útil para"Afinar u Optimizar" los algoritmos. A diferencia de los emuladores circuitales, el simulador pone ala vista del programador todos los registros internos que se deseen y puede proveer de Puntos deParada (BreakPoints) más complejos a objeto de monitorear el desempeño del programa deaplicación en determinado segmento de su código.

5.6. INSTALACION

MPSIM requiere de un IBM PC/AT o compatible en el cual éste ejecutando una versión del MSDOS5.0 o superior, el PC necesita una unidad de disquete para 1.44 MB y al menos 640KB de memoriaprincipal, también es recomendable que el disco duro tenga unos 5MB de espacio disponible. Elprocedimiento de instalación es simplemente ejecutar el archivo D:\PICStart\Install.exe yD:\PICStart\Setup.exe que se encuentran en el CD adjunto. El Shell correspondiente guiará a quienejecute la instalación de ambos programas.

Page 146: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

119

5.7. TERMINOLOGIA UTILIZADA

5.7.1. Puntos de parada (BreakPoints)

Són locaciones en el código fuente donde se busca que la ejecución del código se detenga hasta quesea reiniciada por el programador.

5.7.2. Desensamblar (Disassembler)

Convierte el código objeto modificado en el código fuente correspondiente (lenguaje Assembler)cuando el archivo de listado general no a sido cargado. De éste modo la información de losmnemónicos puede mostrarse siempre que se hayan realizado los cambios convenientes.

5.7.3. Paso (Step)

Una instrucción ejecutable sencilla. El MPSIM permite la ejecución paso a paso (Es decir unainstrucción a la vez) del programa bajo depuración por medio del comando SS. Si existe un archivode estímulo externo, éste podrá “Inyectar” sus valores en los pines especificados en los pasosdefinidos por el archivo de estímulo correspondiente.

5.7.4. Símbolos (Symbols)

Identificadores alfanuméricos como las Etiquetas (Labels), nombres de constantes, nombres parala pocisión de bits y nombres de los registros de archivo.

5.7.5. Trazo (Trace)

Se puede crear un archivo de trazado para mostrar el flujo de ejecución de un programa. Cada líneadel archivo de trazado contiene el código objeto, la línea fuente, el número de paso, el tiempotranscurrido, y los registros de archivo que han sido cambiados o afectados. El trazado puedelimitarse a un rango de direcciones o a un registro de archivo específico. Al activar la opción detrazado, la información correspondiente se podrá visualizar también en el monitor del PC.

Si previamente se abrió un archivo de trazado y aun no se ha cerrado, el MPSIM anexara o "Pegára"a éste archivo cualquier referencia de trazado posterior.

Page 147: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

120

5.7.6. Ventana de Registros (View Screen)

Es la porción de su monitor que tiene siete líneas de longitud (Segunda bajando) y que dinámicamentemuestra los valores de áreas de datos específicas, como los registros.

* El comando V crea o redefine ésta ventana de registros.

* El comando AD adiciona áreas de datos a ésta ventana

* El comando DV elimina o borra el área de datos especificada a continuación del comando.

* El comando NV borra todas las áreas de datos de la ventana.

5.7.7. Conjunto de Instrucciones (Instructión Set)

Es el set de órdenes más elementales que puede ejecutar cada microcontrolador. son muy particularesde cada fabricante y pueden diferir entre familias de dispositivos de una misma casa matriz. Es el nivelmás bajo de programación debido a que todas estas instrucciones se encuentran en códigohexadecimal, aunque en algunos casos puede existir un programa interprete que traduce elnemotécnico a código hexadecimal, evitándose de ésta manera tener que trabajar directamente conel hexadecimal.

5.7.8. Directivas (Directive)

Es el set de órdenes, pero en éste caso, de un programa de alto nivel que traduce cada una de susdirectivas en cadenas de instrucciones. Si bien su utilización facilita muchísimo la programación deMicrocontroladores, no necesariamente genera el código más “Limpio” o eficaz, ya que se puedenpresentar casos de redundancia al no poseerse el control del código hexadecimal generado. Suutilización puede resultar inconveniente cuando hay limitaciones de recursos como la memoria RAMdisponible.

5.7.9) Comando (Command)

Puede ser tanto una Instrucción como una Directiva (seguidas de los parámetros pertinentes) cuandoésta se utiliza para realizar una acción específica de cualquier índole, podría interpretarse como unaorden directa y concisa.

5.7.10. Contactos (Pines)

Són las “Paticas” o “Puas” metálicas que sobresalen del encapsulado del microcontrolador, por mediode los cuales se logra la conexión eléctrica entre el circuito integrado y los dispositivos externos, los

Page 148: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Radix, Formato o base numérica bajo el cual se interpretarán los valores asignados a las31

variables.

121

cuales en conjunto conforman el circuito electrónico de aplicación.

5.8. MEDIO AMBIENTE DEL MPSIM

5.8.1. Interface de Usuario

La interface de usuario consta de tres áreas, las cuales se especifican a continuación:

La Línea de Título es una pocisión fija que ocupa la primera posición en la pantalla del monitor ymuestra el archivo hexadecimal actual, el Radix , la versión del MPSIM utilizado, el tipo de31

microcontrolador que se está simulando, el número de paso actual del programa bajo simulación yel tiempo transcurrido.

La Ventana de Registros muestra el valor de los pines del microcontrolador y registrosseleccionados, ésta área la crea el usuario generalmente a través de un archivo que contiene comandosde inicialización . Este archivo se verá con más detalle en líneas subsiguientes.

La Ventana de Comandos y resultados ocupa el resto de la pantalla del monitor. Utilice ésta regiónpara introducir los comandos, el MPSIM muestra en ésta misma ventana los resultados de la ejecuciónen la línea o líneas a continuación del comando introducido, la distribución de las mismas se muestraen la figura 5.8-01 (Pag. 128).

5.9. EJECUCION DEL MPSIM

Para invocar o ejecutar el MPSIM sólo es necesario escribir MPSIM en el Prompt del Dos. Para elcaso de Windows, en cualquiera de sus versiones se creará el icono correspondiente que hará elllamado a ejecución del archivo MPSIM.EXE en la ventana seleccionada por el usuario, lo demás seexplicará a lo largo del presente documento.

5.10. MODELADO DE LOS PINES I/O

Puede ocurrir un conflicto cuando un Pin de cualquier puerto I/O sea direccionado internamente (Pormedio de una instrucción) al mismo tiempo que es direccionado externamente (Por medio de un

Page 149: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

( )*, es una manera de representar una opción lógica activa en nivel bajo, lo que en el32

argot de los diseñadores digitales se conoce como "Negado".

122

archivo de estímulos). En un caso como éste tendrá precedencia o prioridad el direccionamientointerno, en caso de que no exista direccionamiento alguno, se considerará el Pin correspondientecomo flotante, es decir, el Pin mantendrá el último valor externo que le haya sido aplicado. Esto paraefectos de simulación, ya que ésta última opción no representa el comportamiento real del circuitocuando un Pin I/O a sido direccionado por el microcontrolador. Sin embargo, típicamente el uso deun Pin I/O (Especialmente con la tecnología CMOS) podría no ser considerado como flotante.

5.10.1. Señales en los pines

Al final de cada instrucción se verifican todos los pines de los puertos I/O para detectar posiblesentradas o salidas.

* Si al Pin del (MCLR)* se le declara un valor cero, el MPSIM simula un reset por activación32

de la opción.

* Los bits de estado de la instrucción TRIS (O la instrucción DDR para la familia PIC 17CXX)determina cómo el MPSIM manipula los bits de los puertos y de los registros de archivos. Porejemplo:

* La instrucción TRIS A (RA0 - RA3) actúa sobre el registro F5

* La instrucción TRIS B (RB0 - RB7) actúa sobre el registro F6

* La instrucción TRIS C (RC0 - RC7) actúa sobre el registro F7

Y así sucesivamente según la cantidad de puertos y registros de archivo.

* Cualquiera de los ocho (8) bits del registro de estado TRIS A (B o C) que sea puesto a “1”(Set), le indicara al MPSIM que debe LEER del registro F5 (F6 o F7) en dichos bits (Puertode Entrada).

** Cualquiera de los ocho (8) bits del registro de estado TRIS A (B o C) que sea puestoa “0” (Reset), le indicará al MPSIM que debe ESCRIBIR en el registro F5 (F6 o F7)en dichos bits (Puerto de Salida).

;Label Mnemo. Operando ComentarioTRIS B, 11110000

Indica que los cuatro (4) bits de más peso del registro F6 se utilizaran para LECTURA, y loscuatro (4) bits de menor peso del registro F6 para ESCRITURA.

Page 150: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

la cual se activa en nivel lógico bajo ( )*33

Por inicialización del registro OPTION para los PIC de la familia 16CXX o por utilización34

del comando FW para los PIC de la familia 17CXX

123

Nota: Queda al libre albedrío la determinación de cuales bits tienen valor de “1” o “0”.

* Similarmente, si se cambia cualquiera de las entradas del temporizador, el correspondientetemporizador o el prescaler que le corresponda será afectado.

* Cualquier periférico de entrada (Como un puerto de entrada serie) actúa sobre todas losdemás.

* Cualquier periférico de salida (Como un puerto de salida serie) se presenta en el Pincorrespondiente.

5.11. MODELO DE CPU

5.11.1. Condiciones para el reset

Todas las condiciones de reset son reconocidas por el MPSIM. Un Reset por Encendido (PowerOn Reset)* , por ejemplo, se puede simular utilizando el comando RS. Todos los registros de33

archivo de propósito general serán inicializados a los valores indicados en la Hoja deCaracterísticas (Data sheet) correspondiente de cada microcontrolador.

Durante la operación normal de un reset por la activación del (MCLR)* o durante un estado deReposo (Sleep) por ejemplo, se puede simular fácilmente llevando el Pin de (MCLR)* a nivel bajoy luego a nivel alto por medio de un archivo de estímulo o por la utilización del comando SE.

El reset por Tiempo Fuera (Time-Out) a causa del Watchdog Timer, puede simularse si elWatchdog Timer ésta habilitado (Véase el comando DW) y el prescaler correspondiente ésta definido

y el Watchdog Timer se encuentra en Sobreflujo (Over Flow). El periodo de tiempo fuera del34

Watchdog Timer es aproximadamente el tiempo "Normal" (18 mSeg para los PIC16C5X) deldispositivo que ésta siendo simulado (Para cerrar ciclos de instrucción múltiple).

Los bits del registro de estatus de Tiempo Fuera (TO)* y Caída de Energía (Power-Down, PD)*reflejan la condición de reposición. Esta característica es muy útil para simular varias Bifurcacionespor Encendido (Power-Up) y tiempo fuera en el código de usuario.

Page 151: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Soportadas en el concepto de reconocidas por el software o el hardware y a disposicion del35

usuario o programador

Estos son registros que normalmente no se encuentran en la configuracion estandar del36

sistema

124

5.11.2. Reposo (Sleep)

El MPSIM simula la instrucción Sleep (Dormir), y puede quedar en “Reposo” hasta que ocurra unacondición Llamado a despertar (Wake Up From Sleep).

Por ejemplo:

Si el Watchdog Timer a sido habilitado, éste podría "Despertar" al microprocesador de su "Sueño"cuando se cumpla la cantidad de tiempo fuera dependiendo del valor proporcionado al prescaler).

Otro ejemplo de una condición de Reanudación (Wake Up From Sleep), podría ser la activaciónefectuada por el Timer1. En éste caso, cuando el microprocesador está “Dormido”, el Timer1 puedecontinuar incrementando su conteo hasta que exceda su capacidad y entre en condición de Sobreflujo(Overflow). Si la opción está habilitada, despertaría al microprocesador cuando se complete el conteoy se ejecutará el Vector de Interrupción (Interrup Vector).

La simulación de condiciones de reset por interrupciones en las familias PIC16CXX y PIC17CXXéstan totalmente soportadas por el MPSIM.35

5.11.3. WDT (Watch Dog Timer)

La simulación del Watchdog Timer está totalmente soportada por el MPSIM, debido a que ésta es35

seleccionable en el dispositivo y puede ser habilitada por un comando separado en el MPSIM (Véaseel comando DW). El periodo del Watchdog Timer está determinado por el valor proporcionado alprescaler. El periodo básico (Cón el prescaler igual a “1”) es de aproximadamente de 18 milisegundospara la familia de PIC16C5X y PIC16CXX y de 12 milisegundos para la familia de PIC17CXX.

5.11.4. Registros

El MPSIM simula y muestra todos los registros de archivos. Determinados registros para funcionesespeciales o registros no mapeados se pueden adicionar a la ventana correspondiente o modificados36

como cualquier otro de ellos; Ejemplos de éstos casos son el prescaler o el postcaler.

Todos los registros se inicializan apropiadamente según las diferentes condiciones de reposición.

Page 152: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

125

5.12. PILA DEL HARDWARE (HARDWARE STACKS)

5.12.1. Empujar (Push)

La instrucción de Llamada (CALL) empuja (Push) a la pila el valor de la dirección donde se efectúala llamada (incrementado en la unidad) y carga el contador del programa con la dirección de laSubrutina que se debe ejecutar. Si el número de instrucciones de llamada excede la profundidad dela pila, el MPSIM emitirá el siguiente mensaje de alerta: "STACK OVERFLOW" (Sobreflujo enla Pila), cuando se está ejecutando el código a través de la opción de Paso Sencillo (Comando SS,Single Step).

En la familia PIC16C5X, la instrucción CALL es la única instrucción que hace que la dirección seaempujada a la pila. Las familias de los PIC16CXX y PIC17CXX, sin embargo soportan las llamadasa interrupciones. Cuando una interrupción ocurre, el contador del programa es empujado a la pila(incrementado en la unidad) y luego es cargado con la dirección del vector de interrupción. El mismomensaje de error será generado si demasiadas direcciones se empujan a la pila como resultado de laejecución de interrupciones múltiples, al igual que para el caso anterior ésto ocurre cuando el MPSIMestá ejecutando el programa en la opción de paso sencillo.

5.12.2. Extracción (Pop)

La instrucción RETLW en la familia PIC16C5X y las instrucciones RETLW, RETURN y RETFIEde las familias PIC16CXX y PIC17CXX, extraen la última dirección empujada a la pila y cargan éstevalor en el contador del programa. Si se intenta realizar la extracción de más valores de los que la pilacontiene, MPSIM emitirá el siguiente mensaje de error “Stack Underflow” (Subflujo de la Pila),cuando se esté ejecutando el programa en la opción de paso sencillo (Comando SS).

5.13. ARCHIVOS USADOS Y GENERADOS POR EL MPSIM

5.13.1. Archivos de comandos

Són archivos del tipo texto ASCII que contienen los comandos del MPSIM. Este archivo se ejecutautilizando el comando GE. Hay Dos tipos especiales de archivos de comandos. El MPSIM.INI y elMPSIM.JRN.

* El MPSIM.INI es el archivo de inicialización que el MPSIM carga y ejecuta de maneraautomática cuando se inicia su ejecución.

Page 153: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

126

* El MPSIM.JRN es el archivo que contiene todos los comandos ejecutados por el usuario (Enel orden de utilización) en la sesión de trabajo previa a la actual.

5.13.2. Archivo de inicialización

Cuando se invoca el MPSIM, se ejecutan de manera automática los comandos contenidos en elarchivo MPSIM.INI. Los comandos contenidos en éste archivo pueden crear y definir las áreasestándar de datos que van a ser observadas. Esto representa una gran ventaja ya que se le evita alusuario estar definiendo de manera manual configuraciones largas en cada oportunidad que se iniciepor primera vez una sesión de trabajo con el MPSIM.

5.13.3. Archivo de jornada (Journal file)

Si se busca reejecutar la sesión más reciente con el simulador, el comando LJ ejecuta todos loscomandos proporcionados al MPSIM durante la última sesión de trabajo al ejecutar el archivoMPSIM.JRN. Este archivo se crea de manera automática a medida que se le proporcionan loscomandos al MPSIM. Si se busca guardar de manera permanente (Mientras exista el archivo) la últimaconfiguración utilizada, es necesario que se copie el archivo MPSIM.JRN con cualquier otro nombreque utilice la extensión INI ( *.INI) y luego se le llame a ejecución cuando vuelva a utilizar el MPSIMusando el comando GE. Es de hacer notar aquí que es necesario realizar éste procedimiento ya quecada vez que se entre al MPSIM, el archivo de jornada es el mismo utilizado en la sesión anterior. Sinembargo, cada vez que se salga del MPSIM por vía del comando Q, los comandos utilizados en lasesión actual son escritos en el archivo MPSIM.JRN sobre escribiendo los anteriores.

Como el archivo renombrado es de tipo texto, puede modificarse con cualquier editor de texto ASCIIcomo el Edit del MS-DOS, anexando o eliminando comandos a gusto del usuario. Al igual que todaslas herramientas modernas de CAD/CAM, el concepto de archivo de jornada también es utilizado porel MPSIM. Esto es, cualquier comando utilizado por el usuario automáticamente se almacena en elarchivo de jornada, el cual se mantiene en el directorio actual de trabajo. El comando LJ carga yejecuta el archivo de jornada creado durante la sesión previa con el simulador, sin embargo, es detener en cuenta que ésta acción no guardara los comandos utilizados en el archivo de sesión previaen el archivo de jornada actual.

La ejecución del comando Q (Quit, Quitar) para finalizar la sesión actual, borrara del archivoMPSIM.JRN los comandos utilizados en la sesión previa, para copiar allí los comandos utilizados enla sesión actual, pero, si se utiliza el comando AB (Abort, Abortar) no se realizara el borrado,manteniéndose el archivo de jornada anterior intacto.

5.13.4. Archivo de estímulo (*.STI)

Este archivo (Sample.sti, por ejemplo) permite al programador planificar la manipulación de los bitsde señal que serán introducidos a los registros de archivos que operan como puertos en un paso

Page 154: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

127

específico de la ejecución del programa. Esta programación se realiza a través de un archivo de textoASCII que se denomina archivo de estímulos. En éste archivo se define el valor que le será asignadoa cualquier Pin de cualquier puerto en el paso indicado de la ejecución del programa. El comando STes el que ejecuta la lectura del archivo de estímulos. Cuando se ejecuta el archivo cargado (ComandoLO) con el comando E (Execute, Ejecutar), cada vez que se va a ejecutar un nuevo ciclo deinstrucción se revisa el archivo de estímulo cargado para obtener los valores de entradacompaginando el valor del paso actual con el valor de paso especificado en el archivo.

Las primeras líneas se deben dedicar a la identificación del archivo. Esto se logra a través de loscomentarios los cuales se deben iniciar con el símbolo de admiración seguido de un espacio enblanco y luego el mensaje que se quiere comunicar, como se indica a continuación :

!! Esto es un comentario del archivo de estímulos.!

A continuación se inicia la información de los valores proporcionados por el archivo de estímulos. Laprimera fila debe estar iniciada por la palabra STEP seguida de la identificación de los pines que seránafectados o manipulados. Los números (Decimales Siempre, nada tiene que ver el Radix definido) queconforman la columna debajo de la palabra STEP representan los pasos de la secuencia de ocurrenciala cual no tiene que ser consecutiva si no se desea pero TIENE que ser continua (Ej. : 1, 2, 3, 5, 10,25, 32, 33, 34, 100, ...).

Los datos debajo de cada palabra identificadora del Pin manipulado sólo puede tomar valores de “1”o “0”, ya que cualquier otro valor implica una condición de error. Aquí también se pueden colocarcomentarios al final de cada línea si éstos se encuentra precedidos de un signo de admiración y unespacio tal como se indicó anteriormente. Es irrelevante la cantidad de espacios en blanco que sedejen entre identificadores y valores numéricos.Si la línea de valores resulta ser más larga que el ancho de la pantalla se puede utilizar una BarraInvertida ( \ , Backslash) para señalar que los valores que se indican en la siguiente línea son lacontinuación de la línea actual.

Hay otras tres maneras de “Inyectar” estímulos en los pines I/O que conforman el puerto, encomplemento al archivo de estímulos:

* Un tren de pulsos de "Reloj" pueden ser asignados a cualquier Pin del puerto I/O.

* Combinaciones de las teclas Alt+Función (Ej. : Alt+F5, ...) pueden ser asignadas a un Pinespecífico de los puertos I/O (Sólo para uso del modo Ejecución, Comando E).

* El puerto I/O puede ser modificado (Escrito) en el modo de paso sencillo, se recomiendarevisar los comandos E, SS, CK, DK, SE.

Page 155: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

128

5.13.5. Ejemplo de un archivo de estímulos

!! Este es el encabezado de un archivo de estímulos, Titulo,! Especificaciones y otros detalles que se le quieran anexar!Step RA3 RA2 RA1 RA0 RB7 RB5 RB3 RB0 RC3 RC2 RC0 !Comentario3 0 0 1 1 1 1 0 0 1 1 1 !Comentario4 1 1 1 1 0 0 0 0 0 1 0 !Comentario15 1 1 0 0 0 0 1 1 0 0 0 !Comentario

5.14. TABLAS Y FIGURAS

Figura 5.8-01. Ventanas del MPSIM.

L I N E A D E T I T U LO

V E N T A N A D E R E G I S T R O S

V E N T A N A D E C O M A N D O S

Y

R E S U L T A D O S

Page 156: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

129

6. TUTORIAL

6.1. INTRODUCCION

En las siguientes líneas se busca proveer de un pequeño tutorial sobre el simulador de eventosdiscretos para las familias de Microcontroladores; PIC16C5X, PIC16CXX y PIC17CXX de laMicrochip.

Para el mismo se utilizara el programa de ejemplo (SAMPLE.ASM) cuyo código fuente se incluyejunto con los programas que conforman el paquete. El tutorial intenta familiarizar al usuario con elsimulador y de proveer una introducción para algunos de los comandos más comúnmente utilizados.

El programa utilizado en éste tutorial, SAMPLE.ASM, es un software de multiplicación que tomaDos números de Ocho bits, Multiplicador (mulplr) y Multiplicando (mulcnd) y coloca elresultado de 16 bits en el Bit Alto (H_byte) y el Bit Bajo (L_byte) del PIC16C54. Se supondrá quetodos los archivos necesarios se encuentran instalados en el directorio C:\PIC1617, el cual seentenderá como el directorio actual de trabajo, El programa se muestra a continuación :

;*****************************************************************; SAMPLE.ASM; 8x8 Software Multiplier;******************************************************************;; The 16 bit result is stored in 2 bytes;; Before calling the subroutine " mpy ", the multiplier should; be loaded in locatión " mulplr ", and the multiplicand in; " mulcnd " . The 16 bit result is stored in locations; H_byte & L_byte.;; Performance :; Program Memory : 15 locations; # of cycles : 71; Scratch RAM : 0 locations;; This routine is optimized for code efficiency ( looped code ); For time efficiency code refer to "mult8x8F.asm" ( straight line code );******************************************************************;

LIST p=16C54 ; PIC16C54 is the target processormulcnd equ 09 ; 8 bit multiplicandmulplr equ 10 ; 8 bit multiplier

Page 157: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

130

H_byte equ 12 ; High byte of the 16 bit resultL_byte equ 13 ; Low byte of the 16 bit resultcount equ 14 ; loop counterportb equ 06 ; I/O register F6STATUS equ 03 ; STATUS register F3CARRY equ 0 ; Carry bit in status registerSame equ 1 ; ;;; ***************************** Begin Multiplier Routinempy_S clrf H_byte clrf L_byte movlw 8 movwf count movf mulcnd,w bcf STATUS,CARRY ; Clear the carry bit in the status Reg.loop rrf mulplr btfsc STATUS,CARRY addwf H_byte,Same rrf H_byte,Same rrf L_byte,Same decfsz count goto loop; retlw 0;;******************************************************************; Test Program;******************************************************************start clrw optionmain movf portb,w movwf mulplr ; multiplier (in mulplr) = 05 movf portb,w movwf mulcnd;call_m call mpy_S ; The result is in locations F12 & F13 ; H_byte & L_byte; goto main; org 01FFh goto start; END

Page 158: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

131

6.2. ENSAMBLANDO EL CODIGO

Antes de que pueda comenzar a trabajar con el simulador es necesario ensamblar el archivoSAMPLE.ASM, para ello debe de especificarse el siguiente formato de salida binaria : INHX8M (elutilizado por defecto) para el microprocesador PIC16C54. Lo anterior se puede definir en un sólopaso al indicar la siguiente línea de comando en el Prompt del DOS.

C :\PIC1617\MPASM Sample /p 16C54 <Enter>

6.3. INVOCANDO EL SIMULADOR

Para ejecutar el simulador, simplemente se debe escribir lo siguiente a continuación del Prompt delDOS.

C :\PIC1617\MPSIM <Enter>

6.3.1. Mpsim.Ini

Estas áreas de datos aparecen en la ventana de registros debido al archivo de inicialización,MPSIM.INI. Véase la figura 6.3-01 (Pag. 139). Si observamos el contenido del archivo MPSIM.INIcon cualquier editor de texto nos daremos cuenta que el mismo ésta conformado por los comandosque aparecen en la ventana de comandos. Cada vez que es invocado el MPSIM, el busca en eldirectorio actual de trabajo el archivo MPSIM.INI y si existe ejecuta todos y cada uno de loscomandos que lo conforman.

Observe la información mostrada en la ventana de comandos (Tercera bajando) y la informaciónmostrada en la ventana de registros (Segunda bajando). De la misma manera que el MSDOS lee yejecuta sus archivos *.BAT. Es importante entender que un archivo de inicialización puede sercualquiera que tenga extensión INI, pero el MPSIM.INI es único y es automáticamente cargado yejecutado cada vez que se invoca el MPSIM.

6.4. CARGANDO EL ARCHIVO DE INICIALIZACION

Los archivos de inicialización son muy útiles ya que permiten la selección y configuración de áreasde datos específicas que se desean ver, mostrándolas en la ventana de registros. También se puedecargar el programa a ser simulado y crear los puntos de parada que se deseen, todo ésto en un sólopaso. En otras palabras, se puede invocar el MPSIM, cargar su archivo de inicialización, comenzarla depuración, efectuar las modificaciones deseadas, salir del MPSIM y retornar luego. En ésta nuevaoportunidad fácilmente se puede definir la configuración con la cual se había cerrado el MPSIM

Page 159: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

132

anteriormente, todo ésto con solamente cargar tu archivo de configuración.

6.4.1. Creación del archivo de inicialización

Una manera muy fácil de crear un archivo de inicialización es primero invocar el simulador, escribirlos comandos deseados para definir la configuración a utilizar y luego salir del simulador utilizandoel comando Q (Quit, Quitar). Lo siguiente es entrar al directorio actual de trabajo, renombrar elarchivo MPSIM.INI, por ejemplo a MPSIM.001. Si se revisa el directorio se observara que se acreado el archivo "MPSIM.JRN" (Si no existía previamente).

Este archivo de jornada contiene todos los comandos utilizados en la sesión inmediatamente anterior.Si el registro W (Acumulador), o cualquier otro registro (FXX) a sido adicionado a la ventana deregistros, los comandos que implementan estas acciones son salvados en el archivo de jornada.

Este archivo puede ser editado utilizando cualquier editor de texto ASCII, como el Edit del MSDOS,con el fin de remover comandos tales como "E" (Execute, Ejecutar) o Q. Luego se procederá aguardar el archivo MPSIM.JRN modificado con el nombre de MPSIM.INI. La eliminación efectuadase encuentra motivada por el hecho de que éstos comandos también serían ejecutados cuando secargue el archivo MPSIM.INI. Si se desea tener una "Biblioteca" de configuraciones, se puede editary guardar el archivo de jornada modificado con diferentes nombres (Uno para cada configuración ogrupo de comandos) siendo condición fundamental, la de que, a cada archivo generado se le debecolocar la extensión INI para que pueda ser cargado y ejecutado por el comando "GE" (Get,Tomar).

Por ejemplo, si se quiere cargar el archivo de inicialización llamado "SAMPLE.INI", lo podemoshacer utilizando la siguiente sintaxis desde la ventana de comandos del MPSIM :

GE Sample <Enter>

El MPSIM ejecuta los siguientes comandos, los cuales se encuentran contenidos en el archivoSAMPLE.INI, el cual se muestra a continuación.

LO SAMPLEST SAMPLESR XZPZRZTREP 54NVAD mulcndAD mulplrAD H_byte

Page 160: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

133

AD L_byteAD countAD portbAD RB7,B,1AD RB6,B,1AD RB5,B,1AD RB4,B,1AD RB3,B,1AD RB2,B,1AD RB1,B,1AD RB0,B,1RS

Los comandos de éste archivo crean la ventana de registros que se muestra en la figura 6.4-01 (Pag.139), y reinicializan las áreas de datos especificadas, Las ventanas mostradas contienen ahora las áreasde datos que van a ser observadas durante la simulación del archivo SAMPLE.ASM.

6.5. CARGANDO EL ARCHIVO HEXADECIMAL

Se debe notar que el comando LO se encuentra listado en el archivo SAMPLE.INI. Por ésta causael archivo hexadecimal correspondiente se carga cuando se ejecuta el archivo sample.ini. Si elcomando LO no se encuentra en el archivo sample.ini, se podrá cargar cualquier archivo hexadecimaldeseado tipeando lo siguiente en la ventana de comandos y resultados :

LO Nombre_Archivo <Enter>

Es muy importante que antes de ejecutar éste comando se compile el archivo deseado con el MPSIM,el mismo generará el archivo hexadecimal correspondiente en formato INHX8M (Por defecto), si elarchivo compilado se encuentra en otro formato será necesario ejecutar la siguiente línea de comandos:

LO Nombre_Archivo Formato <Enter>

El MPSIM carga el archivo hexadecimal indicado por Nombre_Archivo y luego busca el archivofuente, si el mismo se encuentra disponible, también se carga la tabla de símbolos y el archivo delistado general.

Page 161: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

134

6.6. CARGANDO EL ARCHIVO DE ESTIMULO

Si no se a tenido el cuidado de indicar la carga en memoria del archivo de estímulos al ejecutarse elarchivo sample.ini (Comando ST), la carga de éste se podrá llevar a cabo desde el MPSIM ejecutandola siguiente línea de comandos :

ST Sample.sti <Enter>

El archivo de estímulos contiene los valores que van a ser inyectados en los pines del puerto deentrada. Cuando se ejecute el programa hexadecimal, el MPSIM verifica la existencia o no del archivoNombre_Archivo.STI, si el mismo existe, durante cada paso de la ejecución se verifica si éste pasose encuentra definido en el archivo de estímulos para proceder a inyectar la señal correspondiente enel puerto indicado. A continuación se muestra el contenido del archivo de estímulos SAMPLE.STI:

! Stimulus file for SAMPLE.ASMSTEP RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 ! portb Pins3 0 0 0 0 1 0 0 1 ! 9 x 55 0 0 0 0 0 1 0 165 0 0 0 0 1 0 1 0 !10 x 567 0 0 0 0 0 1 0 1127 0 0 0 1 1 0 1 1 !27 x 3129 0 0 0 0 0 0 1 1191 0 0 0 1 0 0 0 1 !17 x 7193 0 0 0 0 0 1 1 1253 0 1 0 0 0 0 0 0 !64 x 63255 0 0 1 1 1 1 1 1

El archivo de estímulos, muestra los valores a ser inyectados en el puerto B (Por simulación), loscuales corresponden a los valores del multiplicador y del multiplicando utilizados por el programaSAMPLE.ASM la cual es una rutina de multiplicación en sistema hexadecimal. Desde que éste puertosólo permite la utilización de Ocho (8) bits de datos, los valores máximos que estas variables podráncontener serán:

1111 1111B (Sistema Binario)FF h (Sistema Hexadecimal)

6.7. DEFINIENDO LOS PARAMETROS DE TRAZADO

Un archivo de trazado es aquel que contiene los resultados obtenidos de la ejecución por simulaciónde un programa. En el mismo se encuentra contenida la información del tiempo requerido paraejecutar cada instrucción del programa y los registros de archivo afectados por ésta ejecución. Lautilización de un archivo de trazado puede ser de mucha ayuda para determinar el momento más

Page 162: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

135

conveniente para la inyección de estímulos externos o para crear una copia impresa (En el archivo)del flujo de ejecución general del programa simulado. A continuación se describen los Cinco (5)comandos utilizados en el MPSIM para trabajar con el trazado del programa:

* TF, Abre y cierra un archivo para escritura de los resultados del trazado.

* TA, Realiza el trazado de todas las instrucciones entre las Dos (2) direcciones especificadas.

* TC, Realiza el trazado de un número específico de instrucciones.

* TR, Realiza un trazado donde sólo se muestran los registros y valores especificados

* DX, Muestra todos los parámetros de trazado activos para el momento

Si se desea imprimir directamente los resultados obtenidos del trazado en la impresora por defectomientras se ejecuta la simulación, se debe sustituir el nombre del archivo a utilizar para el trazado porla palabra "PRN".

A continuación se muestran algunos ejemplos de la utilización de los comandos de trazado :

* Realizar el trazado de todas las instrucciones entre Dos (2) etiquetas, Call_m y Main, y enviarluego el resultado obtenido al archivo Trazo01

TF Trazo01.TrcTA Main, Call_mTC

* Trazar las primeras catorce (14) instrucciones y enviar luego el resultado al archivo Trazo02

TF Trazo01.TrcTF Trazo02.TrcTC E

Nota: Si se específica el número de instrucciones a ser trazadas con el valor de "14" en vezde "E", se trazaran en realidad 20 pasos si el RADIX ha sido definido comoHexadecimal.

* Verificar el criterio actual de trazado

DX

Los parámetros de trazado definidos para el momento son mostrados en la ventana de comandos yresultados del MPSIM.

Page 163: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

136

6.8. DEFINICION DE PUNTOS DE PARADA (Breakpoints)

Los puntos de parada son utilizados para "Artificialmente" detener la ejecución del programa y asípoder verificar cómo ha sido manipulada la data, o para ver el contenido de algún registro de archivoen particular. Hay tres (3) comandos que tienen que ver con los puntos de parada y los cuales seindican a continuación :

* DB, Muestra la definición para el momento de los puntos de parada

* BC, Limpia o borra, alguno o todos los puntos de parada que han sido definidos para elmomento

* B, Define un punto de parada

A continuación se muestran algunos ejemplos de la utilización de los comandos de Puntos de parada:

* Limpiar todos los puntos de parada que hayan sido previamente definidos, declarar el puntode parada Mpy_S y luego revisar las definiciones activas.

BCB Mpy_SDB

* Eliminar el punto de parada Mpy_S

BC Mpy_S

6.9. EJECUCION DEL CODIGO HEXADECIMAL

En adición a los comandos de trazado, existen tres (3) instrucciones que se pueden utilizar paraejecutar el programa bajo simulación :

* E, Ejecución continua del código hasta encontrar un punto de parada o presionar cualquiertecla.

* SS, Ejecución paso a paso de las instrucciones que conforman el código

* C n, Ejecución en la cual se ignoran "n" número de puntos de parada

A continuación se muestran algunos ejemplos de la utilización de los comandos de ejecución :

* Ejecutar la simulación, un paso a la vez

Page 164: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

137

SS

Nota: para ejecutar la siguiente instrucción se debe presionar la tecla <Enter> o <Return>,y así sucesivamente, ya que al hacerlo de éste modo se está "Reejecutando" el ultimocomando introducido (SS en éste caso)

* Ejecutar el programa y no detenerse antes del segundo punto de parada

C 2

6.10. MODIFICACION DEL CODIGO HEXADECIMAL

El MPSIM posee Cinco (5) tipos de comandos (Pertenecientes a diferentes grupos de comandos) quepermiten la modificación del código hexadecimal de la siguiente manera .

* Buscar en memoria la siguiente declaración del registro de archivo F10 y cambiar sucontenido a 0xFF, luego buscar el registro de archivo W (Acumulador) y cambiar su valora 0x0C.

SF 01FFF10

Se podrán ver Dos (2) líneas de código con la etiqueta "Mulplr" sobre el registro.

F F10

Se podrá apreciar el contenido actual del registro seguido de dos puntos (:), escriba el valor0xFF y observe cómo cambia el valor del registro.

W

De igual manera que para el caso anterior, se vera el valor actual del acumulador seguido dedos puntos ( :), escriba el valor 0x0C y observe cómo cambia el valor del acumulador.

* Modificar el contenido del programa cargado en memoria a partir de la dirección 00H con lainstrucción NOP

M 0

Se podrá ver el contenido de la memoria (Seguido de dos puntos [:]) en código hexadecimala partir de la dirección 00H. Escriba el valor 0 (Código objeto para NOP) y luego presioneEnter. Si se desea se puede repetir el procedimiento con otros valores de código objeto según

Page 165: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

138

nuestras necesidades hasta terminar. Para salir se debe escribir el comando "Q" y se retornarade manera automática al Prompt de comandos (%) del MPSIM.

* Borrar un programa de la memoria entre las direcciones Dos (2) y Cuatro (4)

DE 2, 4

Este comando borra el contenido de la memoria entre las direcciones especificadas y desplazahacia "Arriba" el contenido de las direcciones de memoria posteriores a la Nro. Cuatro (4)

ZM 2,4

Cón éste comando, todas las locaciones de memoria comprendidas entre las direcciones Dos(2) y Cuatro (4) contienen ahora el valor de “0” el cual corresponde al código objeto de lainstrucción NOP

* Eliminar todas las modificaciones hechas al código objeto en memoria

ZP

Este comando elimina todas las modificaciones hechas al archivo SAMPLE.HEX el cual seencuentra activo en memoria, reponiendo todos los valores anteriores en código objeto.

6.11. TERMINACION DE UNA SESION CON EL MPSIM

Hay dos maneras de salir del MPSIM.

AB

Al utilizar éste comando, el archivo de jornada actual no es salvado, manteniéndose intactoel archivo de jornada de la sesión anterior.

Q

Al utilizar éste comando el archivo de jornada actual es salvado y podrá ser utilizado en lapróxima sesión.

Page 166: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

139

6.12. TABLAS Y FIGURAS

Figura 6.3-01. Ventana del archivo Mpsim.ini.

RADIX = X MPSIM 16C55 TIME=0.00µS STEP=0

W:00 F1:00 F2:00 F3:00 F4:00 F5:00 F6:00 F7:00

%SR X%ZP%ZR%ZT%RE%V W,X,2%AD F1,X,2%AD F2,X,2%AD F3,X,2%AD F4,X,2%AD F5,X,2%AD F6,X,2%AD F7,X,2%

Figura 6.4-01. Ventana del archivo Sample.ini.

SAMPLE RADIX=X MPSIM 16C54 TIME=00.0µS STEP=00

mulcnd:00 mulplr:00 H_byte:00 L_byte:00 count:00 portb:FF RB7:1RB6:1 RB5:1 RB4:1 RB3:1 RB2:1 RB1:1 RB0:1

%AD mulplr%AD H_byte%AD L_byte%AD count%AD portb%AD RB7,B,1%AD RB6,B,1%AD RB5,B,1%AD RB4,B,1%AD RB3,B,1%AD RB2,B,1%AD RB1,B,1%AD RB0,B,1%RSProcessor reset341296 bytes memory free%

Page 167: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

140

Page 168: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

141

7. GRUPO DE COMANDOS DEL MPSIM

7.1. CONVENCIONES UTILIZADAS POR EL MPSIM

7.1.1. Corchetes, [ ]

Los corchetes indican parámetros opcionales.

7.1.2. Llaves, { }

Las llaves indican un grupo de parámetros. Donde uno o más de éstos elementos del grupo sonrequeridos.

7.1.3. Barra vertical, |

Los parámetros que se encuentren dentro de las barras verticales son opcionales

7.2. COMANDOS GENERALES

7.2.1. AB

Abortar Sesión. Se muestra un sumario de mensajes y sale al sistema operativo, éste comando norescribe el archivo de jornada

7.2.2. H [ Help | ? ]

Ayuda. El comando H (Ayuda, Help) muestra la sintaxis y proporciona un breve sumario de cadacomando disponible en el MPSIM. Se debe presionar la barra espaciadora para salir de la ayuda. Sise desea observar la siguiente pantalla de ayuda bastara con presionar cualquier otra tecla.

Page 169: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

142

7.2.3. Q

Quitar. Termina con la sesión actual. Muestra Uno o Dos mensajes sumario de las actividadesrealizadas. Sobre escribe el anterior archivo de jornada con los comandos utilizados en la sesión actualy sale al sistema operativo.

7.3. COMANDOS PARA EL PROGRAMA ACTIVO

7.3.1. DE Direccion01, Direccion02

Borra el segmento del programa activo en memoria comprendido desde la Direccion01 hasta laDireccion02

7.3.2. DI [ Direccion01 [, Direccion02 ] ]

Muestra el programa activo en memoria en forma simbólica y según el formato de Radix definido.Muestra el programa activo en memoria desde la Direccion01 hasta la Direccion02. Si se omiteproporcionar la Direccion02, se mostraran las siguientes Diez (10) líneas a partir de Direccion01.

7.3.3. DM [ Direccion01, Direccion02 ]

Muestra el programa activo en memoria según el formato de Radix definido (Véase el comando SRpara definir el Radix). Desde Direccion01 hasta Direccion02, los datos son mostrados solamentesegún el formato de Radix definido. De no proporcionarse ninguna dirección, muestra Diez (10) líneascontinuas a partir desde las ultimas mostradas por el comando DM anterior.

7.3.4. FM Direccion01, Direccion02, Patrón

Rellenar memoria. Llena el programa activo en memoria desde la Direccion01 hasta la Direccion02con el patrón hexadecimal especificado.

7.3.5. IA Dirección

Inserta o Inspecciona el código Assembler en formato simbólico. Muestra o modifica el programaactivo en memoria en la dirección especificada utilizando formato simbólico

Page 170: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

143

7.3.6. IN Dirección, Instrucción

Inserta una instrucción en la dirección especificada en formato simbólico

7.3.7. LO Nombre_Archivo [ Formato ]

Carga el archivo objeto, Nombre_Archivo con el formato hexadecimal especificado en la memoria,El MPSIM también carga el archivo de listado general y el archivo de símbolos. Los formatos validosson INHX8M (Defecto), INHX8S.

7.3.8. M Dirección

Muestra o modifica el programa activo en memoria en la dirección especificada. El valor contenidoen la dirección se muestra seguido de dos puntos (:). Para cambiar éste valor, se debe entrar el nuevovalor a continuación de los dos puntos (:). Se pueden proporcionar los siguientes comandos :

* Q Finalizar el comando

* - Retroceder a la dirección inmediatamente anterior

* <Enter> Continuar con la siguiente dirección

7.3.9. O Nombre_Archivo [ Formato ]

Da salida al código objeto modificado. Escribe el contenido del programa activo en memoriaincluyendo las modificaciones en el archivo especificado por Nombre_Archivo en el formatoespecificado por Formato.

Los formatos validos son :

* INHX8M (Defecto)

* INHX8S

* INHX32 (Para la familia PIC17CXX)

7.3.10. SF Direccion01, Direccion02, Registro

Busca dentro del programa activo en memoria desde la Direccion01 hasta la Direccion02 porcualquier instrucción que haga referencia o manipule el registro de archivo especificado.

Page 171: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

144

7.3.11. SI Direccion01, Direccion02, Instrucción

Busca dentro del programa activo en memoria en formato simbólico desde la Direccion01 hasta laDireccion02 la ocurrencia de la instrucción especificada.

7.3.12. SM Direccion01, Direccion02, Instrucción

Busca dentro del programa activo en memoria en formato especificado por el Radix desde laDireccion01 hasta la Direccion02 la ocurrencia de la instrucción especificada, la cual se debeencontrar en el formato del Radix activo.

7.3.13. ZM Direccion01, Direccion02

Rellena con ceros (0) el programa activo en memoria desde la Direccion01 hasta la Direccion02.

7.4. PUNTOS DE PARADA

7.4.1. B Dirección

Define o activa un punto de parada en la dirección especificada, siendo posible utilizar direccionessimbólicas.

7.4.2. B Registro_Archivo { = | > | < | >= | <= | != Valor}

Define un punto de parada cuando un registro de archivo alcanza la condición establecida por eloperador y el valor.

7.4.3. BC [ Dirección | Registro_Archivo ]

Cancela, limpia o elimina todos los puntos de parada definidos previamente. Se puede eliminarsolamente el punto de parada en una dirección en particular o el punto de parada definido para unregistro de archivo en particular si el nombre correspondiente es correcto.

7.4.4. DB

Muestra todos los puntos de parada activos hasta el momento.

Page 172: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Inicializar: Definir un valor base o inicial.37

Paso Sencillo: Opción de ejecutar un paso a la vez.38

145

7.5. EJECUCION DE INSTRUCCIONES

7.5.1. C [ n ]

Continua la ejecución del programa ignorando los n puntos de parada consecutivos que se encuentre.

7.5.2. E [ Dirección ]

Ejecuta el programa cargado desde el comienzo (Dirección 00H) hasta alcanzar un punto de paradao hasta que se presione cualquier tecla. Si se específica la Dirección la ejecución se inicia a partir dela misma.

7.5.3. GO

Se Repone o Reinicia (Reset) el microcontrolador, se inicializan todos los registros de archivo y37

se ejecuta el programa desde el principio.

7.5.4. RS

Se Repone (Reset) el microcontrolador por la simulación de un Encendido por Primera Vez(Power On Reset).

7.5.5. SS [ Dirección ]

Se ejecuta el programa en modalidad de paso sencillo desde el comienzo (Dirección 00h). Si se38

específica la Dirección, se ejecuta el programa a paso sencillo desde la misma. Para ejecutar un pasosencillo en múltiples instrucciones, escriba el comando SS una sola vez y presiones repetidamente latecla <Enter>.

Page 173: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

146

7.6. TRAZADO O RASTRO

7.6.1. DX

Muestra los parámetros activos de trazado para el momento. Si el modo de trazo se encuentra activo,se muestra :

La dirección de memoria, el código operativo, el mnemónico, el tiempo transcurrido, la cantidad depasos del ciclo, y los registros de archivos que fuerón afectados (Modificados) cuando se encontróuna condición establecida.

7.6.2. TA [ Direccion01, Direccion02 ]

De no definirse direcciones se trazan todas las instrucciones de memoria del programa, en casocontrario sólo se realiza el trazado de las instrucciones que se encuentran desde la Direccion01 hastala Direccion02, inclusive ambas

7.6.3. TC [ n ]

Traza las siguientes n instrucciones. Si se omite n, la ejecución continua hasta que el MPSIM seencuentra un punto de parada o hasta que se presione cualquier tecla

7.6.4. TF [ Nombre_Archivo | PRN ]

Abre o cierra para trazado un archivo definido por Nombre_Archivo, si se define la etiqueta PRN,los resultados del trazado se imprimirán utilizando la impresora por defecto en el puerto por defectomientras se ejecuta el programa.

7.6.5. TR Registro [,Valor_Mínimo, Valor_Maximo]

Define el registro de archivo a ser trazado o rastreado. De no definirse argumentos, se trazara porcompleto el registro de archivo definido. Si se desea realizar el trazado del registro dentro dedeterminados valores es necesario especificar los valores máximos y mínimos dentro de los cuales seactivara el rastreo del registro.

Page 174: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

147

7.7. REGISTROS DE ARCHIVOS Y MEMORIA DE DATOS

7.7.1. DR

Muestra el contenido de todos los registros de archivos y de los registros de funciones especiales talescomo :

Acumulador; Banderas y el Puntero de la pila.

7.7.2. EE Dirección

Modifica el contenido de la memoria especificada por Dirección en los Microcontroladores queretengan datos de memoria por EEPROM.

7.7.3. F registro_Archivo

Muestra o modifica el contenido de cualquier registro de archivo por dirección absoluta o nombresimbólico.

7.7.4. IR { ALL | RAM SFR }

Inicializa el contenido de todos los registros de archivo con valores aleatorios.

7.7.5. LR [ Nombre_Archivo ]

Carga el contenido de los registros de archivo con datos procedentes de un archivo de texto MSDOS.

7.7.6. SE [ I/O_Pin | Puerto ]

Muestra o modifica el valor de un Pin I/O o un puerto de Entrada/Salida.

7.7.7. UR { ALL | RAM | SFR } [ Nombre_Archivo ]

Descarga el contenido de los registros de archivo hacia un archivo de texto MSDOS.

Page 175: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

148

7.7.8. W

Muestra o modifica el contenido del registro de trabajo W (Acumulador)

7.7.9) ZR

Pone a “0” todos los registros de archivo.

7.8. ESTIMULOS Y TIEMPO

7.8.1. CK [ Pin, { #Alto, #Bajo | - } ]

Asigna un pulso de reloj a un Pin específico de cualquier puerto I/O, se tienen las siguientes opciones:

* Sin argumentos Muestra la asignación de pulsos de reloj actual

* Pin, #Alto, #Bajo Define el periodo de reloj asignado al Pin de puerto I/O

* Pin, - Deshabilita los pulsos de reloj del Pin definido

7.8.2. DK [ AltFxKey#, [ Pin, Evento ] | [ - ] ]

Asigna un evento asincrónico a la combinación de teclas Alt + FX (Teclas de función). Se tienen lassiguientes opciones:

* Sin Argumentos Muestra la asignación de todas las teclas de función

* AltFxkey# Muestra la asignación de ésta tecla de función en particular

* AltFxKey# - Cancela la función especificada previamente

* - Cancela todas las asignaciones actuales

* Evento= H, L, T, P (Alto, Bajo, Cambio, Pulso)

7.8.3. DW [ E | D ]

Habilita o Deshabilita el WatchDog Timer.

Page 176: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

149

* E; Habilita

* D; Deshabilita

* Sin Argumentos Muestra el estado del WDT.

7.8.4. FI {Nombre_Archivo, Dirección, Registro_Archivo [,n] | -}

Inyecta el siguiente valor numérico desde el archivo especificado por “Nombre_Archivo” en elregistro definido por “Registro_archivo” cuando el contador del programa tenga el valor declaradopor “Dirección”, repitiéndose “n” veces.

7.8.5. IP [ Tiempo | Paso ]

Punto de inyección. Inyecta un estímulo en concordancia con el conteo de tiempo o paso. Sinparámetros muestra el modo activo presente.

7.8.6. RE

Repone el tiempo transcurrido y el contador de pasos

7.8.7. SC [ Longitud_Ciclo ]

Muestra o define la longitud del ciclo de tiempo del microprocesador simulado.

7.8.8. ST Nombre_Archivo.Sti

Carga, lee y ejecuta el archivo de estímulos.

7.8.9) Verbose [ On | Off ]

Activa el eco hacia la ventana de comandos y el archivo de trazado, Cada vez que un estímulo esinyectado a un Pin o pines.

Sin argumentos muestra la disposición actual.

Page 177: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

150

7.8.10. WP { 1 | 2 | 3 | ... | 128 }

Define el tiempo de un periodo de corte en milisegundos del Watchdog Timer. De no especificarseparámetros se muestra la disposición actual.

7.8.11. ZT

Pone en “0” el contador de tiempo transcurrido.

7.9. CONTROL DE UNIONES DEL PROGRAMA ENMEMORIA

7.9.1. DP

Muestra todas las Uniones (Fuses) en formato simbólico, mostrándose tanto el código objeto originalcomo el nuevo código objeto.

7.9.2. RA

Restaurar todo. Redefine la tabla de uniones, limpia la tabla de símbolos y remueve todos los puntosde parada.

7.9.3. RP

Limpia la tabla de uniones y restaura todas las uniones a sus valores originales.

7.9.4. ZP

Pone a “0” la tabla de uniones. Reiniciando las uniones no hechas. Los cambios hechos al códigoobjeto no son afectados por tanto, el código objeto no puede ser restaurado a su valor original.

Page 178: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

151

7.10. VENTANA DE REGISTROS

7.10.1. LS Nombre_Archivo

Carga el archivo de símbolos definido por “Nombre_Archivo” en la tabla de símbolos internos.

7.10.2. AD Registro_Archivo [ , Radix [ , #Dígitos ] ]

Se utiliza éste comando para adicionar el registro de archivo que se desea monitorear a la ventana deregistros. El formato de éste comando es idéntico al del comando V (View Screen).

El comando AD no destruye el contenido actual de la ventana de comandos.

7.10.3. DV Registro_Archivo

Remueve (Borra) el registro de archivo definido de la ventana sin afectar el formato de la misma.

7.10.4. NV

Limpia la ventana actual de registros de archivo. El mismo efecto puede ser obtenido por redefiniciónde la ventana de registros utilizando el comando V.

7.10.5. TY Registro_Archivo, Radix, #Dígitos

Cambia el formato actual del registro de archivo especificado. Si el mismo no existe el MPSIMmuestra un mensaje de error. El Radix puede ser x, d, o, b (Hexadecimal, Decimal, Octal, Binario)respectivamente. El número de Dígitos es el número de espacios reservados para ésta variable almomento de mostrarla.

7.10.6. V Registro_Archivo [ , Radix [ , #Dígitos ] ]

Define el formato de la ventana de registros de archivo. Una vez definida, ésta se mantiene activahasta que un comando NV u otro comando V redefinan nuevamente la ventana de registros dearchivo. El registro de archivo es mostrado en el Radix definido previamente con la cantidad deDígitos definidos por #Dígitos. El Radix puede ser x, d, o, b (Hexadecimal, Decimal, Octal,Binario) respectivamente.

Page 179: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

152

7.11. DEFINICION DEL SISTEMA Y CONTROL

7.11.1. EL { 0 | 1 | 2 }

Define el nivel de error actual, los valores disponibles son :

* 0 Se muestran todos los mensajes

* 1 Se muestran mensajes de Alertas (Warnings) y Error solamente

* 2 Se muestran solamente los mensajes de Error.

De no definirse parámetros se muestra el nivel actual.

7.11.2. FW { MC | EM | MP | RC256 | RC64 | RC | OSC }

Palabra Guía. Selecciona el microcontrolador, extiende el microcontrolador o el modo de operacióndel microcontrolador y además define el modo guía de simulación para el Watchdog Timer en lafamilia PIC 17CXX. De no proporcionarse parámetros muestra el modo actual.

7.11.3. GE Nombre_Archivo

Obtiene comandos desde un archivo externo. Forza al MPSIM a leer y ejecutar los comandos que seencuentran en el archivo externo de texto ASCII MS-DOS. Sólo cuando se alcanza el final del archivoel control regresa al usuario.

7.11.4. LJ

Carga y ejecuta el archivo de jornada previa.

7.11.5. P XX

Selecciona el microcontrolador. Escoge el dispositivo microcontrolador apropiado. El valor pordefecto para XX es de 55, el cual equivale al PIC16C55s. XX es el sufijo del dispositivo.

Page 180: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

153

7.11.6. SR { O | X | D }

Definición del Radix. Define el Radix a utilizar por las operaciones de Entrada/Salida, los valorescorrespondientes son Octal, Hexadecimal, Decimal. El Radix puede ser utilizado en todas lasoperaciones a excepción del conteo de pasos.

Page 181: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

154

Page 182: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

155

8. DIRECTIVAS vs INSTRUCCIONESEn las páginas precedentes de éste manual se explicarón con mayor profundidad los comandos de lafamilia PIC16C5X. Para que pueda continuar con el software que se desarrollara a continuación sehace necesario definir dos conceptos básicos los cuales permitirán establecer las diferenciasfuncionales entre directiva e instrucción.

8.1. INSTRUCCIÓN

Es el comando más elemental que se puede ejecutar en cada familia de Microcontroladores, tambiénse le puede interpretar como la orden más sencilla con la cual se puede instruir al microcontroladorpara que ejecute una acción específica, en otras oportunidades se identifica al conjunto de comandosque conforman el Assembler como un lenguaje de “Bajo nivel” ya que a sido desarrollado para ser“Entendido” específicamente por el microcontrolador.

8.2. DIRECTIVA

Cón el desarrollo tecnológico de los Microprocesadores la tarea de programación se a simplificadoampliamente motivado al hecho de la disponibilidad de lenguajes de “Alto nivel”, es decir, el usuariodesarrolla un programa de aplicación utilizando una serie de comandos que son de muy fácilentendimiento para el operador humano ya que se utiliza la sintaxis del lenguaje cotidiano, sinembargo, el programa así generado no es comprensible para el microprocesador o microcontrolador,haciendose por tanto necesario “Traducir” éste programa de aplicación a un lenguaje de bajo nivelcomo el Assembler para que pueda ser “Entendido” y ejecutado por el microcontrolador. Es aquídonde intervienen los comandos del macro Assembler, éste conjunto de comandos conforman unlenguaje de alto nivel que facilitan la programación de los Microcontroladores PIC, debe entendersepor tanto que cada directiva sería traducida en una cadena equivalente de instrucciones en Assembleral momento de realizarse la compilación.

8.3. CARACTERÍSTICAS DE PROGRAMACIÓN

Una vez establecidas estas diferencias, continuaremos con una serie de características encontradasdurante el desarrollo de software utilizando el macro Assembler de la Microchip, luego setranscribirán los diferentes programas en los cuales se demuestran dichas características:

Page 183: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Bloque en el concepto de que se encuentra definido un inicio y un final.39

156

8.3.1. SÍMBOLOS PARA COMENTARIOS

Aunque previamente se estableció que se podría utilizar el asterisco (*) como símbolo para iniciar loscomentarios, el compilador sólo acepta para tal fin el punto y coma (;), es decir, se hace obligatoriocomenzar cualquier comentario en el archivo fuente con el punto y coma (;).

8.3.2. INDICATIVOS DE RADIX

La definición del Radix sólo se utiliza para indicarle al compilador en que sistema numérico seencuentran los valores declarados en variables y constantes, ya que luego el compilador los lleva abinario natural, los reúne en grupos de Ocho (8) bits y los muestra en hexadecimal por facilidad derepresentación.

Como una práctica de sintaxis sería conveniente trabajar en todo momento con el sistema numéricohexadecimal, para que exista portabilidad entre las referencias del programa y el simulador,recordando que en éste sistema se debe iniciar todo valor numérico con el número “0”, también seríaconveniente a objeto de estandarizar la representación, que todas las declaraciones numéricasestuviesen representadas a tres dígitos, es decir:

002, 008, 00B, 00F, 0BC, 0CF, ...

Donde los limites numéricos serían los siguientes en función del Radix declarado:

0# Octal (Oct)# 3770# Decimal (Dec) # 2550# Hexadecimal (Hex) # 0FF

8.3.3. BLOQUES DE CÓDIGO, DIRECTIVA WHILE

Todas las directivas del Macro Assembler sólo son operativas, es decir, tienen efecto o se ejecutansi se encuentran dentro de un “Bloque de código”, entendiendose por un bloque de código las39

instrucciones o directivas definidas dentro de un lazo While o dentro de un Macro. De no utilizarsecualquiera de estas estructuras de datos, los resultados de la interacción entre las directivas y lasinstrucciones es totalmente errático o aleatorio.

Inicialmente se estableció que las directivas eran traducidas en cadenas de instrucciones al momentode efectuarse la compilación, las cuales en conjunto ejecutarían la acción propuesta por la directiva.Si observamos los archivos de listado general de símbolos (*.LST) resultantes de la compilación delMPASM de archivos fuentes en los cuales se declaren bloques de código ya sea utilizando la directivawhile o la directiva macro, se podrá apreciar la siguiente característica:

Page 184: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

157

Todas las directivas o instrucciones que se encuentren dentro del bloque de código, son repetidas unastras de otras como bloques independientes el número de veces que se ejecute el llamado al macro oel número de veces que encuentre indicado en la comparación del lazo while, a simple vista se apreciauna contradicción de conceptos en cuanto al compilador, pero es otra forma de trabajar si se tienedisponible la memoria suficiente para invertirla en éste proceso a cambio de la legibilidad y facilidadde programación a nivel de usuario. Para aquellos amantes de la eficiencia, de programar enAssembler o que se encuentren escasos de memoria, ésto mismo se podría lograr utilizandomuchísima menos memoria si se generan las Subrutinas correspondientes utilizando las instruccionesdel PIC seleccionado, lo que en el argot de los programadores se conoce como “Hacerlo a Pie”.

En revisiones efectuadas al manual Microchip Embedded Control Handbook 1994/1995, alMicrochip 1997 Technical library, second editión CD-ROM, al Microchip June 1998 TechnicalLibrary CD-ROM y la dirección de INTERNET http://www.microchip.com/10/Lit/Index.html, seencuentran muy pocas referencias en cuanto la utilización de la directiva while, donde las que existenno exceden de dieciséis (16) conteos y son implementaciones de rutinas para funciones matemáticasen punto flotante, desarrolladas para la familia PIC17CXX motivado a su gran capacidad de memoria.

Otro aspecto a tener en cuenta con al lazo while es su “Transparencia” durante la simulación delprograma, ya que durante la misma no se podrán apreciar referencias visuales directas de que nosencontremos dentro de un lazo while, de no ser por el código (Instrucciones o Directivas) dentro dellazo, además de que no es posible anidar directivas while ya que el compilador las maneja comobloques de código independiente, es decir, se ejecuta primero el lazo de la directiva más externa paraluego proceder con la ejecución del lazo de la directiva más interna, sin que exista relación entreambas.

8.3.4. INSTRUCCIONES, FINALIZACIÓN DEL PROGRAMA

En revisiones del material indicado anteriormente, se puede apreciar que los programas de aplicacióngenerados por la Microchip se utilizan fundamentalmente los comandos del Set de instrucciones decada familia de Microcontroladores. Otro aspecto importante a nivel de sintaxis ésta relacionado conel hecho de que aunque se pueden asignar valores numéricos directamente a los registros de archivos,es más conveniente utilizar la directiva EQU y declarar en la cabecera del archivo todas las constantesnuméricas a utilizar en el programa, ya que de ser necesario efectuar una modificación de valores, sólose necesita realizarla en ésta sección del programa, otro aspecto relacionado con la sintaxis deprogramación es la necesidad de colocar la siguiente línea de comando inmediatamente antes de ladirectiva END:

;Label Mnemo. Operando Comentario... :Codigo... ;Codigo... ;CodogoGoto XXXX ;Ir a Label XXXX

;End ;FIN DE LA RUTINA PRINCIPAL

Page 185: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

158

Motivado al hecho de que la directiva END no detiene la ejecución del programa, es decir, el ProgramCounter continua el conteo y la ejecución del programa hasta la última dirección de memoria, dondedesde allí pasa automáticamente a la dirección 000 h y se inicia de nuevo la ejecución del programadesde el comienzo, a no ser, que la basura digital que se encuentre en las direcciones de memoria noutilizadas causen un reset o se “Entre” a un lazo Infinito, es decir, recursivo.

8.3.5. FLUJO DE INFORMACIÓN

Otro aspecto observado es que el sistema de variables generadas por la utilización de las directivasdel macro Assembler es unidireccional, es decir, se puede definir una variable, manipularla, moverlahacia el acumulador para luego enviarla al “Mundo exterior” a través de uno de los puertosdisponibles y hasta allí, ya que no es posible el proceso inverso, es decir, el resultado (Dato) generadopor el proceso (Mundo exterior) bajo la acción del microcontrolador, aunque puede ser leído por éstevía la utilización de un puerto, no es posible que sea asignado a una variable generada por unadirectiva del macro Assembler para luego ser manipulada y posteriormente regresarla al mundoexterior. La única manera de lograr la bidireccionalidad es utilizando el Set de instrucciones de cadaPIC, ya que a través del binomio registros de archivo/puerto se puede movilizar y manipular lainformación de la manera deseada.

8.4. PROGRAMAS DEMOSTRATIVOS

Tal como se estableció inicialmente, a continuación se transcriben los diferentes programas deaplicación (*.ASM, *.INI y *.STI) con los cuales se pretende demostrar lo establecido en los puntosanteriores, los mismos se encuentran disponibles en el directorio D:\Manual\ que se encuentra en elCD adjunto.

8.4.1. Directiva WHILE

En el archivo P01.ASM, se demuestra uno de los aspectos indicados en el punto 8.3.3 al utilizar ladirectiva WHILE, el funcionamiento de éste programa consiste en lo siguiente:

Se declaran Cuatro variables, ALFA, BETA, GAMMA y LAMDA, todas ellas se utilizan dentro deun lazo while, la variable ALFA lleva el conteo de cuantas veces se inicia la rutina principal desde elcomienzo, la variable LAMDA es el contador del lazo while, mientras lamda sea menor que 04h seincrementara la variable BETA, si LAMDA es igual o mayor que 04h pero menor que 08h, seincrementara la variable GAMMA, si LAMDA se hace igual a 08h el lazo while termina, iniciandosede nuevo y desde un comienzo la rutina principal incrementandose la variable ALFA.

Aunque se eligierón para los nombres de la variables letras del alfabeto griego, bien podrían haberseescogido nombres de personas, cosas o animales, se recomienda que los mismos sean mantenidosdentro de una longitud máxima de Ocho caracteres incluyendo numeral.

Page 186: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

159

Si se observa el simulador podrá apreciarse que aunque se encuentra declarada la variable LAMDA,la misma no es visible en cuanto a los incrementos de los cuales debería ser objeto, es por éste motivoque se coloco la siguiente línea de instrucción a continuación de la variable LAMDA:

;Label Mnemo. Operando ComentarioMovlw LAMDA ;Acumulador = LAMDA

Ya que el acumulador (Registro W) si indicaría los valores de la variable LAMDA, ésto ultimomotivado a la repetición de que son objeto las líneas de código dentro del lazo while.

8.4.1.1. Programa P01.ASM

;Archivo P01.ASM. Escrito por el Usuario.;;Label Nemotec. Operando Comentario ;; ;CONFIGURACION BASICA; List P=16C55 ;Tipo de PIC List R=Hex ;Formato Hexadecimal Org 000 ;Copiar a partir de 000h; ;;DECLARACION DE VARIABLES ;ALFA Equ 008 ;ALFA=Registro de Archivo 08hBETA Equ 009 ;BETA=Registro de Archivo 09h GAMMA Equ 00A ;GAMMA=Registro de Archivo 0Ah Variable LAMDA ;Declaración de LAMDA;; ;INICIALIZACION DE VARIABLES ; Clrf ALFA ;ALFA=00h Clrf BETA ;BETA=00h Clrf GAMMA ;GAMMA=00hLAMDA=000 ;LAMDA=00h ;;;INICIO DE LA RUTINA PRINCIPAL ;Start Clrf BETA ;Registro 09h=00h Clrf GAMMA ;Registro 0Ah=00h Incf ALFA,1 ;Incrementar en 1 Registro 08h

Page 187: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

160

LAMDA=000 ;LAMDA=00h Movlw LAMDA ;Acumulador=LAMDA While LAMDA<008 ;Mientras LAMDA<08hLAMDA+=1 ;LAMDA=LAMDA+1 Movlw LAMDA ;Acumulador=LAMDA If LAMDA<004 ;Si LAMDA<04h, Hacer: Incf BETA,1 ;Incrementar en 1 Registro 09h Else ;Si LAMDA>=04h, Hacer: Incf GAMMA,1 ;Incrementar en 1 Registro 0Ah Endif ;Final del If Endw ;Retorno del while Goto Start ;Ir a label Start ; End ;FIN DE LA RUTINA PRINCIPAL

8.4.1.2. Archivo P01.INI

;Archivo P01.INI. Escrito por el Usuario y cargado utilizando la orden GE P01 en la ventana de;comandos del simulador MPSIM; SR XZPZRZTRENVLO C:\PIC1617\P01.ASMAD ALFAAD BETAAD GAMMAAD LAMDAAD WRS

8.4.1.3. Archivo P01.LST

;Archivo P01.LST. Generado por el MPASM;MPASM 01.30 Released P01.ASM 5-13-1998 7:51:14 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT VALUE

Page 188: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

161

00001 ; 00002 ;Archivo P01.ASM. Escrito por el usuario 00003 ; 00004 ;Label Nemotec. Operando Comentario 00005 ; 00006 ; 00007 ;CONFIGURACION BASICA 00008 ; 00009 LIST P=16C55 ;Tipo de Pic 00010 LIST R=HEX ;Formato Hexadecimal0000 00011 ORG 000 ;Copiar a partir de 000h 00012 ; 00013 ; 00014 ;DECLARACION DE VARIABLES 00015 ; 00000008 00016 ALFA EQU 008 ;ALFA=Registro de Archivo 08h 00000009 00017 BETA EQU 009 ;BETA=Registro de Archivo 09h 0000000A 00018 GAMMA EQU 00A ;GAMMA=Registro de Archivo 0Ah 0000 00019 VARIABLE LAMDA ;Declaración de LAMDA 00020 ; 00021 ; 00022 ;INICIALIZACION DE VARIABLES 00023 ;0000 0068 00024 CLRF ALFA ;ALFA=00h 0001 0069 00025 CLRF BETA ;BETA=00h0002 006A 00026 CLRF GAMMA ;GAMMA=00h 00000000 00027 LAMDA=000 ;LAMDA=00h 00028 ; 00029 ; 00030 ;INICIO DE LA RUTINA PRINCIPAL 00031 ;0003 0069 00032 START CLRF BETA ;Registro 09h=00h0004 006A 00033 CLRF GAMMA ;Registro 0Ah=00h0005 02A8 00034 INCF ALFA,1 ;Incrementar en 1 Registro 08h 00000000 00035 LAMDA=000 ;LAMDA=00h 0006 0C00 00036 MOVLW LAMDA ;Acumulador=LAMDA 00037 WHILE LAMDA<008 ;Mientras LAMDA<08h 00000001 00038 LAMDA+=1 ;LAMDA=LAMDA+10007 0C01 00039 MOVLW LAMDA ;Acumulador=LAMDA 00040 IF LAMDA<004 ;Si LAMDA<04h, Hacer:0008 02A9 00041 INCF BETA,1 ;Incrementar en 1 Registro 09h 00042 ELSE ;Si LAMDA>=04h, Hacer: 00043 INCF GAMMA,1 ;Incrementar en 1 Registro 0Ah 00044 ENDIF ;Final del If 00000002 00038 LAMDA+=1 ;LAMDA=LAMDA+10009 0C02 00039 MOVLW LAMDA ;Acumulador=LAMDA

Page 189: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

162

00040 IF LAMDA<004 ;Si LAMDA<04h, Hacer:000A 02A9 00041 INCF BETA,1 ;Incrementar en 1 Registro 09h 00042 ELSE ;Si LAMDA>=04h, Hacer: 00043 INCF GAMMA,1 ;Incrementar en 1 Registro 0Ah 00044 ENDIF ;Final del If 00000003 00038 LAMDA+=1 ;LAMDA=LAMDA+1000B 0C03 00039 MOVLW LAMDA ;Acumulador=LAMDA 00040 IF LAMDA<004 ;Si LAMDA<04h, Hacer:000C 02A9 00041 INCF BETA,1 ;Incrementar en 1 Registro 09h 00042 ELSE ;Si LAMDA>=04h, Hacer: 00043 INCF GAMMA,1 ;Incrementar en 1 Registro 0Ah 00044 ENDIF ;Final del If 00000004 00038 LAMDA+=1 ;LAMDA=LAMDA+1000D 0C04 00039 MOVLW LAMDA ;Acumulador=LAMDA 00040 IF LAMDA<004 ;Si LAMDA<04h, Hacer: 00041 INCF BETA,1 ;Incrementar en 1 Registro 09h 00042 ELSE ;Si LAMDA>=04h, Hacer:000E 02AA 00043 INCF GAMMA,1 ;Incrementar en 1 Registro 0Ah 00044 ENDIF ;Final del If 00000005 00038 LAMDA+=1 ;LAMDA=LAMDA+1000F 0C05 00039 MOVLW LAMDA ;Acumulador=LAMDA 00040 IF LAMDA<004 ;Si LAMDA<04h, Hacer: 00041 INCF BETA,1 ;Incrementar en 1 Registro 09h 00042 ELSE ;Si LAMDA>=04h, Hacer:0010 02AA 00043 INCF GAMMA,1 ;Incrementar en 1 Registro 0Ah 00044 ENDIF ;Final del If 00000006 00038 LAMDA+=1 ;LAMDA=LAMDA+10011 0C06 00039 MOVLW LAMDA ;Acumulador=LAMDA 00040 IF LAMDA<004 ;Si LAMDA<04h, Hacer: 00041 INCF BETA,1 ;Incrementar en 1 Registro 09h 00042 ELSE ;Si LAMDA>=04h, Hacer:0012 02AA 00043 INCF GAMMA,1 ;Incrementar en 1 Registro 0Ah 00044 ENDIF ;Final del If 00000007 00038 LAMDA+=1 ;LAMDA=LAMDA+10013 0C07 00039 MOVLW LAMDA ;Acumulador=LAMDA 00040 IF LAMDA<004 ;Si LAMDA<04h, Hacer: 00041 INCF BETA,1 ;Incrementar en 1 Registro 09h 00042 ELSE ;Si LAMDA>=04h, Hacer:0014 02AA 00043 INCF GAMMA,1 ;Incrementar en 1 Registro 0Ah 00044 ENDIF ;Final del If 00000008 00038 LAMDA+=1 ;LAMDA=LAMDA+10015 0C08 00039 MOVLW LAMDA ;Acumulador=LAMDA 00040 IF LAMDA<004 ;Si LAMDA<04h, Hacer: 00041 INCF BETA,1 ;Incrementar en 1 Registro 09h 00042 ELSE ;Si LAMDA>=04h, Hacer:0016 02AA 00043 INCF GAMMA,1 ;Incrementar en 1 Registro 0Ah

Page 190: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

163

00044 ENDIF ;Final del If 00045 ENDW ;Retorno del while0017 0A03 00046 GOTO START ;Ir a label Start 00047 ; 00048 END ;FIN DE LA RUTINA PRINCIPAL

SYMBOL TABLELABEL VALUE

ALFA 00000008BETA 00000009GAMMA 0000000ALAMDA 00000008START 00000003__16C5 00000001

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : xxxxxxxxxxx xxxxxxxxxxxx xxxxx-------- ----------------0040 : ---------------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used: 24Program Memory Words Free: 488Errors : 0Warnings : 0 reported, 0 suppressedMessages : 0 reported, 0 suppressed

8.4.2. Directiva MACRO

En el archivo P02.ASM, el cual se muestra a continuación, se demuestra el otro aspecto indicado enel punto 8.3.3 al utilizar la directiva MACRO, el funcionamiento de este programa consiste en losiguiente:

La rutina principal llama a ejecución en Tres ocasiones diferentes al bloque de código identificadocomo Macro01 “Pasandole” en cada ocasión valores diferentes de conteo.

En principio éste macro consiste en la utilización del lazo while cuyo valor de conteo esproporcionado por el valor pasado al macro, dentro del mismo, existe la variable F09 la cual tiene porfunción indicar el número de llamadas al macro, la variable F08 nos indica el conteo máximo a realizarpor el lazo while, la variable W (Acumulador) tiene por función indicar el conteo actual del lazo whilepor asignación de la variable I, y la variable F0A nos indica el número total de conteos efectuadospor el lazo while. En ésta oportunidad la última línea de código no ejecuta un retorno por la

Page 191: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

164

instrucción GOTO a la dirección Start, lo hace a una dirección de memoria anterior en la cual seejecuta la inicialización de las variables.

8.4.2.1. Programa P02.ASM

;Programa P02.ASM. Escrito por el Usuario.;;Label Nemotec. Operando Comentario ;; ;CONFIGURACION BASICA; Processor 16C55 ;Tipo de Pic Radix Hex ;Formato Hexadecimal Org 000 ;Copiar a partir de 000H; ;;DECLARACION DE VARIABLES;F08 Equ 008 ;F08=Registro de archivo 08hF09 Equ 009 ;F09=Registro de archivo 09h F0A Equ 00A ;F0A=Registro de archivo 0Ah Constant Var01=006 ;Var01=Constante=06h Constant Nueve=009 ;Nueve=Constante=09h Variable COUNT ;Declaración de COUNT Variable I ;Declaración de I;;;INICIALIZACION DE VARIABLES;Inicio Clrw ;W=00h Clrf F08 ;F08=00h Clrf F09 ;F09=00h Clrf F0A ;F0A=00hCOUNT=000 ;COUNT=00hI=000 ;I=00h;;;DECLARACION DE MACROS;MACRO01 Macro COUNT ;Rutina del MacroI=000 ;inicialización de I Incf F09 ;F09=F09+1 Movlw COUNT ;Acumulador = COUNT Movwf F08 ;F08=Acumulador

Page 192: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

165

While I<=COUNT ;Mientras I<COUNT Movlw I ;Acumulador=I Incf F0A ;F0A=F0A+1 I+=1 ;I=I+1 Endw ;Retorno de I Endm ;Final del macro;;;INICIO DE LA RUTINA PRINCIPAL;Start MACRO01 003 ;Llamada al Macro01, COUNT=03h MACRO01 Var01 ;Llamada al Macro01, COUNT=06h MACRO01 Nueve ;Llamada al Macro01, COUNT=09h Goto Inicio ;Ir a label Inicio; End ;FIN DE LA RUTINA PRINCIPAL

8.4.2.2. Archivo P02.INI

;Archivo P02.INI. Escrito por el Usuario y cargado utilizando la orden GE P02 en la ventana de;comandos del simulador MPSIM;SR XZPZRZTRENVLO C:\PIC1617\P02.ASMAD F09AD F08AD WAD F0ARS

8.4.2.3. Archivo P02.LST

;Archivo P02.LST. Generado por el MPASM;MPASM 01.30 Released P02.ASM 5-13-1998 13:57:31 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT VALUE

Page 193: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

166

00001 ; 00002 ;Programa P02.ASM. Escrito por el Usuario. 00003 ; 00004 ;Label Nemotec. Operando Comentario 00005 ; 00006 ; 00007 ;CONFIGURACION BASICA 00008 ; 00009 PROCESSOR 16C55 ;Tipo de Pic 00010 RADIX HEX ;Formato Hexadecimal0000 00011 ORG 000 ;Copiar a partir de 000H 00012 ; 00013 ; 00014 ;DECLARACION DE VARIABLES 00015 ; 00000008 00016 F08 EQU 008 ;F08=Registro de archivo 08h 00000009 00017 F09 EQU 009 ;F09=Registro de archivo 09h 0000000A 00018 F0A EQU 00A ;F0A=Registro de archivo 0Ah 0006 00019 CONSTANT VAR01=006 ;Var01=Constante=06h 0009 00020 CONSTANT NUEVE=009 ;Nueve=Constante=09h 0000 00021 VARIABLE COUNT ;declaración de COUNT 0000 00022 VARIABLE I ;Declaración de I 00023 ; 00024 ; 00025 ;INICIALIZACION DE VARIABLES 00026 ;0000 0040 00027 INICIO CLRW ;W=00h0001 0068 00028 CLRF F08 ;F08=00h0002 0069 00029 CLRF F09 ;F09=00h 0003 006A 00030 CLRF F0A ;F0A=00h 00000000 00031 COUNT=000 ;COUNT=00h 00000000 00032 I=000 ;I=00h 00033 ; 00034 ; 00035 ;DECLARACION DE MACROS 00036 ; 00037 MACRO01 MACRO COUNT ;Rutina del Macro 00038 I=000 ;Inicialización de I 00039 INCF F09 ;F09=F09+1 00040 MOVLW COUNT ;Acumulador = COUNT 00041 MOVWF F08 ;F08=Acumulador 00042 WHILE I<=COUNT ;Mientras I<COUNT 00043 MOVLW I ;Acumulador=I 00044 INCF F0A ;F0A=F0A+1 00045 I+=1 ;I=I+1 00046 ENDW ;Retorno de I

Page 194: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

167

00047 ENDM ;Final del macro 00048 ; 00049 ; 00050 ;INICIO DE LA RUTINA PRINCIPAL 00051 ;0004 00052 START 00053 MACRO01 003 ;Llamada al Macro01, COUNT=03h 00000000 M I=000 ;Inicialización de I Message[305]: Using default destinatión of 1 (file).0004 02A9 M INCF F09 ;F09=F09+1 0005 0C03 M MOVLW 003 ;Acumulador = COUNT0006 0028 M MOVWF F08 ;F08=Acumulador M WHILE I<=003 ;Mientras I<COUNT 0007 0C00 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0008 02AA M INCF F0A ;F0A=F0A+1 00000001 M I+=1 ;I=I+10009 0C01 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).000A 02AAM INCF F0A ;F0A=F0A+1 00000002 M I+=1 ;I=I+1000B 0C02 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).000C 02AA M INCF F0A ;F0A=F0A+1 00000003 M I+=1 ;I=I+1000D 0C03 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).000E 02AA M INCF F0A ;F0A=F0A+1 00000004 M I+=1 ;I=I+1 M ENDW ;Retorno de I 00054 MACRO01 VAR01 ;Llamada al Macro01, COUNT=06h 00000000 M I=000 ;Inicialización de I Message[305]: Using default destinatión of 1 (file).000F 02A9 M INCF F09 ;F09=F09+1 0010 0C06 M MOVLW VAR01 ;Acumulador = COUNT0011 0028 M MOVWF F08 ;F08=Acumulador M WHILE I<=VAR01 ;Mientras I<COUNT 0012 0C00 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0013 02AA M INCF F0A ;F0A=F0A+1 00000001 M I+=1 ;I=I+10014 0C01 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0015 02AA M INCF F0A ;F0A=F0A+1 00000002 M I+=1 ;I=I+10016 0C02 M MOVLW I ;Acumulador=I

Page 195: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

168

Message[305]: Using default destinatión of 1 (file).0017 02AA M INCF F0A ;F0A=F0A+1 00000003 M I+=1 ;I=I+10018 0C03 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0019 02AA M INCF F0A ;F0A=F0A+1 00000004 M I+=1 ;I=I+1001A 0C04 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).001B 02AA M INCF F0A ;F0A=F0A+1 00000005 M I+=1 ;I=I+1001C 0C05 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).001D 02AA M INCF F0A ;F0A=F0A+1 00000006 M I+=1 ;I=I+1001E 0C06 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).001F 02AA M INCF F0A ;F0A=F0A+1 00000007 M I+=1 ;I=I+1 M ENDW ;Retorno de I 00055 MACRO01 NUEVE ;Llamada al Macro01, COUNT=09h 00000000 M I=000 ;Inicialización de I Message[305]: Using default destinatión of 1 (file).0020 02A9 M INCF F09 ;F09=F09+1 0021 0C09 M MOVLW NUEVE ;Acumulador = COUNT0022 0028 M MOVWF F08 ;F08=Acumulador M WHILE I<=NUEVE ;Mientras I<COUNT 0023 0C00 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0024 02AA M INCF F0A ;F0A=F0A+1 00000001 M I+=1 ;I=I+10025 0C01 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0026 02AA M INCF F0A ;F0A=F0A+1 00000002 M I+=1 ;I=I+10027 0C02 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0028 02AA M INCF F0A ;F0A=F0A+1 00000003 M I+=1 ;I=I+10029 0C03 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).002A 02AA M INCF F0A ;F0A=F0A+1 00000004 M I+=1 ;I=I+1002B 0C04 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).002C 02AA M INCF F0A ;F0A=F0A+1

Page 196: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

169

00000005 M I+=1 ;I=I+1002D 0C05 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).002E 02AA M INCF F0A ;F0A=F0A+1 00000006 M I+=1 ;I=I+1002F 0C06 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0030 02AA M INCF F0A ;F0A=F0A+1 00000007 M I+=1 ;I=I+10031 0C07 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0032 02AA M INCF F0A ;F0A=F0A+1 00000008 M I+=1 ;I=I+10033 0C08 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0034 02AA M INCF F0A ;F0A=F0A+1 00000009 M I+=1 ;I=I+10035 0C09 M MOVLW I ;Acumulador=IMessage[305]: Using default destinatión of 1 (file).0036 02AA M INCF F0A ;F0A=F0A+1 0000000A M I+=1 ;I=I+1 M ENDW ;Retorno de I0037 0A00 00056 GOTO INICIO ;Ir a label Inicio 00057 ; 00058 END ;FIN DE LA RUTINA PRINCIPAL

SYMBOL TABLELABEL VALUE

COUNT 00000000F08 00000008F09 00000009F0A 0000000AI 0000000AINICIO 00000000MACRO01 NUEVE 00000009START 00000004VAR01 00000006__16C55 00000001

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : xxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxx xxxxxxxx-----0040 : ---------------- ---------------- ---------------- ----------------

Page 197: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

170

All other memory blocks unused.

Program Memory Words Used: 56Program Memory Words Free: 456

Errors : 0Warnings : 0 reported, 0 suppressedMessages : 24 reported, 0 suppressed

8.4.3. Directivas IF, ELSE, ENDIF, fuera de un bloque de código

En el archivo P03.ASM, el cual se muestra a continuación, se puede apreciar los inconvenientescausados si se utilizan directivas del macro Assembler fuera de bloques de código, el funcionamientode éste programa consiste en lo siguiente:

Este programa es un derivado del archivo P01.ASM, en el mismo se utiliza el principio de incrementopor comparación con la diferencia de que se utilizan las directivas IF, ELSE, ENDIF fuera de un lazoWHILE, sin embargo la instrucción “GOTO Start” me garantiza la recursividad necesaria para formarun lazo.

La variable K es la que se incrementa a efectos de control de comparación, mientras K sea menor que“7” se incrementara la variable Reg9, cuando K sea mayor o igual que”7” se incrementara la variableRegA.

8.4.3.1. Programa P03.ASM

;Programa P03.ASM. Escrito por el Usuario;;Label Nemotec. Operando Comentario ;; ;CONFIGURACION BASICA; Processor 16C55 ;Tipo de Pic Radix hex ;Formato Hexadecimal Org 000 ;Copiar a partir de 000H; ;;DECLARACION DE VARIABLES;Reg9 Equ 009 ;Reg9=Registro de archivo 09h RegA Equ 00A ;RegA=Registró de archivo 0Ah Variable K ;Declaración de K

Page 198: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

171

;;;INICIALIZACION DE VARIABLES;Inicio Clrw ;W=00h Clrf Reg9 ;Reg9=00h Clrf RegA ;RegA=00hK=000 ;K=00h;;;INICIO DE LA RUTINA PRINCIPAL;Start K += 1 ;K=K+1 Movlw K ;Acumulador=K If K < 07 ;Si K < 07 Incf Reg9,1 ;Incrementar Registro 9 Else ;En caso contrario (K>=127) Incf RegA,1 ;Incrementar Registro 10 Endif ;Final del Primer If Goto Start ;Ir a label start; End ;FIN DE LA RUTINA PRINCIPAL

8.4.3.2. Archivo P03.INI

;Archivo P03.INI. Escrito por el Usuario y cargado utilizando la orden GE P03 en la ventana de;comandos del simulador MPSIM;SR XZPZRZTRENVLO C:\PIC1617\P03.ASMAD F09AD F0AAD WRS

8.4.3.3. Archivo P03.LST

;Archivo P03.LST. Generado por el MPASM

Page 199: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

172

;MPASM 01.30 Released P03.ASM 5-13-1998 15:47:06 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT VALUE

00001 ; 00002 ;Programa P03.ASM. Escrito por el Usuario 00003 ; 00004 ;Label Nemotec. Operando Comentario 00005 ; 00006 ; 00007 ;CONFIGURACION BASICA 00008 ; 00009 PROCESSOR 16C55 ;Tipo de Pic 00010 RADIX HEX ;Formato Hexadecimal0000 00011 ORG 000 ;Copiar a partir de 000H 00012 ; 00013 ; 00014 ;DECLARACION DE VARIABLES 00015 ; 00000009 00016 REG9 EQU 009 ;Reg9=Registro de archivo 09h 0000000A 00017 REGA EQU 00A ;RegA=Registro de archivo 0Ah 0000 00018 VARIABLE K ;Declaración de K 00019 ; 00020 ; 00021 ;INICIALIZACION DE VARIABLES 00022 ;0000 0040 00023 INICIO CLRW ;W=00h0001 0069 00024 CLRF REG9 ;Reg9=00h0002 006A 00025 CLRF REGA ;RegA=00h 00000000 00026 K=000 ;K=00h 00027 ; 00028 ; 00029 ;INICIO DE LA RUTINA PRINCIPAL 00030 ;0003 00031 START 00000001 00032 K += 1 ;K=K+1 0003 0C01 00033 MOVLW K ;Acumulador=K 00034 IF K < 07 ;Si K < 07 0004 02A9 00035 INCF REG9,1 ;Incrementar Registro 9 00036 ELSE ;En caso contrario (K>=127) 00037 INCF REGA,1 ;Incrementar Registro 10 00038 ENDIF ;Final del Primer If0005 0A03 00039 GOTO START ;Ir a label start 00040 ;

Page 200: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

173

00041 END ;FIN DE LA RUTINA PRINCIPAL

SYMBOL TABLE LABEL VALUE

INICIO 00000000K 00000001REG9 00000009REGA 0000000ASTART 00000003__16C55 00000001

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : xxxxxxxxx--- ---------------- ---------------- ----------------0040 : ---------------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used: 6Program Memory Words Free: 506

Errors : 0Warnings : 0 reported, 0 suppressedMessages : 0 reported, 0 suppressed

8.4.4. Anidamiento de la directiva While

En éste programa se demuestran los inconvenientes del anidamiento de la directiva WHILE, en elmismo la función del registro de archivo 08h es llevar el conteo de la cantidad de veces que se llamaa ejecución la rutina Delay, el registro de archivo 09h nos indica la el conteo del lazo I, y el registrode archivo 0Ah nos indica el conteo del lazo J.

8.4.4.1. Programa P04.ASM

;Programa P04.ASM. Escrito por el Usuario;;Label Nemotec. Operando Comentario ;;;CONFIGURACION BASICA; list p=16c55 ;Tipo de Pic

Page 201: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

174

list r=hex ;Formato Hexadecimal org 0x1ff ;Vector de interrupción por WDT goto start ;Ir a label start org 000 ;Copiar a partir de 000;;;INICIALIZACION DE VARIABLES; clrf 008 ;f08=00h;;;INICIO DE LA RUTINA PRINCIPAL ;start: clrf 009 ;f09=00h clrf 00A ;f0A=00h incf 008,1 ;f08=f08+1 goto delay ;ir a delay goto start ;ir a start;delay: ;función delay variable i=0 ;Declaración e Inicialización de i

variable j=0 ;Declaración e Inicialización de j constant k=005 ;k=05h while i < k ;mientras i<05h while j < k ;mientras j<05hj += 1 ;j=j+1 incf 009,1 ;f09=f09+1 endw ;retorno de ji += 1 ;i=i+1 incf 00A,1 ;f0A=f0A+1 endw ;retorno de i goto start ;ir a Inicio end ;FIN DE LA RUTINA PRINCIPAL

8.4.4.2. Archivo P04.INI

;Archivo P04.INI. Escrito por el Usuario y cargado utilizando la orden GE P04 en la ventana de;comandos del simulador MPSIM;SR XZPZRZTRENV

Page 202: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

175

LO C:\PIC1617\P04.ASMAD F08AD F09AD F0AAD IAD JRS

8.4.4.3. Archivo P04.LST

;Archivo P04.LST. Generado por el MPASM;MPASM 01.30 Released P04.ASM 5-14-1998 10:45:04 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT VALUE

00001 ; 00002 ;Programa P04.ASM. Escrito por el Usuario 00003 ; 00004 ;Label Nemotec. Operando Comentario 00005 ; 00006 ; 00007 ;CONFIGURACION BASICA 00008 ; 00009 LIST P=16C55 ;Tipo de Pic 00010 LIST R=HEX ;Formato Hexadecimal01FF 00011 ORG 0X1FF ;Vector de interrupción por WDT01FF 0C01 00012 GOTO START ;Ir a label start0000 00013 ORG 000 ;Copiar a partir de 000 00014 ; 00015 ; 00016 ;INICIALIZACION DE VARIABLES 00017 ;0000 0068 00018 CLRF 008 ;f08=00h 00019 ; 00020 ; 00021 ;INICIO DE LA RUTINA PRINCIPAL 00022 ;0001 0069 00023 START: CLRF 009 ;f09=00h0002 006A 00024 CLRF 00A ;f0A=00h0003 02A8 00025 INCF 008,1 ;f08=f08+10004 0A06 00026 GOTO DELAY ;ir a delay0005 0A01 00027 GOTO START ;ir a start 00028 ;

Page 203: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

176

0006 00029 DELAY: ;función delay 0000 00030 VARIABLE I=0 ;i=00h 0000 00031 VARIABLE J=0 ;j=00h 0005 00032 CONSTANT K=005 ;k=05h 00033 WHILE I < K ;mientras i<05h 00034 WHILE J < K ;mientras j<05h 00000001 00035 J += 1 ;j=j+10006 02A9 00036 INCF 009,1 ;f09=f09+1 00000002 00035 J += 1 ;j=j+10007 02A9 00036 INCF 009,1 ;f09=f09+1 00000003 00035 J += 1 ;j=j+10008 02A9 00036 INCF 009,1 ;f09=f09+1 00000004 00035 J += 1 ;j=j+10009 02A9 00036 INCF 009,1 ;f09=f09+1 00000005 00035 J += 1 ;j=j+1000A 02A9 00036 INCF 009,1 ;f09=f09+1 00037 ENDW ;retorno de j 00000001 00038 I += 1 ;i=i+1000B 02AA 00039 INCF 00A,1 ;f0A=f0A+1 00034 WHILE J < K ;mientras j<05h 00035 J += 1 ;j=j+1 00036 INCF 009,1 ;f09=f09+1 00037 ENDW ;retorno de j 00000002 00038 I += 1 ;i=i+1000C 02AA 00039 INCF 00A,1 ;f0A=f0A+1 00034 WHILE J < K ;mientras j<05h 00035 J += 1 ;j=j+1 00036 INCF 009,1 ;f09=f09+1 00037 ENDW ;retorno de j 00000003 00038 I += 1 ;i=i+1000D 02AA 00039 INCF 00A,1 ;f0A=f0A+1 00034 WHILE J < K ;mientras j<05h 00035 J += 1 ;j=j+1 00036 INCF 009,1 ;f09=f09+1 00037 ENDW ;retorno de j 00000004 00038 I += 1 ;i=i+1000E 02AA 00039 INCF 00A,1 ;f0A=f0A+1 00034 WHILE J < K ;mientras j<05h 00035 J += 1 ;j=j+1 00036 INCF 009,1 ;f09=f09+1 00037 ENDW ;retorno de j 00000005 00038 I += 1 ;i=i+1000F 02AA 00039 INCF 00A,1 ;f0A=f0A+1 00040 ENDW ;retorno de i0010 0A01 00041 GOTO START ;ir a Inicio 00042 END ;FIN DE LA RUTINA PRINCIPAL

Page 204: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

177

SYMBOL TABLE LABEL VALUE

DELAY 00000006I 00000005J 00000005K 00000005START 00000001__16C55 00000001

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : xxxxxxxxxxxx xxxxxxxxxxxxx xxxxxx---- ----------------0040 : ---------------- ---------------- ---------------- ----------------0180 : ---------------- ---------------- ---------------- ----------------01C0 : ---------------- ---------------- ---------------- --------------x

All other memory blocks unused.

Program Memory Words Used: 18Program Memory Words Free: 494

Errors : 0Warnings : 0 reported, 0 suppressedMessages : 0 reported, 0 suppressed

8.4.5. Programa por instrucciones

A continuación se transcribe un archivo fuente en el cual no se utilizan directivas del macro Assemblerpara el control del proceso del programa, el mismo consiste el incremento binario de la variableDATO con un retardo definido por el usuario a través de la constante TIEMPO, para la rutina deretardo se utilizan dos lazos por decrementación, los cuales se encuentran anidados y utilizan cadauno las variables RETEXT y RETINT. Para que pueda apreciar su funcionamiento se recomienda eluso del comando E cuando se éste utilizando el simulador MPSIM.

8.4.5.1. Programa P05.ASM

;Programa P05.ASM. Escrito por el Usuario.;;Label Nemotec. Operando Comentario ;;

Page 205: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

178

;CONFIGURACION BASICA; Processor 16C55 ;Tipo de Pic Radix Hex ;Formato Hexadecimal Org 000 ;Copiar a partir de 00h;;;DECLARACION DE VARIABLES; DATO Equ 008 ;Registro a ser incrementado RETEXT Equ 009 ;Lazo de retardo más externoRETINT Equ 00A ;Lazo de retardo más internoTIEMPO Equ 002 ;Tiempo de retardo = 02h; ;;INICIALIZACION DE VARIABLES;Inicio Clrw ;Acumulador=00h Clrf RETEXT ;RETEXT=00h Clrf RETINT ;RETINT=00h Clrf DATO ;DATO=00h;;;INICIO DE LA RUTINA PRINCIPAL;Start Incf DATO ;DATO=DATO+1 Call Retardo ;Llamado a rutina de Retardo Goto Start ;Ir a label start;;;INICIO DE LA RUTINA DE RETARDO;Retardo Movlw TIEMPO ;Acumulador = TIEMPO Movwf RETEXT ;RETEXT=AcumuladorRet01 Decfsz RETEXT ;RETEXT=RETEXT-1 Goto Ret02 ;Si RETEXT >< 0, ir a Ret02 Retlw 000 ;Retornar con Acumulador=00hRet02 Decfsz RETINT ;RETINT=RETINT-1 Goto Ret02 ;Si RETINT >< 0, ir a Ret02 Goto Ret01 ;Ir a label Ret01; End ;FIN DE LA RUTINA PRINCIPAL

Page 206: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

179

8.4.5.2. Archivo P05.INI

;Archivo P05.INI. Escrito por el Usuario y cargado utilizando la orden GE P05 en la ventana de;comandos del simulador MPSIM;SR XZPZRZTRENVLO C:\PIC1617\P05.ASMAD WAD RETEXTAD RETINTAD DATO, B, 8RS

8.4.5.3. Archivo P05.LST

;Archivo P05.LST. Generado por el MPSIM;MPASM 01.30 Released P05.ASM 5-14-1998 14:42:09 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT VALUE

00001 ; 00002 ;Programa P05.ASM. Escrito por el Usuario. 00003 ; 00004 ;Label Nemotec. Operando Comentario 00005 ; 00006 ; 00007 ;CONFIGURACION BASICA 00008 ; 00009 PROCESSOR 16C55 ;Tipo de Pic 00010 RADIX HEX ;Formato Hexadecimal0000 00011 ORG 000 ;Copiar a partir de 00h 00012 ; 00013 ; 00014 ;DECLARACION DE VARIABLES 00015 ; 00000008 00016 DATO EQU 008 ;Registro a ser incrementado 00000009 00017 RETEXT EQU 009 ;Lazo de retardo más externo 0000000A 00018 RETINT EQU 00A ;Lazo de retardo más interno

Page 207: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

180

00000002 00019 TIEMPO EQU 002 ;Tiempo de retardo = 02h 00020 ; 00021 ; 00022 ;INICIALIZACION DE VARIABLES 00023 ;0000 0040 00024 INICIO CLRW ;Acumulador=00h0001 0069 00025 CLRF RETEXT ;RETEXT=00h0002 006A 00026 CLRF RETINT ;RETINT=00h0003 0068 00027 CLRF DATO ;DATO=00h 00028 ; 00029 ; 00030 ;INICIO DE LA RUTINA PRINCIPAL 00031 ;Message[305]: Using default destinatión of 1 (file).0004 02A8 00032 START INCF DATO ;DATO=DATO+10005 0907 00033 CALL RETARDO ;Llamado a rutina de Retardo0006 0A04 00034 GOTO START ;Ir a label start 00035 ; 00036 ; 00037 ;INICIO DE LA RUTINA DE RETARDO 00038 ;0007 0C02 00039RETARDOMOVLW TIEMPO ;Acumulador = TIEMPO 0008 0029 00040 MOVWF RETEXT ;RETEXT=AcumuladorMessage[305]: Using default destinatión of 1 (file).0009 02E9 00041 RET01 DECFSZ RETEXT ;RETEXT=RETEXT-1000A 0A0C 00042 GOTO RET02 ;Si RETEXT >< 0, ir a Ret02000B 0800 00043 RETLW 000 ;Retornar con Acumulador=00hMessage[305]: Using default destinatión of 1 (file).000C 02EA 00044 RET02 DECFSZ RETINT ;RETINT=RETINT-1000D 0A0C 00045 GOTO RET02 ;Si RETINT >< 0, ir a Ret02000E 0A09 00046 GOTO RET01 ;Ir a label Ret01 00047 ; 00048 END ;FIN DE LA RUTINA PRINCIPAL

SYMBOL TABLE LABEL VALUE

DATO 00000008INICIO 00000000RET01 00000009RET02 0000000CRETARDO 00000007RETEXT 00000009RETINT 0000000ASTART 00000004TIEMPO 00000002

Page 208: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

181

__16C55 00000001

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : xxxxxxxxxxx-- -------------- ---------------- ----------------0040 : ---------------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used: 15Program Memory Words Free: 497

Errors : 0Warnings : 0 reported, 0 suppressedMessages : 3 reported, 0 suppressed

8.4.6. Programa de aplicación

A continuación se presenta un programa de aplicación en el cual pueden ser controlados por elusuario una serie de efectos sobre una secuencia de luces, las mismas corresponden a un dato ennumeración binaria, utilizando para ello pulsadores normalmente abiertos y diodos LED. Lascaracterísticas que ofrece el programa son las siguientes:

* Disminuir la velocidad del efecto.

* Cambio consecutivo (Por pulsador) de los siguientes efectos:Rotación de derecha a izquierdaRotación de izquierda a derechaIntercambio de los Nibbles de menor peso con los Nibbles de mayor pesoIncremento binario del dato en forma consecutivaDecremento binario del dato en forma consecutiva

* incremento binario del dato bajo efecto en modo paso a paso (Por pulsador)

* decremento binario del dato bajo efecto en modo paso a paso (Por pulsador)

Además se incluye una Subrutina que evita el efecto de rebote de los contactos, reduciendo por tantola circuitería final. También se implementa a nivel de software la simulación de interrupciones(Pulsadores), utilizando la combinación de teclas ALT+FX (Alt + Función) para emular la utilizaciónde los pulsadores, éste punto se describe mejor en la cabecera del archivo P06.INI

En el apartado DEFINICIONES DE ACTIVACION del archivo P06.ASM se hace necesario tenermucho cuidado con el literal DELAY ya que éste determinara el tiempo del efecto motivado a que

Page 209: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

182

el simulador MPSIM en el PC utilizado, trabaja a una frecuencia de 2 Mhz ya que utiliza variosperiodos del bus de datos, es decir, que es independiente de la frecuencia del micro del PC, por tantopara que pueda apreciar el efecto se hace necesario que la variable DELAY tenga un valor de 02h,ésto se logra quitando el (;) al comienzo de la línea correspondiente. Cuando se desea programar elPIC se hace necesario que la variable DELAY tenga un valor de 55h, por tanto hay que colocar el(;) en la línea que define el DELAY a un valor de 02h y quitar el (;) al comienzo de la línea que defineel literal DELAY a un valor de 55h, siendo imprescindible por tanto volver a compilar el archivoP06.ASM a través del MPASM. El archivo P06.LST se encuentra configurado para programación,se recomienda su revisión.

8.4.6.1. Programa P06.ASM

;Programa P06.ASM. Escrito por el usuario. Efectos en Binario del Registro de Archivo 06h, Puerto;B, utilizando el Registro de Archivo 05h, Puerto A, para variar el dato a ser manejado por el efecto,;la velocidad del efecto y el tipo de efecto.;;;Label Nemotec. Operando Comentario ;;CONFIGURACIONES BASICAS

List P=16C55 ;Tipo de Pic List R=Hex ;Formato Hexadecimal List F=Inhx8m ;Formato de salida Binaria Org 000 ;Copiar a partir de la dirección 000h;;DECLARACIONES DE VARIABLES Y CONSTANTESSTATUS Equ 003 ;Registro 03, Estado de las Banderas PTO_A Equ 005 ;Registro 05, Puerto APTO_B Equ 006 ;Registro 06, Puerto BRETEXT Equ 008 ;Registro 08, Lazo de Retardo más Externo RETINT Equ 009 ;Registro 09, Lazo de Retardo más InternoDELAY Equ 00A ;Registro 0A, Memoria para tiempo de retardo EFECTO Equ 00B ;Registro 0B, Memoria para determinar el efectoDATO Equ 00C ;Registro 0C, Memoria para dato; ;DEFINICIONES DE ACTIVACION Movlw 000 ;W=00h Tris PTO_B ;Habilitación del puerto B como Salida Movlw 001 ;W=01h Movwf PTO_B ;PTO_B=W Movwf EFECTO ;EFECTO=W Movwf DATO ;DATO=W; Movlw 002 ;W=02h, para simulación, quitar (;) al inicio ; Movlw 055 ;W=55h, para programación, quitar (;) al inicio Movwf DELAY ;DELAY=W

Page 210: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

183

;;COMIENZO DEL PROGRAMAStart Btfsc PTO_A,0 ;Si PTO_A:XXX0, Ir a Pro01 Call SubeT ;Llamado a Rutina para Incrementar TiempoPro01 Btfsc PTO_A,1 ;Si PTO_A:XX0X, Ir a Pro02

Call Cambio ;Llamado a Rutina para cambiar de efectoPro02 Btfsc PTO_A,2 ;Si PTO_A:X0XX, Ir a Pro03 Call SubeDato ;Llamada a Rutina para incrementar datoPro03 Btfsc PTO_A,3 ;Si PTO_A:0XXX, Ir a Pro04 Call BajaDato ;Llamada a Rutina para decrementar datoPro04 Call Retardo ;Llamado a Rutina de retardo Btfsc EFECTO,0 ;Si EFECTO:XXXX0, Ir a Pro05 Rlf PTO_B,1 ;PTO_B Rota a la IzquierdaPro05 Btfsc EFECTO,1 ;Si EFECTO:XXX0X, Ir a Pro06 Rrf PTO_B,1 ;PTO_B Rota a la Derecha Pro06 Btfsc EFECTO,2 ;Si EFECTO:XX0XX, Ir a Pro07 Swapf PTO_B,1 ;PTO_B Intercambia de Nibbles Pro07 Btfsc EFECTO,3 ;Si EFECTO:X0XXX, Ir a Pro08 Incf PTO_B,1 ;PTO_B Se incrementa Pro08 Btfsc EFECTO,4 ;Si EFECTO:0XXXX, Ir a Pro09 Decf PTO_B,1 ;PTO_B Se decrementa Pro09 Goto Start ;Ir a label Start ;;RUTINA DE RETARDORetardo Movf DELAY,0 ;W=DELAY Movwf RETEXT ;RETEXT=WRet01 Decfsz RETEXT ;RETEXT- =1, Si RETEXT=00h ir a Ret02 Goto Ret03 ;Ir a Ret03Ret02 Retlw 000 ;Retornar con W=00hRet03 Clrf RETINT ;RETINT=00h Ret04 Decfsz RETINT ;RETINT-=1, Si RETINT=00h ir a Ret05 Goto Ret04 ;Ir a Ret04Ret05 Goto Ret01 ;Ir a Ret01;;RUTINA PARA INCREMENTAR EL TIEMPO SubeT Movlw DELAY ;W=Valor de incremento del retardo Addwf DELAY,1 ;DELAY + = W

Call Rebote ;Llamado a Rutina Anti Rebotes Bcf STATUS,0 ;Bit de Carry en Registro STATUS=00h Retlw 000 ;Retornar con W=00h;;RUTINA PARA CAMBIAR EL EFECTOCambio Btfsc EFECTO,4 ;Si EFECTO:0XXXX, Ir a Cam01 Goto Cam02 ;Ir a Cam02Cam01 Bcf STATUS,0 ;Bit de Carry en Registro STATUS=00h Rlf EFECTO,1 ;Rotar EFECTO a la Izquierda

Page 211: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

184

Call Rebote ;Llamado a Rutina Anti Rebotes Retlw 000 ;Retornar con W=00h Cam02 Movlw 001 ;W=01h Movwf EFECTO ;EFECTO=01h Call Rebote ;Llamado a Rutina Anti Rebotes Retlw 000 ;Retornar con W=00h ;;RUTINA PARA EVITAR LOS REBOTES Y ESTABILIZARRebote Movf DATO,0 ;W=DATO Movwf PTO_B ;PTO_B=WReb01 Btfsc PTO_A,0 ;Si PTO_A:XXX0, Ir a Reb02 Goto Reb01 ;Ir a Reb01 Reb02 Btfsc PTO_A,1 ;Si PTO_A:XX0X, Ir a Reb03 Goto Reb02 ;Ir a Reb02 Reb03 Btfsc PTO_A,2 ;Si PTO_A:X0XX, Ir a Reb04 Goto Reb03 ;Ir a Reb03 Reb04 Btfsc PTO_A,3 ;Si PTO_A:0XXX, Ir a Reb05 Goto Reb04 ;Ir a Reb04 Reb05 Retlw 000 ;Retornar con W=00h;;RUTINA PARA INCREMENTAR EL DATOSubeDato Incf DATO,1 ;DATO+=1 Call Rebote ;Llamado a Rutina Anti Rebotes Retlw 000 ;Retornar con W=00h;;RUTINA PARA DECREMENTAR EL DATOBajaDato Decf DATO,1 ;DATO-=1 Call Rebote ;Llamado a Rutina Anti Rebotes Retlw 000 ;Retormar con W=00h;;FINAL DEL PROGRAMAEnd

8.4.6.2. Archivo P06.INI

;Archivo P06.INI. Escrito por el Usuario y cargado utilizando la orden GE P06 en la ventana de;comandos del simulador MPSIM, las siguientes combinaciones de teclas tienen los efectos indicados;cuando se ejecuta el comando E:;ALT + F1 = Disminuir el tiempo de duración del efecto (Incrementar velocidad);ALT + F2 = Cambiar de efecto;ALT + F3 = Incrementar el dato binario bajo el efecto en modo paso a paso;ALT + F4 = Decrementar el dato binario bajo el efecto en modo paso a paso;ALT + F12 = Reset (Pin MCLR a nivel bajo);Alt + FX, Significa ambas teclas precionadas al mismo tiempo;

Page 212: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

185

NVSR XZPZRZTRELO C:\PIC1617\P06.ASMST C:\PIC1617\P06.STIAD DATO,B,8AD PTO_B,B,8AD PTO_A,B,4 AD EFECTO,B,5AD DELAYAD RETEXTAD RETINTAD WDK 1,RA0,TDK 2,RA1,TDK 3,RA2,TDK 4,RA3,TDK 12,MCLR,PRS

8.4.6.3. Archivo P06.STI

!! Archivo P06.STI. Señales a ser "Inyectadas" en el puerto A del archivo P06.ASM, Registro de! archivo 05, para definir condiciones iniciales.! Step RA3 RA2 RA1 RA01 0 0 0 0

8.4.6.4. Archivo P06.LST

MPASM 01.30 Released TITO32.ASM 7-1-1998 9:23:45 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT VALUE

00001 ; 00002 ;Programa P06.ASM. Efectos en Binario del Registro de Archivo 06h, Puerto utilizando el 00003 ;Registro de Archivo 05h, Puerto A, para variar el dato a ser manejado por el efecto, la 00004 ;velocidad del efecto y el tipo de efecto. 00005 ; 00006 ;

Page 213: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

186

00007 ;Label Nemotec. Operando Comentario 00008 ; 00009 ;CONFIGURACIONES BASICAS Warning[215]: Processor superceded by command line. Verify processor symbol. 00010 LIST P=16C55 ;Tipo de Pic 00011 LIST R=HEX ;Formato Hexadecimal 00012 LIST F=INHX8M ;Formato de salida Binaria0000 00013 ORG 000 ;Copiar a partir de la dirección 000h 00014 ; 00015 ;DECLARACIONES DE VARIABLES Y CONSTANTES 00000003 00016 STATUS EQU 003 ;Registro 03, Estado de las Banderas 00000005 00017 PTO_A EQU 005 ;Registro 05, Puerto A 00000006 00018 PTO_B EQU 006 ;Registro 06, Puerto B 00000008 00019 RETEXT EQU 008 ;Registro 08, Lazo de Retardo más Externo 00000009 00020 RETINT EQU 009 ;Registro 09, Lazo de Retardo más Interno 0000000A 00021 DELAY EQU 00A ;Registro 0A, Memoria para tiempo de

;retardo 0000000B 00022 EFECTO EQU 00B ;Registro 0B, Memoria para determinar el

;efecto 0000000C 00023 DATO EQU 00C ;Registro 0C, Memoria para dato 00024 ; 00025 ;DEFINICIONES DE ACTIVACION 0000 0C00 00026 MOVLW 000 ;W = 00h 0001 0006 00027 TRIS PTO_B ;Habilitación del puerto B como Salida0002 0C01 00028 MOVLW 001 ;W = 01h0003 0026 00029 MOVWF PTO_B ;PTO_B = W0004 002B 00030 MOVWF EFECTO ;EFECTO = W 0005 002C 00031 MOVWF DATO ;DATO = W0006 0C02 00032 MOVLW 055 ;W = 55h0007 002A 00033 MOVWF DELAY ;DELAY = W 00034 ; 00035 ;COMIENZO DEL PROGRAMA0008 0605 00036 START BTFSC PTO_A,0 ;Si PTO_A:XXX0, Ir a Pro01 0009 0925 00037 CALL SUBET ;Llamado a Rutina para Incrementar Tiempo000A 0625 00038 PRO01 BTFSC PTO_A,1 ;Si PTO_A:XX0X, Ir a Pro02 000B 092A 00039 CALL CAMBIO ;Llamado a Rutina para cambiar de efecto000C 0645 00040 PRO02 BTFSC PTO_A,2 ;Si PTO_A:X0XX, Ir a Pro03000D 093F 00041 CALL SUBEDATO ;Llamada a Rutina para incrementar dato000E 0665 00042 PRO03 BTFSC PTO_A,3 ;Si PTO_A:0XXX, Ir a Pro04000F 0942 00043 CALL BAJADATO ;Llamada a Rutina para decrementar dato0010 091C 00044 PRO04 CALL RETARDO ;Llamado a Rutina de retardo0011 060B 00045 BTFSC EFECTO,0 ;Si EFECTO:XXXX0, Ir a Pro05 0012 0366 00046 RLF PTO_B,1 ;PTO_B Rota a la Izquierda0013 062B 00047 PRO05 BTFSC EFECTO,1 ;Si EFECTO:XXX0X, Ir a Pro06 0014 0326 00048 RRF PTO_B,1 ;PTO_B Rota a la Derecha 0015 064B 00049 PRO06 BTFSC EFECTO,2 ;Si EFECTO:XX0XX, Ir a Pro07 0016 03A6 00050 SWAPF PTO_B,1 ;PTO_B Intercambia de Nibbles 0017 066B 00051 PRO07 BTFSC EFECTO,3 ;Si EFECTO:X0XXX, Ir a Pro08 0018 02A6 00052 INCF PTO_B,1 ;PTO_B Se incrementa 0019 068B 00053 PRO08 BTFSC EFECTO,4 ;Si EFECTO:0XXXX, Ir a Pro09 001A 00E6 00054 DECF PTO_B,1 ;PTO_B Se decrementa 001B 0A08 00055 PRO09 GOTO START ;Ir a label Start 00056 ; 00057 ;RUTINA DE RETARDO

Page 214: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

187

001C 020A 00058 RETARDO MOVF DELAY,0 ;W=DELAY 001D 0028 00059 MOVWF RETEXT ;RETEXT=WMessage[305]: Using default destinatión of 1 (file).001E 02E8 00060 RET01 DECFSZ RETEXT ;RETEXT-=1, Si RETEXT=00h ir a Ret02001F 0A21 00061 GOTO RET03 ;Ir a Ret030020 0800 00062 RET02 RETLW 000 ;Retornar con W=00h0021 0069 00063 RET03 CLRF RETINT ;RETINT=00h Message[305]: Using default destinatión of 1 (file).0022 02E9 00064 RET04 DECFSZ RETINT ;RETINT-=1, Si RETINT=00h ir a Ret050023 0A22 00065 GOTO RET04 ;Ir a Ret040024 0A1E 00066 RET05 GOTO RET01 ;Ir a Ret01 00067 ; 00068 ;RUTINA PARA INCREMENTAR EL TIEMPO 0025 0C02 00069 SUBET MOVLW DELAY ;W=Valor de incremento del retardo 0026 01EA 00070 ADDWF DELAY,1 ;DELAY + = W0027 0934 00071 CALL REBOTE ;Llamado a Rutina Anti Rebotes0028 0403 00072 BCF STATUS,0 ;Bit de Carry en Registro STATUS=00h0029 0800 00073 RETLW 000 ;Retornar con W=00h 00074 ; 00075 ;RUTINA PARA CAMBIAR EL EFECTO002A 068B 00076 CAMBIO BTFSC EFECTO,4 ;Si EFECTO:0XXXX, Ir a Cam01002B 0A30 00077 GOTO CAM02 ;Ir a Cam02002C 0403 00078 CAM01 BCF STATUS,0 ;Bit de Carry en Registro STATUS=00h 002D 036B 00079 RLF EFECTO,1 ;Rotar EFECTO a la Izquierda002E 0934 00080 CALL REBOTE ;Llamado a Rutina Anti Rebotes002F 0800 00081 RETLW 000 ;Retornar con W=00h 0030 0C01 00082 CAM02 MOVLW 001 ;W=01h 0031 002B 00083 MOVWF EFECTO ;EFECTO=01h0032 0934 00084 CALL REBOTE ;Llamado a Rutina Anti Rebotes0033 0800 00085 RETLW 000 ;Retornar con W=00h 00086 ; 00087 ;RUTINA PARA EVITAR LOS REBOTES Y ESTABILIZAR0034 020C 00088 REBOTE MOVF DATO,0 ;W=DATO0035 0026 00089 MOVWF PTO_B ;PTO_B=W0036 0605 00090 REB01 BTFSC PTO_A,0 ;Si PTO_A:XXX0, Ir a Reb02 0037 0A36 00091 GOTO REB01 ;Ir a Reb01 0038 0625 00092 REB02 BTFSC PTO_A,1 ;Si PTO_A:XX0X, Ir a Reb03 0039 0A38 00093 GOTO REB02 ;Ir a Reb02 003A 0645 00094 REB03 BTFSC PTO_A,2 ;Si PTO_A:X0XX, Ir a Reb04 003B 0A3A 00095 GOTO REB03 ;Ir a Reb03 003C 0665 00096 REB04 BTFSC PTO_A,3 ;Si PTO_A:0XXX, Ir a Reb05 003D 0A3C 00097 GOTO REB04 ;Ir a Reb04 003E 0800 00098 REB05 RETLW 000 ;Retornar con W=00h 00099 ; 00100 ;RUTINA PARA INCREMENTAR EL DATO003F 02AC 00101 SUBEDATO INCF DATO,1 ;DATO+=10040 0934 00102 CALL REBOTE ;Llamado a Rutina Anti Rebotes0041 0800 00103 RETLW 000 ;Retornar con W=00h 00104 ; 00105 ;RUTINA PARA DECREMENTAR EL DATO0042 00EC 00106 BAJADATO DECF DATO,1 ;DATO-=10043 0934 00107 CALL REBOTE ;Llamado a Rutina Anti Rebotes0044 0800 00108 RETLW 000 ;Retornar con W=00h 00109 ;

Page 215: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

188

00110 ;FINAL DEL PROGRAMAWarning[205]: Found directive in column 1. (END) 00111 END

SYMBOL TABLE LABEL VALUE

BAJADATO 00000042CAM01 0000002CCAM02 00000030CAMBIO 0000002ADATO 0000000CDELAY 0000000AEFECTO 0000000BPRO01 0000000APRO02 0000000CPRO03 0000000EPRO04 00000010PRO05 00000013PRO06 00000015PRO07 00000017PRO08 00000019PRO09 0000001BPTO_A 00000005PTO_B 00000006REB01 00000036REB02 00000038REB03 0000003AREB04 0000003CREB05 0000003EREBOTE 00000034RET01 0000001ERET02 00000020RET03 00000021RET04 00000022RET05 00000024RETARDO 0000001CRETEXT 00000008RETINT 00000009START 00000008STATUS 00000003SUBEDATO 0000003FSUBET 00000025__16C57 00000001

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : xxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxx0040 : xxxxxx----------- ---------------- ----------------- -------------------

All other memory blocks unused.

Page 216: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

PIC16C55s16

17

15

14

12

13

11

10

06

07

05

04

02

03

01

00

PUERTOB

6

7

8

9

00

01

02

03

PUERTOA

Velocidad

Efecto

Incremento

Decremento

+5 V

220 Ohm x 12

10K Ohm

1N4004

220 Ohm

20 pF

RESET

22 uF

T0CKI

VDD

(MCLR)* / VPP

OSC / CLKIN

VSS

1

2

28

27

4

* Todas las resistencias son de 1/4 de Watt, Todos los condensadores son para 16 Voltios minimo

* Los numeros externos indican el numero del pin del encapsulado CERDIP con ventana

189

Program Memory Words Used: 69Program Memory Words Free: 1979

Errors : 0Warnings : 2 reported, 0 suppressedMessages : 2 reported, 0 suppressed

8.5. CIRCUITO A MONTAR

8.5.1. Otras aplicaciones.

Como se habrá podido apreciar del programa P06.ASM y circuito correpondiente, las aplicacionessólo estan limitadas por la imaginación del programador. Otro de los aspectos interesantes es que hayuna gran biblioteca de programas desarrollados para multiples aplicaciones, es por ello querecomiendo la revisión del siguiente material:

* El manual Microchip Embedded Control Handbook 1994/1995.

Page 217: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

190

* El Microchip 1997 Technical library, second editión CD-ROM. En el directorio APPNOTESse encontraran las aplicaciones desarrolladas para cada familia de microntroladores.

* El Microchip June 1998 Technical Library CD-ROM. Para que pueda trabajar con éste CD-ROM es necesario tener instalado en el PC un visor WEB (Netscape o el Explorer) ya quetoda la presentación es por páginas html.

* La dirección de INTERNET http://www.microchip.com/10/Lit/Index.html

En el mismo se podran encontrar proyectos y aplicaciones como:

* Técnicas de interrupción por software.

* Manejo de una pila por software.

* Macros para el manejo de páginas y bancos de memoria.

* Sistema supervisor de líneas AC.

* Contadores y frecuencimetros.

* Conversión analogica a digital.

* Ohmetros.

* Sensores de temperatura.

* Controlador serial para mouse.

* Posicionador remoto inteligente.

* Cargador inteligente para baterias de Nickel - Cadmio

* Rutinas y macros para matematica en punto flotante.

Y muchisimas otras más, es por tal motivo que insisto en la revisión del material referidoanteriormente, debido a que es posible que se encuentre alli el proyecto que deseas desarrollar o lasrutinas y macros para optimizar el que ya tienes, como también es perfectamente posible queintroduscas mejoras en algunos de los proyectos existentes.

Page 218: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

Los drivers son programas de software desarrollados para trabajar con hardware (Tarjetas40

controladoras) muy especificas y de manera transparente para el usuario.

La emulación se refiere a la acción de utilizar la computadora a través de sus puertos como41

parte física de un circuito electrónico, en este caso se emula al microcontrolador PIC en su montajedefinitivo

191

9. MPLAB, ALGUNOS CONCEPTOS

9.1. QUE ES MPLAB

MPLAB es un Ambiente para Desarrollo Integrado (Integrated Development Environment,IDE) bajo plataforma Windows, desarrollado por la Microchip Inc. Que incorpora todas las familiasde microcontroladores PIC16/17.

El MPLAB permite escribir, compilar y optimizar cualquier programa de aplicación para la familiaPIC16/17. El MPLAB incluye un editor de texto, simulador y un manejador de proyectos, tambiénse incluyen los Manejadores (Drivers) necesarios para dar soporte al emulador PICMASTER40 41

PLUS y el programador de dispositivos PROMATE, ademas de otras herramientas para el desarrollode sistemas con la Microchip.

En su concepto mas sencillo el MPLAB tiene como Kernel (Núcleo o semilla) de procesamiento elMPASM y el MPSIM vistos en capítulo anteriores pero con la ventaja de que se han integrado en unambiente grafico tipo Windows, lo cual redunda en una facilidad de manejo excepcional al disponerde todas las herramientas de diseño en una sola ventana.

9.2. REQUERIMIENTOS DE HARDWARE Y SOFTWARE Es necesario que se encuentre instalada como plataforma o sistema operativo Microsoft Windows 3.1o posterior, en el caso de Windows NT cualquier versión igual o posterior a la 3.51. El MPLAB-IDEposee capacidad para la emulación de multiprocesamiento y soporta el Intercambio Dinámico deDatos (Dinamic Data Exchange, DDE) con programas clientes, es decir, el MPLAB-IDE puedecompartir (Desde, Hacia) información con otros programas de aplicación del entorno de Windows.Los requerimientos mínimos son:

C PC con procesador 386 o superior, se recomienda Pentium

C 4 MB de memoria RAM, se recomiendan 16MB

Page 219: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

192

C Disco duro con 8MB de espacio disponible como mínimo, se recomiendan 20MB

C Monitor VGA o super VGA

C Microsoft Windows 3.1 o posterior, se recomienda Windows 95

9.3. INSTALACION

En el CD adjunto al presente documento se encuentra disponible el “January 1999, TechnicalLibrary CD - ROM”, para iniciarlo se hace necesario ejecutar el archivo “D:\Index.htm” (Con D:\como unidad de CD), esta opción ejecutará como lector por defecto el Navegador de Internet (WebBrowser) que tengas instalado, ademas del “Adobe Acrobat Reader”, en cualquier caso, podrásencontrar los respectivos instaladores en los directorios “D:\Browsers” y “D:\Acroread”.

En el menu de presentación inicial se encuentra la opción “Developments Tools” el cual te llevaraa los instaladores de las versiones 3.40 y 3.99 del MPLAB, sin embargo, en el directorio“D:\Software” se encuentran las versiones 3.22, 3.31, 3.40 y 3.99 del MPLAB en suscorrespondientes subdirectorios. El Ayudante (Wizard) de instalación en cada uno de ellos le guiaradurante el proceso de configuración, inicialmente se recomienda la instalación de todas las opcionesdisponibles, luego, en la medida de la experiencia personal se podrán desinstalar las opciones que noconvengan.

En el directorio D:\Manual se encuentran los archivos de ejemplos y practicas (*.ASM) utilizadosen el presente documento.

En el directorio D:\PICStart se encuentran las versiones individuales del MPASM y el MPSIMutilizadas al inicio del presente documento y que forman el núcleo del MPLAB - IDE..

9.4. DESCRIPCION GENERAL DE LOS MENUS

A continuación se proporciona una descripción muy general de todos los menús disponibles en labarra de herramientas para la versión 3.31.

9.4.1. File

En este menu se encuentran disponibles todas las opciones necesarias para trabajar con el archivofuente (*.ASM) aunque puede ser utilizado para cualquier otro tipo de archivo, preferiblemente detexto ASCII, también se encuentran disponibles las opciones de “Carga” o “Descarga” en memoriadel los archivos *.HEX resultantes de la compilación, ademas de las opciones de impresión.

Page 220: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

193

9.4.2. Project

En este menu se encuentran disponibles todas las opciones para iniciar, cerrar o guardar un proyecto,anexar los diferentes archivos que lo confirman, compilar los archivos mas recientes que forman partedel proyecto, todos los archivos o solamente el archivo que se encuentra en la ventana activa deleditor, también es posible configurar el formato de salida de los archivos hexadecimales, los archivosgenerados por el MPASM, modificar las características del compilador o del ensamblador.

9.4.3. Edit

En este menu se encuentran disponibles todas las opciones necesarias para la edición del archivofuente o del archivo existente en la ventana activa del editor.

9.4.4. Debug

En este menu se encuentran disponibles todas las opciones para correr, ejecutar, inyectar estímulos,anexar puntos de parada, configurar los segmentos de trazado, ejecutar los diferentes tipos de Reset,en lineas generales, la simulación del proyecto para depuración.

9.4.5. PICSTART Plus

En este menu se encuentran disponibles todas las opciones necesarias para trabajar con elprogramador universal de la Microchip Inc.

9.4.6. Option

En este menu se encuentran disponibles las opciones necesarias para seleccionar el tipo de procesadorpor defecto, la configuración o distribución de las ventanas que conforman el proyecto por defecto,el modo de trabajo del editor de texto, la configuración de algunas combinaciones de teclas paraefectuar acciones especificas (Macros), la configuración del medio ambiente de trabajo oconfiguración de la barra de iconos (Toolbar Setup), configuración de los colores utilizados pararesaltar determinadas respuestas del sistema o actividades durante el modo de Depuración (Debug),configuraciones a nivel de hardware del procesador seleccionado y configuración del modelo deprogramador a utilizar.

9.4.7. Tools En este menu se encuentran disponibles opciones que permiten la ejecución de comandos tipoMSDOS ademas de la configuración del hardware para el emulador.

Page 221: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

194

9.4.8. Windows

En este menu se encuentran disponibles las opciones que permiten abrir ventanas para observar:

C El mapa de la memoria RAM del microcontrolador seleccionadoC Los eventos de trazado del programa en memoria EPROMC El programa objeto cargado en memoria EPROMC El archivo de listado absoluto del proyectoC El contenido de la Pila (Stack) en sus direcciones de retornoC Todos los registros de archivoC Todos los registros de funciones especialesC El listado de símbolosC Puntos de parada (Breakpoints)C Archivos que conforman el proyecto

se puede ademas crear ventanas con registros de uso particular, siendo posible guardarlas en archivospara utilizarlas en otros proyectos, también es posible modificar el código hexadecimal que conformael programa objeto absoluto y finalmente la reorganización de todas las ventanas que conforman elproyecto.

9.4.9. Help

En esta ventana se encuentran disponibles las ayudas de todos y cada uno de los módulos queconforman el MPLAB, se recomienda revisar la opción MPLAB HELP.

9.4.10. Iconos

A continuación y en orden descendiente de la barra de menu, se encuentra una barra de herramientas(Iconos) donde se implementan todas y cada una de las opciones establecidas anteriormente. En elextremo izquierdo de esta barra existe un icono con rectángulos de varios colores que tiene porfunción realizar el Intercambio (Swaping) entre las diferentes barras de herramientas (Existen 4 entotal), también es posible configurar estas barras según las necesidades del programador en el menu:

Option ' Environment Setup ' Toolbar Setup

Adicional a todo esto, en el extremo superior izquierdo de cada ventana se encuentra un gráficoprecedente al titulo de la ventana, a manera de hoja de papel en blanco para la mayoría de los casos,con el cual se puede disponer de otras opciones a través de un click del boton izquierdo del mouse.

Page 222: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

195

9.5. TUTORIAL

A continuación se creara un archivo fuente sencillo que permita visualizar la manera como se trabajacon el MPLAB, se escogió la vía mas larga de ejecución a objeto de mostrar el máximo de opcionescon un solo archivo. El programa ejecuta como acción el incremento binario del puerto B utilizandocomo procesador el PIC16C55, aunque por la simplicidad del programa es perfectamente posibleutilizar cualquier otro tipo de procesador PIC. Se incluye ademas una subrutina de retardo muyelemental, cuyo valor de conteo es proporcionado por el usuario a traves del puerto C.

Debe tenerse muy en cuenta que la filosofía de trabajo del MPLAB es la “Creación de un Proyecto”así se encuentre conformado por un solo archivo, otro aspecto que debe tenerse en cuenta es quedentro del proyecto creado tiene que existir un solo archivo fuente (*.ASM) y todos los archivosadicionales de cabecera que se deseen (*.*, directiva INCLUDE, Pag. 99), esto se encuentrafundamentado en la característica de programación modular del lenguaje C. Durante el desarrollo delejemplo se asume que el MPLAB esta instalado en el directorio C:\MPLAB.

9.5.1. Creación del proyecto

Menu: Project

Submenú: New Project

Ventana: New ProjectProject path and name: C:\MPLAB\EJEMPLO\EJEMPLO.PJTOK

Ventana: Create directoryYES

Ventana: Edit ProjectOK

La ventana principal debe tener por titulo: MPLAB-C:\MPLAB\EJEMPLO\EJEMPLO

9.5.2. Creación del archivo fuente

Menu: File

Submenú: New Source

Ventana: Untilted1

Page 223: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

196

En la ventana abierta transcribir el programa a continuación:;;Archivo: Ejemplo.asm para el MPLAB;;Label Mnemo Operando Comentario;;CONFIGURACIONES BASICAS ------------------------------------------------------;

List P=16C55 ;Tipo de picList R=Hex ;Formato numericoList F=Inhx8m ;Formato del archivo Ejemplo.hexOrg 000 ;Direccion de arranque

;;DECLARACION DE VARIABLES Y CONSTANTES ------------------------------;Status Equ 003 ;Registro de estadoZ Equ 002 ;Flag de ceroP_B Equ 006 ;Puerto BP_C Equ 007 ;Puerto CDelay Equ 00A ;Contador de retardoW Equ 000 ;Puntero del acumuladorF Equ 001 ;Puntero a cualquier reg. arch.;;DEFINICIONES DE ACTIVACION --------------------------------------------------;

Movlw 000 ;Acumulador = 00hTris P_B ;Puerto B como SalidaClrf P_B ;Puerto B = 00hMovlw 0FF ;Acumulador = FFhTris P_C ;Puerto C como EntradaClrf P_C ;Puerto C = 00h

;;COMIENZO DEL PROGRAMA PRINCIPAL ---------------------------------------;Start Incf P_B, F ;Puerto B += 1

Call Retar ;Subrutina de retardoGoto Start ;Reiniciar

;;IMPLEMENTACION DE SUBRUTINAS --------------------------------------------;Retar Movf P_C, W ;Acumulador = Puerto C

Movwf Delay ;Delay = AcumuladorMovlw 000 ;Acumulador = 00hXorwf Delay, W ;Delay (Or exclusivo) AcumuladorBtfsc Status, Z ;Si Z=0, Saltar a Ret01 Goto Ret03 ;Valor por defecto del retardo

Page 224: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

197

Ret01 Decfsz Delay ;Delay -=1; Si es 00h ir a Ret02Goto Ret01 ;Repetir

Ret02 Retlw 000 ;Retornar con acumulador = 00hRet03 Movlw 005 ;Acumulador = 05h

Movwf Delay ;Delay = AcumuladorGoto Ret01 ;Lazo de decrementacion

;---------------------------------------------------------------------------------------------End ;Fin del programa principal

;---------------------------------------------------------------------------------------------

Menu: File

Submenú Save as ...

Ventana: Save File As ...Directories: C:\MPLAB\EJEMPLOFile Name: Ejemplo.asmOK

9.5.4. Configuración del procesador

Menu: Option

Submenú: Development Mode ...

Ventana: Development ModeEditor Only

Processor: PIC16C55MPLAM-SIM Simulator

Processor: PIC16C55PICMASTER Emulator

Solamente si se posee el hardware correspondienteRESET

Ventana: Save ProjectYES

9.5.5. Activación del proyecto

Menu: Project

Submenú: Open Project

Page 225: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

198

Ventana: Open ProjectEjemplo.pjt (Doble click)

Ventana: Open ProjectOK

Ventana: Import ErrorOK

Menu: Project

Submenú: Edit Project

Ventana: Edit ProjectNon project files:

Ejemplo.asm (Doble click)OK

Menu: Project

Submenú: Build All

Ventana: Compile StatusOK

Menu: File

Submenú: Open Source

Ventana: Open SourceEjemplo.asm (Doble click)

9.5.6. Apertura de ventanas

Menu: Windows

Submenú: Stack

Menu: Windows

Page 226: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

199

Submenú: Special Function Registers

Menu: Windows

Submenú: StopwatchEsta ventana proporciona el conteo de los pasos del programa bajo simulación y eltiempo requerido para cada paso según la frecuencia de reloj seleccionada para eldiseño.

Menu: Windows

Submenú: New Watch Windows

Ventana: WatchEscribir: DelayOK

Presionar tecla: Insert (Ins o Insertar)

Ventana: WatchEscribir: P_BOK

Presionar tecla: Insert

Ventana: WatchEscribir: P_COK

También se pueden seleccionar las variables haciendo click en el icono de “Bajar”(Triangulo invertido) en la ventana Watch cuando se encuentre activa. Se sugiere elarreglo de las ventanas según su preferencia.

Menú: Windows

Submenú: ModifyEste submenú permite la modificación del contenido numérico de cualquiervariable o registro de archivo ya sea escribiendo la Etiqueta (Label), oseleccionandola de entre las existentes al hacer click en el icono de bajar(Triangulo invertido).

Ventana: ModifyAddres: P_B

Page 227: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

200

Data / Opcode: AFWriteSi se lo desea se puede cerrar esta ventana por motivos de espacio, ya que es posiblereabrirla mas adelante en función de las necesidades.

Menú: Debug

Submenú: Simulator StimulusEste submenú permite seleccionar o definir el modo como se simularan losestímulo externos o valores que leerá el puerto que se configure como entrada.

Opción: Asynchronous StimulusEsta opción se encuentra relacionada con el comando DK (Pag. 148). Un click delbotón derecho del mouse permite asignar y configurar la acción sobre el circuitodel botón “StimN(P)” en la ventana.

Stim1(P) (Click con el botón derecho del mouse)Assign Pin ...: RC0 (Doble click con el botón izquierdo del mouse)Toggle (Click con el botón izquierdo del mouse)

Stim2(P) (Click con el botón derecho del mouse)Assign Pin ...: RC1 (Doble click con el botón izquierdo del mouse)Toggle (Click con el botón izquierdo del mouse)

Stim3(P) (Click con el botón derecho del mouse)Assign Pin ...: RC2 (Doble click con el botón izquierdo del mouse)Toggle (Click con el botón izquierdo del mouse)

Menú: Debug

Submenú: Simulator Stimulus

Opción: Pin Stimulus

Acción: Enable

Ventana: Selected Pin Stimulus FileEn esta ventana se puede seleccionar el archivo de estímulos externos tal como seestableció en el punto 5.13.4 (Pag. 126), el mismo puede ser creado con el editorde texto que trae incorporado el MPLAB, la condición a cumplir es que estearchivo debe ser guardado con la extensión STI (*.STI).

Menú: Option

Page 228: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

201

Submenú: Processor Setup

Opción: Hardware

Ventana: Processor SetupEn esta ventana se puede activar y configurar el modo de trabajo del Watch DogTimer, ademas de la acción del simulador en caso de Sobre flujo en la pila(Stack Overflow). De no ser estrictamente necesaria la utilización del Watch DogTimer se recomienda dejar esta Option inactiva.

Menu: Project

Submenú: Save project

9.5.7. Simulación

Solo se puede ejecutar la simulación en cualquiera de sus formas si se encuentra activa la ventana delarchivo fuente (*.ASM), esta se reconoce porque la barra de titulo se encuentra de color azul marino.

Menu: Debug

Submenú: RunSe puede seleccionar:ANIMATE: para ejecución continua (Ctrl + F9)STEP: ejecución paso a paso (F7)STEP OVER: ejecución paso a paso sin observar subrutinas (F8)

Si se desea simular un reset del microcontrolador en cualquiera de sus formas se pueden seguir lospasos a continuación que correspondan.

Menú: Option

Submenú: Development Mode ...

Ventana: Development ModeReset

Menú: Debug

Submenú: System Reset

Page 229: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

202

Menú: Debug

Submenú: Power On Reset

Menú: Debug

Submenú: Reset (F6)

De aquí en adelante, a manera de ejercitación sugiero al lector que trabaje con los archivos de ejemploP01.ASM a P06.ASM existentes en el directorio D:\Manual en el CD adjunto; siguiendo para ellolos pasos establecidos anteriormente para la creación del proyecto (Punto 9.5.1, Pag. 195), con laúnica salvedad que debe trabajarse con la opción: Copy Files en la ventana Edit Project para cargarel archivo seleccionado y evitar transcribirlo, en cualquier caso, estimado lector, me permitorecordarle que solo la constancia en la práctica le llevara al éxito.

Page 230: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

203

10. REFERENCIAS

10.1. MANUALES DE INTEL CORPORATION

* MCS80 / MCS85

* 8080 / 8085 Assembly Language

* SDK85, User’s Manual

* 1980 Annual Index

* Memory Components Handbook

* Military Products Handbook

* Embedded Control Aplications Handbook

* 8 Bit Embedded Controller Handbook

* 16 Bit Embedded Controller Handbook

* 32 Bit Embedded Controller Handbook

* Microcomputer Programmable Logic Handbook

* Microprocessor and Peripheral Handbook

* Microcommunicatios Handbook

10.2. MANUALES DE MICROCHIP INCORPORATED

* PIC16/17 Microcontroller Data Book

* Embedded Control Handbook

* Serial EEPROM Handbook

* In Circuit Serial Programming™ Guide

Page 231: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

204

* MPASM Assembler

* MPSIM Simulator

* PICSTART™ 16B1, Development System

* Future Products August 1997

10.3. DIRECCIONES DE INTERNET

http://www.uni-mb.si/~uel205e7b/http://www.geocities.com/SiliconValley/Peaks/9620/http://www.propic2.com/

En estas direcciones se encuentran los diagramas esquemáticos (Planos electrónicos) contodos los componentes identificados, de varios programadores universales de PIC.Recomendamos el P16PRO de Bojan Dobaj ya que es el que mejor resultados nos haproporcionado durante su operación, con el mismo se han programado PIC’s desde 8 hasta40 pines.

http://www.microchip.com/

Página Web principal de la Microchip Corporation.

http://www.microchip.com/10/Tools/Index.htm

Directorio general de herramientas de software, se recomienda ampliamente bajar el MPLAB-IDE versión 3.40.00 ó superior en su defecto. Visitar las páginas Web del MPASM, MPLINKand MPLIB, y el Development Tool Archives.

http://www.microchip.com/10/Appnote/Index.htm

En ésta página se encuentran las notas de aplicación de todos los proyectos desarrollados porla Microchip.

http://www.microchip.com/10/Lit/Index.htm

En ésta página se encuentran los Data Sheet de todos los productos fabricados por laMicrochip.

Page 232: UNIVERSIDAD NACIONAL - zulaco64.updog.co · universidad nacional experimental del gtachira decanato de investigacion laboratorio de investigacion electronica microcontroladores microchip

205

http://www.microchip.com/10/rSites/Index.htm

En ésta página se encuentran Enlaces (Links) a otras páginas Web relacionadas con losproductos de la Microchip

http://www.microchip2.com/new/onesol/request.htm

En ésta página hay la posibilidad de solicitar un CD con toda la información técnica y softwareliberado hasta la fecha. Llenando la correspondiente forma de requisición.

Motivado a la gran cantidad de información que se encuentra en INTERNET y la velocidad con lacual se actualiza, se hace muy difícil proporcionar direcciones específicas de usuarios independientes,por tal razón se recomienda utilizar las palabras PIC, MICROCONTROLLER,MICROPROCESSOR, SIMULATION, ASSEMBLER, LINK, COP (National Semi Conductors,http://www.nsc.com), DSP (MOTOROLA, http://www.mot.com), BASICSTAMP, PARALLAX,XILINX, en cualquier buscador del Web. A continuación se recomiendan algunos:

http://www.webcrawler.comhttp://www.yahoo.comhttp://www.altavista.digital.comhttp://www.cyber411.comhttp://www.infoseek.comhttp://www.magellan.com