SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
El ensamblador El entorno de trabajo MPLAB  El ensamblador que utiliza por defecto el MPLAB es el MPASM ALGUNAS DIRECTIVAS del ASM Ya la primera línea LIST P  = 16F84 Definine el procesador a utilizar durante todos los procesos (ensamblado, emulación, grabación).
La directiva ORG, seguida de una posición de memoria, indica al ensamblador dónde debe situar ese código y se coloca, antes de la primera instrucción. Los casos de direcciones especiales serán también descritos más  adelante en el presente texto.
La directiva END es imprescindible e indica al ensamblador el final del programa.  REM, indica que lo que le sigue es un comentario.
El ensamblador exige una cierta tabulación mínima de sus distintos elementos. De este modo la definición de variables podrá escribirse en la 1ª columna de cualquier línea, mientras que las directivas e  instrucciones deberán ir en la 2ª columna, como mínimo. Las tabulaciones características son las empleadas por nosotros, ya que, aunque no son imprescindibles, clarifican la lectura del programa.
Nos planteamos un nuevo problema: Crearemos un programa para un PIC16F84A funcionando a 4MHZ  encargado de contar hasta 0x5f. Cuando lo alcance se detendrá en un bucle no operativo. El valor del  contador se visualizará en 8 diodos LED conectados al puerto B.  ,
LIST  P=16C84  ; Seleccionamos el micro  ; Asignación de etiquetas a registros.  f  EQU  0x01  ; registro f portb  EQU  0x06  ; Dirección del registro del puerto B  estado  EQU  0x03  ; Dirección del registro de estado  conta  EQU  0x0C  ; Lo usamos como variable contadora  ORG  0  ; El programa comienza en la dirección 0  GOTO inicio  ; salta a la dirección 5 para sobrepasar el vector INT.  ORG  5  inicio  BSF  estado,5  ; Selecciona banco 1 para llegar a TRISB  MOVLW  0x00  MOVWF  portb  Y se especifica que es de salida  BCF estado,5  ; Selección del banco 0 para trabajar directamente  ; con el puerto  CLRF  conta  ; Ponemos nuestro contador a 0
Bucle1 INCF  conta,f  ; conta + 1 --> conta (incrementa el contador)  MOVF  conta,W  ; conta se carga en W  MOVWF portb  ; W se carga en el registro de datos del puerto B  MOVLW 0x5f  ; W <-- 0x5f  (Final de cuenta deseado)  SUBWF  conta,W  ; conta - W --> W. Si es cero, la cuenta está acabada  BTFSS  estado,2  ; Explora Z y si vale 1 es que W vale 0  ; se produce &quot;brinco&quot; en ese caso por fin de cuenta  GOTO bucle1  ; Si Z = 0 se vuelve a bucle1  bucle2  GOTO bucle2  ; Si Z = 1 se produce un bucle infinito  END
OTRO EJEMPLO EN ASM
LIST P = 16F84  ;Indicamos el modelo de PIC a utilizar  ; Definición de registros  portb  EQU 0x06 ;Hemos conectado el display al puerto B  ;La dirección 0x06 corresponde al registro PORTB  ;(puerto B) en el banco1  TRISB EQU 0X06 ; y TRISB en banco 1  Estado EQU 0X03 ; La dirección del registro de estado es la 0x03  pc  EQU 0x02 ; Contador de Programa, es decir,  ;dirección de memoria actual de programa  ; Definición de bits  banco EQU 0X05 ; Bit del registro de estado correspondiente  ; al banco de datos  Z  EQU 0X02 ; Bit indicador de que el registro W está a cero
; Definición de constantes  w  EQU 0 ; Destino de operación = w  f  EQU  1 ; Destino de operación = registro  ; Definición de variables  contador EQU 0X0C  ; Contador  digito EQU 0X0D  ; Para almacenar el dígito  ; Comienzo del programa.  ORG 0X00  ; Cubrimos el vector de reset  GOTO inicio ; Saltamos a la primera dirección tras el vector de interrupción
; ************************ Inicialización de variables *************************  ORG 0X05  inicio BSF estado, banco; Cambiamos a la segunda página de memoria  CLRF TRISB  ; Programa la puerta B como de todo salidas  BCF estado,banco ; Volvemos a la página 0.  CLRF portb  ; Apaga el display, por si había residuos  CLRF contador  ; Borra el contador (dirección 0x0C)  CLRW  ; Borramos el registro W  ; ************************* Cuerpo Principal **************************  Reset  CLRF digito  ; Comienza a contar por el 0  Siguien MOVF digito,w  ; Coloca el siguiente dígito a evaluar en W  CALL Tabla  ; Llama a la subrutina para coger el dato  ; y hacer la conversión decimal-7 segmentos  MOVWF portb
Pausa  DECFSZ contador ; Decremento contador y repite  GOTO Pausa  ; hasta que valga 0  INCF digito,f  ; Incrementa el valor del dígito al siguiente  MOVF digito,w  ; Pone el valor del dígito en W  XORLW 0x0A  ; Chekea si el dígito sobrepasa el valor 9  BTFSC estado,Z  ; Comprobando con un xor si W vale 0 (Z=1)  GOTO Reset  ; Si Z=1 resetea el dígito y comienza la cuenta  GOTO Siguien  ; En caso contrario, continua la cuenta con el siguiente  ;dígito
Tabla ADDWF pc,f ; Suma al contador de programa el valor de offset, es decir,  ; el valor del dígito. Así se genera un PC distinto según su valor,  ; asegurando que vaya a la línea correcta de la tabla  RETLW 0x3F  ; 0 en código 7 segmentos  RETLW 0x06  ; 1 en código 7 segmentos  RETLW 0x5B  ; 2 en código 7 segmentos  RETLW 0x4F  ; 3 en código 7 segmentos  RETLW 0x66  ; 4 en código 7 segmentos  RETLW 0x6D  ; 5 en código 7 segmentos  RETLW 0x7D  ; 6 en código 7 segmentos  RETLW 0x07  ; 7 en código 7 segmentos  RETLW 0x7F  ; 8 en código 7 segmentos  RETLW 0x6F  ; 9 en código 7 segmentos  END
EL PIC EN DETALLE EJEMPLO MIREMOS UN PIC 16F84A  (EL MAS SIMPLE DE LA FAMILIA FLASH) QUE NOS OFRECE? MEMORIA DE PROGRAMA MEMORIA DE DATOS MEMORIA EEPROM ( FLASH )  Como asi???  es eeprom o flash Ja!  Pues es el equivalente en tecnología flash de una supuesta memoria eeprom que venia en el antecesor pic 16c84
 
