Aplicaciones con el PIC 16F84Sistemas de comunicación SCADAIIng. Fernando MonrroyDippUAGRM, Septiembre 2010
Diagrama de bloques
Organización de la memoria
La UCP
Registros Contador de programa CPStackSTATUS: C, Z, DCC: AcarreoZ: CeroDC: Acarreo del nibble inferiorPD: powerdownPA0 y PA1: página 0 y 1
Puertos de E/S
Otras funcionesTemporizador: RTCC es un contador interno o externo con (opcional) preescalerWatchdogtimerInterrupciones asincrónicasPin INTDesbordamiento de contadorotras
Programación del PIC1 mov w, 342 rts rp0,03 clr rp14 add w,f5 mov rpa,w6 goto 3
El programa fuente
Juego de instruccionesInstrucciones de byte con registrosDe byte con W y literalesInstrucciones de bitInstrucciones de controlInstrucciones especiales
Instrucciones de byte con registroslógicasANDWF f,d ;operación AND lógica, destino = W ^ fIORWF f,d ;operación OR lógica, destino = W v  fXORWF f,d ;operación XOR lógica, destino = W v fCOMF f,d ;complemento lógico, destino = NOT fTransferenciaMOVF f,d ;movimiento de datos, destino = fSWAPF f,d ;intercambia nibbles, destino = SWAP fCLRF f ;borrado de contenido, f = 0MOVWF f ;copia contenido W  f, f = W
Instrucciones de byte con registrosIncremento/decrementoINCF f,d ;incremento aritmético, destino = f + 1DECF f,d ;decremento aritmético, destino = f - 1RotaciónRLF f,d ;rotación a la izquierda, destino = f ROT RRF f,d ;rotación a la derecha, destino = f ROT AritméticasADDWF f,d ;suma aritmética, destino = f + WSUBWF f,d ;resta aritmética, destino = f - W
De byte con W y literalesIORLW k ; operación OR lógica, W = W  kANDLW k ; operación AND lógica, W = W  kXORLW k ; operación XOR lógica, W = W  kMOVLW k ;carga constante en W, W = KCLRW ;borra el contenido de W, W = 0
Instrucciones de bitBCF f,b ;borra el bit b de f ;bit f(b) = 0BSF f,b ;coloca en uno el bit b de f ;bit f(b) = 1
Instrucciones de controlGOTO k ;salto a la posición k (9 bits) del programaCALL k ;salto a la subrutina en la posición k (8 bits)RETLW k ;retorno de subrutina con constante k, W = kBTFSC f,b ;salteo si bit = 0, bit = f(0)  salteaBTFSS f,b ;salteo si bit = 1, bit = f(1)  salteaDECFSZ f,d ;decrementa y saltea sí 0, destino= f - 1, = 0  salteaINCFSZ f,d ;incrementa y saltea sí 0, destino= f + 1, = 0  saltea
Instrucciones especialesNOP ;no hace nada, consume tiempoTRIS f ;carga el tristate control, TRISf = WOPTION ;carga el registro OPTION, OPTION = WCLRWDT ;borra el watchdogtimer, WDT = 0SLEEP ;coloca el µC en modo sleep, WDT = 0
Programación del PIC1 mov w, 342 rts rp0,03 clr rp14 addw,f5 movrpa,w6 goto 3WindowsMPLAB
¿Qué hago con MPLAB?Depurar programas fuente.Detectar errores en programas fuente para editarlos.Depurar los programas utilizando puntos de corte (breakpoints) mediante valores de los registros internos.
¿Qué hago con MPLAB?Seguir el flujo del programa con MPLAB -SIMen tiempo real utilizando el emulador PICMASTER.Realizar medidas de tiempo utilizando un cronómetro.Mirar variables en las ventanas de observación.Encontrar respuestas rápidas, utilizando la Ayuda en línea del MPLAB.
Un ejemplo;ejemplo:          status equ 0x03           ;hace equivalencia entre el símbolo status iniciandolo como 3Contequ 0x20          F equ 1org 0                             ;indica posición de memoria desde donde se ensamblaIniciomovlw 0x0F                 ;carga de w con el valor constante 15 (literal)movwfCont;el contenido de w se pasa al reg. CONTLoopdecfszCont,F;decremento de Cont y elude siguiente si=0gotoLoop;salto incondicional a Loopgoto $                         ;Salto incondicional aqui mismoend;Fin del código
Procedimiento 1. Haga doble click en el ícono correspondiente a MPLAB.2. Crear el archivo fuente correspondiente (menú File...New Source).3. Salve el archivo (con extensión .ASM) una vez terminada su edición (menú FILE...Save).4. Debe a continuación crearse un nuevo proyecto (menú Project...New Project).5. Cuando aparezca la ventana de New Project editar las cajas de texto:Project path and Name y DevelopmentMode, hacer click en <OK>.
Procedimiento 6. En la siguiente ventana Edit Project, hacer click en la sección Non-project files sobre elnombre del archivo fuente realizado en los pasos 2 y 3.7. Haga click en el botón <=add y luego de que éste aparezca en la sección Project Fileshaga click sobre el botón <OK>.8. Salvar el proyecto (en el menú Project...Saveproject).9. Realizar la "construcción de todo el proyecto" (menú Project...BuildAll).
Procedimiento 10. En esta etapa se realiza en forma automática el ensamble de nuestro programa fuentey el vaciado de éste en memoria de simulación. El proceso de ensamble generará unarchivo de errores en caso de que estos existan, sí es así deben corregirse directamentesobre el archivo fuente, salvar las correcciones y reconstruir el proyecto (menúProject...BuildAll). <<<En esta etapa del proceso ya se tiene el entorno listo para lasimulación>>>
Pantalla de MPLABObtenerlo en forma gratuita de:http://www.microchip.com/10/Tools/mTools/MPLAB/index.htm
Otras alternativas …
Obtenerlo en forma gratuita de:http://www.microchip.com/10/Tools/mTools/MPLAB/index.htm
Continuará …

