Escolar Documentos
Profissional Documentos
Cultura Documentos
Es la arquitectura tradicional de computadoras y microprocesadores. En este esquema, la unidad central de proceso (CPU), est conectada a una memoria nica que contiene las instrucciones del programa y los datos
Angel Pomares Soliz
La arquitectura Harvard
La arquitectura Harvard, la CPU esta conectado a dos memorias a travs de dos buses independientes. La (Memoria de Programa) contiene las instrucciones del programa y la (Memoria de Datos) almacena los datos.
Los PICs utilizan la arquitectura Harvard, con una memoria de datos de 8 bits, y una memoria de programa que, segn el modelo, puede ser Pomares Soliz 14 o 16 bits. Angel de 12,
PIC16F873 / PIC16F876
Principales Caractersticas
Set de instrucciones reducido (RISC). 35 instrucciones Las instrucciones se ejecutan en un slo ciclo de mquina excepto los saltos que requieren 2 ciclos. Opera con una frecuencia de clock reloj de hasta 20 MHz (ciclo de mquina de 200 ns) Memoria de programa: 4096 posiciones de 14 bits. Memoria de datos: RAM de 192 bytes (8 bits por reg). Memoria EEPROM: 128 bytes (8 bits por registro). Stack de 8 niveles. 22 Terminales de I/O que soportan corrientes de hasta 25 mA. 5 Entradas analgicas de 10 bits de resolucin. 3 Timers. Mdulos de comunicacin serie, comparadores, PWM.
Angel Pomares Soliz
Caractersticas especiales: La memoria de programa se puede reescribir hasta 1000 veces. La memoria EEPROM se puede reescribir hasta 1000000 de veces. Los datos almacenados en la memoria EEPROM se retienen por 40 aos y no se borran al quitar la alimentacin al circuito. 13 fuentes de interrupcin: Seal externa (RB0). Desborde de TMR0 Cambio en el estado de los terminales RB4, RB5, RB6 o RB7. Ciclo de escritura en la memoria EEPROM completado. Ciclo de conversin A/D finalizado , etc
Angel Pomares Soliz
Memoria de programa
El PIC16F873 dispone de una memoria de programa de 4096 posiciones (0000H a 03FFH) de 14 bits cada una. La memoria est dividida en 2 pginas Stack de 8 niveles. Son 8 registros de 13 bits La posicin 0000H de la memoria es el denominado Vector de Reset La direccin 0004H es el denominado Vector de interrupcin. La memoria de programa propiamente dicha se divide en dos pginas (0005-07FF y 0800-0FFF). La pgina se debe selecciona por software. Para ello se utiliza el bit 3 del registro PCLATH.
Angel Pomares Soliz
Memoria de Datos
Se encuentra en dos zonas bien diferenciadas: 1- Memoria tipo RAM (SRAM): Se divide en 4 bancos o paginas de 128 registros de 8 bits cada uno, aunque no todos los registros estn implementados fsicamente. Los registros se dividen en: yRegistros especiales Cada uno tiene una funcin especiales: especfica que se analizar ms adelante. yRegistros de uso general Son los registros que general: le permiten al usuario almacenar valores temporalmente (variables) durante la ejecucin del programa. EEPROM: 2- Memoria de datos tipo EEPROM esta compuesta de por 128 registros de 8 bits cada uno. Este tipo de memoria es capaz de guardar la informacin mas de 40 aos.
Angel Pomares Soliz
Memoria de datos
Otros Pics
OPTION
STATUS
El mdulo de conversin Analgico/Digital dispone de cinco entradas para los dispositivos de 28 pines y ocho para los otros dispositivos de la familia. Los pines del PORTA pueden configurarse como: Entradas analgicas (RA, tambin puede ser entrada de tensin de referencia) Como E/S digital.
El registro ADCON0 de control del funcionamiento del conversor El registro ADCON1 de configuracin de los pines del puerto.
ADFM --Bit 7
---
bit 7: ADFM: Selecciona el formato del resultado de la conversin A/D 1 = Pone en el registro ARDESH los seis bit de mayor peso a 0 (alineacin a la derecha). 0 = pone los 6 bit de menor peso del registro ADRESL a 0 (alineacin a la izquierda). Por lo tanto los 16 bits que forman el registro ARDESH-ARDESL con ADFM=1 tiene los 6 bit de mayor peso a cero y con ADFM=0 los 6 bit de menor peso estn a cero bit 6-4: No implementados: Se leen como cero bit 3-0: PCFG3-PCFG0: bits de configuracin de los canales de entrada del 3- PCFG3-PCFG0: convertidor A/D. Se utilizan para configurar los pines como E/S digital o como entrada analgica de acuerdo con la siguiente tabla:
Angel Pomares Soliz
V REF+ V REF-
suma
;* Programa ejemplo que realiza la suma 1 + 2 y almacena el resultado en la variable SUMA ;--- Especificar el PIC a emplear LIST P=16F873 INCLUDE "p16f873.inc" ;--- Variables SUMA EQU 0x20 ;-- Comienzo del programa ORG 0 MOVLW 1 ADDLW 2 MOVWF SUMA fin GOTO fin END
Angel Pomares Soliz
Led_on ; Programa que enciende el led conectado al pin RB1 LIST P=16F873 INCLUDE "p16f873.inc" ORG 0 ; -- Poner el bit RB1 como salida BSF STATUS,RP0 ; Acceder al banco 1 BCF TRISB,1 ; Poner RB1 como salida ; -- Activar RB1 para encender el led BCF STATUS,RP0 ; Acceder al banco 0 BSF PORTB,1 ; Sacar un '1' por RB1 GOTO fin ; Bucle infinito END
Angel Pomares Soliz
fin
;* Programa ejemplo que realiza la suma 1 + 2 y ;* deposita el resultado en la variable SUMA ;--- Especificar el PIC a emplear LIST P=16F873 INCLUDE "p16f873.inc" ;--- Variables SUMA EQU 0x20 ;-- Comienzo del programa ORG 0 MOVLW 9 ADDLW 2 MOVWF SUMA fin GOTO fin END
; --- Especificar el PIC a emplear LIST P=16F873 INCLUDE "p16f873.inc" ; -- Comienzo del programa ORG 0 ; -- Poner el bit RB1 como salida BSF STATUS,RP0 BCF TRISB,1 ; -- Activar RB1 para encender el led BCF STATUS,RP0 BSF PORTB,1 fin GOTO fin END
;Simple ejemplo de E/S con los PIC 16F87X ; ;Leer el estado de 6 interruptores conectados a RA0-RA5 y reflejar (el complemento del estado ;lgico de) los mismos sobre los salidas RB0-RB5 conectadas unos leds List p=16F873 ;Tipo de procesador include "P16F873.INC" ;Definiciones de registros internos ERRORLEVEL -302 org 0x00 ;Vector de Reset goto Inicio org 0x05 ;Salva el vector de interrupcin Inicio ; clrf PORTB bsf bcf movlw movwf clrf movlw movwf bcf CLRW clrwdt movf ;xorlw movwf goto end ;Borra los latch de salida STATUS,RP0 ;Selecciona banco 1 STATUS,RP1 b'00000110' ADCON1 TRISC b'00111111' TRISA STATUS,RP0
;Puerta A digital ;Puerta B se configura como salida ;Puerta A se configura como entrada ;Selecciona banco 0
Loop
;Refrescar el WDT PORTA,W ;Leer las entradas RA0-RA5 b'00111111' ;Complementa el valor ledo PORTC ;Reflejar en las salidas RB0-RB5 Loop ;Bucle sin fin
;ejemplo de SALIDA con los PIC 16F87X ;E/S Digital ;Las salidas de un patron binario por RB0 - RB5 conectadas unos leds List p=16F873 ;Tipo de procesador include "P16F873.INC" ;Definiciones de registros internos errorlevel -302 org 0x00 ;Vector de Reset goto Inicio org 0x05 ;Salva el vector de interrupcin PORTB ;Borra los latch de salida bsf STATUS,RP0 ;Selecciona banco 1 movlw movwf clrf bcf movlw Loop clrwdt movwf goto end PORTB Loop ;Refrescar el WDT ;Reflejar en las salidas RB0-RB5 ;Bucle sin fin ;Fin del programa fuente b'00000110' ADCON1 TRISB STATUS,RP0 B'00111111'
Inicio
clrf