High Performance RISC CPU Features: •  Only 35 single word instructions to learn •  All instructions single cycle except for pro gram  branches which are two-cycle •  Operating speed: DC - 10 MHz clock input DC - 400 ns instruction cycle
LA MEMORIA DISPONIBLE
•  14-bit wide instructions •  8-bit wide data path •  15 special function hardware registers •  Eight-level deep hardware stack •  Direct, indirect and relative addressing modes  •  Four interrupt sources:  - External RB0/INT pin - TMR0 timer overflow  - PORTB<7:4> interrupt on change - Data EEPROM write complete •  1000 erase/write cycles Flash program memory •  10,000,000 erase/write cycles EEPROM data memory •  EEPROM Data Retention > 40 years
Peripheral Features: •  13 I/O pins with individual direction control •  High current sink/source for direct LED drive - 25 mA sink max. per pin (entrando) - 20 mA source max. per pin (saliendo) •  TMR0: 8-bit timer/counter with 8-bit  programmable prescaler
Special Microcontroller Features: •  In-Circuit Serial Programming (ICSP™) - via two  pins (ROM devices support only Data EEPROM  programming)  •  Power-on Reset (POR) •  Power-up Timer (PWRT) •  Oscillator Start-up Timer (OST) •  Watchdog Timer (WDT) with its own on-chip RC  oscillator for reliable operation •  Code-protection •  Power saving SLEEP mode •  Selectable oscillator options CMOS Flash/EEPROM Technology : •  Low-power, high-speed technology •  Fully static design •  Wide operating voltage range: - Commercial:  2.0V to 6.0V - Industrial:  2.0V to 6.0V •  Low power consumption: - < 2 mA typical @ 5V, 4 MHz -1 5  µA typical @ 2V, 32 kHz -<  1  µA typical standby current @ 2V
LA CONEXIÓN BASICA PARA QUE FUNCIONE
EL TEMPORIZADOR TMR0 TIENE DOS FORMAS DE OPERAR (EXCLUSIVAS; UNA O LA OTRA NO AMBAS) CONTADOR DE EVENTOS RELOJ DE TIEMPO REAL CONFIGURACION DE ESTE CONTADOR O TMR0 QUE SE QUIERE CONTAR? EVENTOS EXTERNOS O PULSOS INTERNOS QUE SE DERIVAN DEL CRISTAL (MUY PRECISOS)
 