Aplicaciones con el pic 16f84

  • 1.
    Aplicaciones con elPIC 16F84Sistemas de comunicación SCADAIIng. Fernando MonrroyDippUAGRM, Septiembre 2010
  • 2.
  • 3.
  • 4.
  • 5.
    Registros Contador deprograma CPStackSTATUS: C, Z, DCC: AcarreoZ: CeroDC: Acarreo del nibble inferiorPD: powerdownPA0 y PA1: página 0 y 1
  • 6.
  • 7.
    Otras funcionesTemporizador: RTCCes un contador interno o externo con (opcional) preescalerWatchdogtimerInterrupciones asincrónicasPin INTDesbordamiento de contadorotras
  • 8.
    Programación del PIC1mov w, 342 rts rp0,03 clr rp14 add w,f5 mov rpa,w6 goto 3
  • 9.
  • 10.
    Juego de instruccionesInstruccionesde byte con registrosDe byte con W y literalesInstrucciones de bitInstrucciones de controlInstrucciones especiales
  • 11.
    Instrucciones de bytecon registroslógicasANDWF f,d ;operación AND lógica, destino = W ^ fIORWF f,d ;operación OR lógica, destino = W v fXORWF f,d ;operación XOR lógica, destino = W v fCOMF f,d ;complemento lógico, destino = NOT fTransferenciaMOVF f,d ;movimiento de datos, destino = fSWAPF f,d ;intercambia nibbles, destino = SWAP fCLRF f ;borrado de contenido, f = 0MOVWF f ;copia contenido W f, f = W
  • 12.
    Instrucciones de bytecon registrosIncremento/decrementoINCF f,d ;incremento aritmético, destino = f + 1DECF f,d ;decremento aritmético, destino = f - 1RotaciónRLF f,d ;rotación a la izquierda, destino = f ROT RRF f,d ;rotación a la derecha, destino = f ROT AritméticasADDWF f,d ;suma aritmética, destino = f + WSUBWF f,d ;resta aritmética, destino = f - W
  • 13.
    De byte conW y literalesIORLW k ; operación OR lógica, W = W kANDLW k ; operación AND lógica, W = W kXORLW k ; operación XOR lógica, W = W kMOVLW k ;carga constante en W, W = KCLRW ;borra el contenido de W, W = 0
  • 14.
    Instrucciones de bitBCFf,b ;borra el bit b de f ;bit f(b) = 0BSF f,b ;coloca en uno el bit b de f ;bit f(b) = 1
  • 15.
    Instrucciones de controlGOTOk ;salto a la posición k (9 bits) del programaCALL k ;salto a la subrutina en la posición k (8 bits)RETLW k ;retorno de subrutina con constante k, W = kBTFSC f,b ;salteo si bit = 0, bit = f(0) salteaBTFSS f,b ;salteo si bit = 1, bit = f(1) salteaDECFSZ f,d ;decrementa y saltea sí 0, destino= f - 1, = 0 salteaINCFSZ f,d ;incrementa y saltea sí 0, destino= f + 1, = 0 saltea
  • 16.
    Instrucciones especialesNOP ;nohace nada, consume tiempoTRIS f ;carga el tristate control, TRISf = WOPTION ;carga el registro OPTION, OPTION = WCLRWDT ;borra el watchdogtimer, WDT = 0SLEEP ;coloca el µC en modo sleep, WDT = 0
  • 19.
    Programación del PIC1mov w, 342 rts rp0,03 clr rp14 addw,f5 movrpa,w6 goto 3WindowsMPLAB
  • 20.
    ¿Qué hago conMPLAB?Depurar programas fuente.Detectar errores en programas fuente para editarlos.Depurar los programas utilizando puntos de corte (breakpoints) mediante valores de los registros internos.
  • 21.
    ¿Qué hago conMPLAB?Seguir el flujo del programa con MPLAB -SIMen tiempo real utilizando el emulador PICMASTER.Realizar medidas de tiempo utilizando un cronómetro.Mirar variables en las ventanas de observación.Encontrar respuestas rápidas, utilizando la Ayuda en línea del MPLAB.
  • 22.
    Un ejemplo;ejemplo: status equ 0x03 ;hace equivalencia entre el símbolo status iniciandolo como 3Contequ 0x20 F equ 1org 0 ;indica posición de memoria desde donde se ensamblaIniciomovlw 0x0F ;carga de w con el valor constante 15 (literal)movwfCont;el contenido de w se pasa al reg. CONTLoopdecfszCont,F;decremento de Cont y elude siguiente si=0gotoLoop;salto incondicional a Loopgoto $ ;Salto incondicional aqui mismoend;Fin del código
  • 23.
    Procedimiento 1. Hagadoble click en el ícono correspondiente a MPLAB.2. Crear el archivo fuente correspondiente (menú File...New Source).3. Salve el archivo (con extensión .ASM) una vez terminada su edición (menú FILE...Save).4. Debe a continuación crearse un nuevo proyecto (menú Project...New Project).5. Cuando aparezca la ventana de New Project editar las cajas de texto:Project path and Name y DevelopmentMode, hacer click en <OK>.
  • 24.
    Procedimiento 6. Enla siguiente ventana Edit Project, hacer click en la sección Non-project files sobre elnombre del archivo fuente realizado en los pasos 2 y 3.7. Haga click en el botón <=add y luego de que éste aparezca en la sección Project Fileshaga click sobre el botón <OK>.8. Salvar el proyecto (en el menú Project...Saveproject).9. Realizar la "construcción de todo el proyecto" (menú Project...BuildAll).
  • 25.
    Procedimiento 10. Enesta etapa se realiza en forma automática el ensamble de nuestro programa fuentey el vaciado de éste en memoria de simulación. El proceso de ensamble generará unarchivo de errores en caso de que estos existan, sí es así deben corregirse directamentesobre el archivo fuente, salvar las correcciones y reconstruir el proyecto (menúProject...BuildAll). <<<En esta etapa del proceso ya se tiene el entorno listo para lasimulación>>>
  • 26.
    Pantalla de MPLABObtenerloen forma gratuita de:http://www.microchip.com/10/Tools/mTools/MPLAB/index.htm
  • 27.
  • 28.
    Obtenerlo en formagratuita de:http://www.microchip.com/10/Tools/mTools/MPLAB/index.htm
  • 29.