Dos registros fundamentales en la operacion del TMR0 En TMR0 se almacena el conteo  (ojo banco 0) En OPTION se configura el TMR0 (ojo banco 1)
 
Preescalador o prescaler mejor dicho divisor de frecuencia
 
 
LA FILOSOFIA DE TRABAJO EN LA CONFIGURACION DEL TMR0 PROGRAMAR LOS BITS INDIVIDUALES EN CUESTION DEL REGISTRO OPTION DE MODO QUE SE CONECTE LO QUE SE DESEA SEGÚN EL GRAFICO ANTERIOR. EJEMPLO: UNA ONDA ULTRASONICA ES GENERADA POR ELPIC PARA IMPLEMENTAR UN MEDIDOR DE DISTANCIAS CUAL SERIA EL TIEMPO MAXIMO A REGISTRAR Y LA MAXIMA DISTANCIA A MEDIR SI: F=40KHZ (ONDA ULTRASONICA Y LA FRECEUNCIA DEL CRISTAL O RESONADOR DEL PIC ES 4MHZ
SOLUCION EL SONIDO SE PROPAGA A RAZON DE 340 m/S (APROXIMADO) UN PRESCALADOR MAXIMO ES DE 256 osea por cada 256 pulsos derivados del reloj interno el TMR0 cuenta un flanco Si el cristal es de 4mhz el reloj interno es de  1MHZ  o F/4 Osea 1uS por flanco pero el maximo prescaler es de 256 Cada 256 conteos en TMR0 se incrementa en uno 256*1uS*255=65280uS
65280/2 = 32640uS se demora en ir y volver V=D/T  340m/s=x/32640uS  osea que puede medir hasta 11.09 metros Y la resolucion teorica es de 256uS o de 8.7 cm Y la resolucion fisica es de Lamda/2 o de  (340m/s) / 40Khz = 0.0085m o 8.5mm/2 = 4.25mm
COMO MEJORARIA USTED LA RESOLUCION DEL SISTEMA?
Aumentando el registro de Conteo o TMR0 o cuenta en cascada con un registro auxiliar ? O bajando el prescaler ? O una combinacion de los dos anteriores
8.5mm es lo maximo a 40Khz (lo mas fino) Con un registro de 8 bits  son 8.5*255 son casi 2.1675metros medios Pero esto es irreal ya que solo podemos contar multiplos binarios de 1 uS Y el maximo conteo es de 255*256=65280 microsegundos (MUCHO) Como es un sistema de 8 bits cuantizamos 255 valores  Que sean lamdas 8.5mm x 255 o 1.08metros  que cuente cada 25uS 1,2,4,8,16,32,64,128,256…..etc Dos opciones con prescaler de 16 y mide menos de 1.08m o con 32 y mide mas de 1.08m pero se sacrifica la resolucion.
Ahora con 32 32*255*1uS= 8.16mS E = 340m/S * 8.16mS = 2.7744 metros  (10.88mm de resolucion)
 
TAREA SE DESEA DISEÑAR UN EQUIPO PARA MEDIR DESFASE DE DOS ONDAS DE 60Hz CUAL DEBE SER EL PRESCALER PARA OBTENER LA MAXIMA RESOLUCION DEL APARATO SI USAMOS UN TRM0 (DE 8 BITS)
LAS INTERUPCIONES POR FLANCO EN EL PIN INT POR CAMBIO EN PINES B7,B6,B5,B4 POR DESBORDE DEL TMR0 AL TERMINAR UNA OPERACIÓN DE ESCRITURA EN LA MEMORIA  EEPROM (FLASH)
 
EN EL VEMOS UN PAR DE BITS UNO HABILITA LA INTERUPCION OTRO DETECTA LA INTERUPCION
 
LOGICA DE LA INTERUPCION
SALVAR EL CONTEXTO Parece que cuando se atiende la interupcion de borran o dañan algunos reg en el PIC la estrategia es salvarlos en RAM antes de atender el nucleo de la interupcion y al regresar restablecer los registros criticos antes de retornar el control del programa principal
EXAMPLE : SALVANDO STATUS  y W  reg EN ram  PUSH MOVWF  W_TEMP  ; Copy W to TEMP register,  SWAPF  STATUS, W  ; Swap status to be saved into W  MOVWF  STATUS_TEMP  ; Save status to STATUS_TEMP register  ISR  :  ; Interrupt Service Routine :  ;  should configure Bank as required :  ; POP  SWAPF  STATUS_TEMP, W  ; Swap nibbles in STATUS_TEMP register ; and place result into W  MOVWF  STATUS  ; Move W into STATUS register  ;  (sets bank to original state)  SWAPF  W_TEMP, F  ; Swap nibbles in W_TEMP and place result in  W_TEMP SWAPF  W_TEMP, W  ; Swap nibbles in W_TEMP and place result into W
REALIZAMOS LO SIGUIENTE a) SALVAMOS EL REG  W. b) SALVAMOS EL STATUS EN STATUS_TEMP. c) EJECUTAMOS EL NUCLEO DE LA INT. d) RESTABLECEMOS STATUS (Y SELECCIONAMOS BANCO) e) RESTABLECEMOS  W
EJEMPLOS EN ASSEMBLER 1 PAGINA http://perso.wanadoo.es/chyryes/tutoriales/pic13.htm 2 PAGINA???  PICLOOPS  (BUSCAR EN GOOGLE) NIPLE PROGRAMAR POR DIAGRAMAS DE FLUJO http://www.niplesoft.net/index.htm Otras aplicaciones http://host.nigde.edu.tr/muzam/UZAM_PLC_with_PIC16F648A.htm http://www.electronicsoft.net/en-us/dept_9.html http://www.matrixmultimedia.com/product.php?Prod=Flowcode%20V3%20for%20PIC&PHPSESSID=
FLOWCODE 3 DEMO http://microcontrollershop.com/product_info.php?cPath=148&products_id=527 ETHERNET http://www.dontronics-shop.com/pic-mini-web-mini-web-server-tcp-ip-development-board-for-pic-micro.html

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84a
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
 
Pic16 f84 en español
Pic16 f84 en españolPic16 f84 en español
Pic16 f84 en español
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Teclado Matricial
Teclado MatricialTeclado Matricial
Teclado Matricial
 
Timer0 PIC16F84A
Timer0 PIC16F84ATimer0 PIC16F84A
Timer0 PIC16F84A
 
Ejercicio 03 Porticos
Ejercicio 03 PorticosEjercicio 03 Porticos
Ejercicio 03 Porticos
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
 
Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
Ccp2009170309
Ccp2009170309Ccp2009170309
Ccp2009170309
 
UNIDAD IV
UNIDAD IVUNIDAD IV
UNIDAD IV
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
 
Sistemas Microprocesados I
Sistemas Microprocesados ISistemas Microprocesados I
Sistemas Microprocesados I
 

Similar a Niple diapopsitiva

Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Raphael Raphael
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del bancoAnibal Ulibarri
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesiDavid Narváez
 
Introducpic2
Introducpic2Introducpic2
Introducpic2conalep
 
Introducpic
IntroducpicIntroducpic
Introducpicconalep
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercanteDaniel Remondegui
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assemblerAlexis Rivera
 
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorLab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorDaniel Pardo
 
Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Mauricio Diaz Garcia
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresSANTIAGO PABLO ALBERTO
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricialGabriel Bravo Rojas
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucionJair BG
 
Ejercicios 07 interrupciones
Ejercicios 07 interrupcionesEjercicios 07 interrupciones
Ejercicios 07 interrupcionesJaime E. Velarde
 
Programación del microcontrolador
Programación del microcontroladorProgramación del microcontrolador
Programación del microcontroladorJuan Gamboa P
 
4. interrupciones y temporizadores
4. interrupciones y temporizadores4. interrupciones y temporizadores
4. interrupciones y temporizadoresDavid Narváez
 

Similar a Niple diapopsitiva (20)

Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del banco
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
 
Introducpic2
Introducpic2Introducpic2
Introducpic2
 
Introducpic
IntroducpicIntroducpic
Introducpic
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercante
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assembler
 
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorLab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
 
Tarea final
Tarea finalTarea final
Tarea final
 
Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11
 
Cartilla pic16f877
Cartilla pic16f877Cartilla pic16f877
Cartilla pic16f877
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
 
04.Entradas y salidas digitales
04.Entradas y salidas digitales04.Entradas y salidas digitales
04.Entradas y salidas digitales
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Grabacion de microcontroladores_pic
Grabacion de microcontroladores_picGrabacion de microcontroladores_pic
Grabacion de microcontroladores_pic
 
Ejercicios 07 interrupciones
Ejercicios 07 interrupcionesEjercicios 07 interrupciones
Ejercicios 07 interrupciones
 
Programación del microcontrolador
Programación del microcontroladorProgramación del microcontrolador
Programación del microcontrolador
 
4. interrupciones y temporizadores
4. interrupciones y temporizadores4. interrupciones y temporizadores
4. interrupciones y temporizadores
 

Niple diapopsitiva

  • 1. El ensamblador El entorno de trabajo MPLAB El ensamblador que utiliza por defecto el MPLAB es el MPASM ALGUNAS DIRECTIVAS del ASM Ya la primera línea LIST P = 16F84 Definine el procesador a utilizar durante todos los procesos (ensamblado, emulación, grabación).
  • 2. La directiva ORG, seguida de una posición de memoria, indica al ensamblador dónde debe situar ese código y se coloca, antes de la primera instrucción. Los casos de direcciones especiales serán también descritos más adelante en el presente texto.
  • 3. La directiva END es imprescindible e indica al ensamblador el final del programa. REM, indica que lo que le sigue es un comentario.
  • 4. El ensamblador exige una cierta tabulación mínima de sus distintos elementos. De este modo la definición de variables podrá escribirse en la 1ª columna de cualquier línea, mientras que las directivas e instrucciones deberán ir en la 2ª columna, como mínimo. Las tabulaciones características son las empleadas por nosotros, ya que, aunque no son imprescindibles, clarifican la lectura del programa.
  • 5. Nos planteamos un nuevo problema: Crearemos un programa para un PIC16F84A funcionando a 4MHZ encargado de contar hasta 0x5f. Cuando lo alcance se detendrá en un bucle no operativo. El valor del contador se visualizará en 8 diodos LED conectados al puerto B. ,
  • 6. LIST P=16C84 ; Seleccionamos el micro ; Asignación de etiquetas a registros. f EQU 0x01 ; registro f portb EQU 0x06 ; Dirección del registro del puerto B estado EQU 0x03 ; Dirección del registro de estado conta EQU 0x0C ; Lo usamos como variable contadora ORG 0 ; El programa comienza en la dirección 0 GOTO inicio ; salta a la dirección 5 para sobrepasar el vector INT. ORG 5 inicio BSF estado,5 ; Selecciona banco 1 para llegar a TRISB MOVLW 0x00 MOVWF portb Y se especifica que es de salida BCF estado,5 ; Selección del banco 0 para trabajar directamente ; con el puerto CLRF conta ; Ponemos nuestro contador a 0
  • 7. Bucle1 INCF conta,f ; conta + 1 --> conta (incrementa el contador) MOVF conta,W ; conta se carga en W MOVWF portb ; W se carga en el registro de datos del puerto B MOVLW 0x5f ; W <-- 0x5f (Final de cuenta deseado) SUBWF conta,W ; conta - W --> W. Si es cero, la cuenta está acabada BTFSS estado,2 ; Explora Z y si vale 1 es que W vale 0 ; se produce &quot;brinco&quot; en ese caso por fin de cuenta GOTO bucle1 ; Si Z = 0 se vuelve a bucle1 bucle2 GOTO bucle2 ; Si Z = 1 se produce un bucle infinito END
  • 9. LIST P = 16F84 ;Indicamos el modelo de PIC a utilizar ; Definición de registros portb EQU 0x06 ;Hemos conectado el display al puerto B ;La dirección 0x06 corresponde al registro PORTB ;(puerto B) en el banco1 TRISB EQU 0X06 ; y TRISB en banco 1 Estado EQU 0X03 ; La dirección del registro de estado es la 0x03 pc EQU 0x02 ; Contador de Programa, es decir, ;dirección de memoria actual de programa ; Definición de bits banco EQU 0X05 ; Bit del registro de estado correspondiente ; al banco de datos Z EQU 0X02 ; Bit indicador de que el registro W está a cero
  • 10. ; Definición de constantes w EQU 0 ; Destino de operación = w f EQU 1 ; Destino de operación = registro ; Definición de variables contador EQU 0X0C ; Contador digito EQU 0X0D ; Para almacenar el dígito ; Comienzo del programa. ORG 0X00 ; Cubrimos el vector de reset GOTO inicio ; Saltamos a la primera dirección tras el vector de interrupción
  • 11. ; ************************ Inicialización de variables ************************* ORG 0X05 inicio BSF estado, banco; Cambiamos a la segunda página de memoria CLRF TRISB ; Programa la puerta B como de todo salidas BCF estado,banco ; Volvemos a la página 0. CLRF portb ; Apaga el display, por si había residuos CLRF contador ; Borra el contador (dirección 0x0C) CLRW ; Borramos el registro W ; ************************* Cuerpo Principal ************************** Reset CLRF digito ; Comienza a contar por el 0 Siguien MOVF digito,w ; Coloca el siguiente dígito a evaluar en W CALL Tabla ; Llama a la subrutina para coger el dato ; y hacer la conversión decimal-7 segmentos MOVWF portb
  • 12. Pausa DECFSZ contador ; Decremento contador y repite GOTO Pausa ; hasta que valga 0 INCF digito,f ; Incrementa el valor del dígito al siguiente MOVF digito,w ; Pone el valor del dígito en W XORLW 0x0A ; Chekea si el dígito sobrepasa el valor 9 BTFSC estado,Z ; Comprobando con un xor si W vale 0 (Z=1) GOTO Reset ; Si Z=1 resetea el dígito y comienza la cuenta GOTO Siguien ; En caso contrario, continua la cuenta con el siguiente ;dígito
  • 13. Tabla ADDWF pc,f ; Suma al contador de programa el valor de offset, es decir, ; el valor del dígito. Así se genera un PC distinto según su valor, ; asegurando que vaya a la línea correcta de la tabla RETLW 0x3F ; 0 en código 7 segmentos RETLW 0x06 ; 1 en código 7 segmentos RETLW 0x5B ; 2 en código 7 segmentos RETLW 0x4F ; 3 en código 7 segmentos RETLW 0x66 ; 4 en código 7 segmentos RETLW 0x6D ; 5 en código 7 segmentos RETLW 0x7D ; 6 en código 7 segmentos RETLW 0x07 ; 7 en código 7 segmentos RETLW 0x7F ; 8 en código 7 segmentos RETLW 0x6F ; 9 en código 7 segmentos END
  • 14. EL PIC EN DETALLE EJEMPLO MIREMOS UN PIC 16F84A (EL MAS SIMPLE DE LA FAMILIA FLASH) QUE NOS OFRECE? MEMORIA DE PROGRAMA MEMORIA DE DATOS MEMORIA EEPROM ( FLASH ) Como asi??? es eeprom o flash Ja! Pues es el equivalente en tecnología flash de una supuesta memoria eeprom que venia en el antecesor pic 16c84
  • 15.  
  • 16. High Performance RISC CPU Features: • Only 35 single word instructions to learn • All instructions single cycle except for pro gram branches which are two-cycle • Operating speed: DC - 10 MHz clock input DC - 400 ns instruction cycle
  • 18. • 14-bit wide instructions • 8-bit wide data path • 15 special function hardware registers • Eight-level deep hardware stack • Direct, indirect and relative addressing modes • Four interrupt sources: - External RB0/INT pin - TMR0 timer overflow - PORTB<7:4> interrupt on change - Data EEPROM write complete • 1000 erase/write cycles Flash program memory • 10,000,000 erase/write cycles EEPROM data memory • EEPROM Data Retention > 40 years
  • 19. Peripheral Features: • 13 I/O pins with individual direction control • High current sink/source for direct LED drive - 25 mA sink max. per pin (entrando) - 20 mA source max. per pin (saliendo) • TMR0: 8-bit timer/counter with 8-bit programmable prescaler
  • 20. Special Microcontroller Features: • In-Circuit Serial Programming (ICSP™) - via two pins (ROM devices support only Data EEPROM programming) • Power-on Reset (POR) • Power-up Timer (PWRT) • Oscillator Start-up Timer (OST) • Watchdog Timer (WDT) with its own on-chip RC oscillator for reliable operation • Code-protection • Power saving SLEEP mode • Selectable oscillator options CMOS Flash/EEPROM Technology : • Low-power, high-speed technology • Fully static design • Wide operating voltage range: - Commercial: 2.0V to 6.0V - Industrial: 2.0V to 6.0V • Low power consumption: - < 2 mA typical @ 5V, 4 MHz -1 5 µA typical @ 2V, 32 kHz -< 1 µA typical standby current @ 2V
  • 21. LA CONEXIÓN BASICA PARA QUE FUNCIONE
  • 22. EL TEMPORIZADOR TMR0 TIENE DOS FORMAS DE OPERAR (EXCLUSIVAS; UNA O LA OTRA NO AMBAS) CONTADOR DE EVENTOS RELOJ DE TIEMPO REAL CONFIGURACION DE ESTE CONTADOR O TMR0 QUE SE QUIERE CONTAR? EVENTOS EXTERNOS O PULSOS INTERNOS QUE SE DERIVAN DEL CRISTAL (MUY PRECISOS)
  • 23.  
  • 24. Dos registros fundamentales en la operacion del TMR0 En TMR0 se almacena el conteo (ojo banco 0) En OPTION se configura el TMR0 (ojo banco 1)
  • 25.  
  • 26. Preescalador o prescaler mejor dicho divisor de frecuencia
  • 27.  
  • 28.  
  • 29. LA FILOSOFIA DE TRABAJO EN LA CONFIGURACION DEL TMR0 PROGRAMAR LOS BITS INDIVIDUALES EN CUESTION DEL REGISTRO OPTION DE MODO QUE SE CONECTE LO QUE SE DESEA SEGÚN EL GRAFICO ANTERIOR. EJEMPLO: UNA ONDA ULTRASONICA ES GENERADA POR ELPIC PARA IMPLEMENTAR UN MEDIDOR DE DISTANCIAS CUAL SERIA EL TIEMPO MAXIMO A REGISTRAR Y LA MAXIMA DISTANCIA A MEDIR SI: F=40KHZ (ONDA ULTRASONICA Y LA FRECEUNCIA DEL CRISTAL O RESONADOR DEL PIC ES 4MHZ
  • 30. SOLUCION EL SONIDO SE PROPAGA A RAZON DE 340 m/S (APROXIMADO) UN PRESCALADOR MAXIMO ES DE 256 osea por cada 256 pulsos derivados del reloj interno el TMR0 cuenta un flanco Si el cristal es de 4mhz el reloj interno es de 1MHZ o F/4 Osea 1uS por flanco pero el maximo prescaler es de 256 Cada 256 conteos en TMR0 se incrementa en uno 256*1uS*255=65280uS
  • 31. 65280/2 = 32640uS se demora en ir y volver V=D/T 340m/s=x/32640uS osea que puede medir hasta 11.09 metros Y la resolucion teorica es de 256uS o de 8.7 cm Y la resolucion fisica es de Lamda/2 o de (340m/s) / 40Khz = 0.0085m o 8.5mm/2 = 4.25mm
  • 32. COMO MEJORARIA USTED LA RESOLUCION DEL SISTEMA?
  • 33. Aumentando el registro de Conteo o TMR0 o cuenta en cascada con un registro auxiliar ? O bajando el prescaler ? O una combinacion de los dos anteriores
  • 34. 8.5mm es lo maximo a 40Khz (lo mas fino) Con un registro de 8 bits son 8.5*255 son casi 2.1675metros medios Pero esto es irreal ya que solo podemos contar multiplos binarios de 1 uS Y el maximo conteo es de 255*256=65280 microsegundos (MUCHO) Como es un sistema de 8 bits cuantizamos 255 valores Que sean lamdas 8.5mm x 255 o 1.08metros que cuente cada 25uS 1,2,4,8,16,32,64,128,256…..etc Dos opciones con prescaler de 16 y mide menos de 1.08m o con 32 y mide mas de 1.08m pero se sacrifica la resolucion.
  • 35. Ahora con 32 32*255*1uS= 8.16mS E = 340m/S * 8.16mS = 2.7744 metros (10.88mm de resolucion)
  • 36.  
  • 37. TAREA SE DESEA DISEÑAR UN EQUIPO PARA MEDIR DESFASE DE DOS ONDAS DE 60Hz CUAL DEBE SER EL PRESCALER PARA OBTENER LA MAXIMA RESOLUCION DEL APARATO SI USAMOS UN TRM0 (DE 8 BITS)
  • 38. LAS INTERUPCIONES POR FLANCO EN EL PIN INT POR CAMBIO EN PINES B7,B6,B5,B4 POR DESBORDE DEL TMR0 AL TERMINAR UNA OPERACIÓN DE ESCRITURA EN LA MEMORIA EEPROM (FLASH)
  • 39.  
  • 40. EN EL VEMOS UN PAR DE BITS UNO HABILITA LA INTERUPCION OTRO DETECTA LA INTERUPCION
  • 41.  
  • 42. LOGICA DE LA INTERUPCION
  • 43. SALVAR EL CONTEXTO Parece que cuando se atiende la interupcion de borran o dañan algunos reg en el PIC la estrategia es salvarlos en RAM antes de atender el nucleo de la interupcion y al regresar restablecer los registros criticos antes de retornar el control del programa principal
  • 44. EXAMPLE : SALVANDO STATUS y W reg EN ram PUSH MOVWF W_TEMP ; Copy W to TEMP register, SWAPF STATUS, W ; Swap status to be saved into W MOVWF STATUS_TEMP ; Save status to STATUS_TEMP register ISR : ; Interrupt Service Routine : ; should configure Bank as required : ; POP SWAPF STATUS_TEMP, W ; Swap nibbles in STATUS_TEMP register ; and place result into W MOVWF STATUS ; Move W into STATUS register ; (sets bank to original state) SWAPF W_TEMP, F ; Swap nibbles in W_TEMP and place result in W_TEMP SWAPF W_TEMP, W ; Swap nibbles in W_TEMP and place result into W
  • 45. REALIZAMOS LO SIGUIENTE a) SALVAMOS EL REG W. b) SALVAMOS EL STATUS EN STATUS_TEMP. c) EJECUTAMOS EL NUCLEO DE LA INT. d) RESTABLECEMOS STATUS (Y SELECCIONAMOS BANCO) e) RESTABLECEMOS W
  • 46. EJEMPLOS EN ASSEMBLER 1 PAGINA http://perso.wanadoo.es/chyryes/tutoriales/pic13.htm 2 PAGINA??? PICLOOPS (BUSCAR EN GOOGLE) NIPLE PROGRAMAR POR DIAGRAMAS DE FLUJO http://www.niplesoft.net/index.htm Otras aplicaciones http://host.nigde.edu.tr/muzam/UZAM_PLC_with_PIC16F648A.htm http://www.electronicsoft.net/en-us/dept_9.html http://www.matrixmultimedia.com/product.php?Prod=Flowcode%20V3%20for%20PIC&PHPSESSID=
  • 47. FLOWCODE 3 DEMO http://microcontrollershop.com/product_info.php?cPath=148&products_id=527 ETHERNET http://www.dontronics-shop.com/pic-mini-web-mini-web-server-tcp-ip-development-board-for-pic-micro.html