Você está na página 1de 20

Microcontroladores PIC16F873

Arquitectura Von Neumman

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

Angel Pomares Soliz

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

Conexionado fijo del Mc PIC16F873/876

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

Angel Pomares Soliz

Otros Pics

OPTION

STATUS

Angel Pomares Soliz

Seleccin de los bancos de la Memoria de datos


La memoria de los datos se divide en los mltiples bancos que contiene: los Registros del Propsito Generales Los Registros de la Funciones especiales. Los bit RP1 (STATUS <6> y RP0 ESTADO <5>) seleccionan cada uno de estos bancos, de acuerdo a la siguiente tabla:
RP1 0 0 1 1 RP0 0 1 0 1 Banco Banco 0 Banco 1 Banco 2 Banco 3

Angel Pomares Soliz

MODULO CONVERTIDOR ANALGICO/DIGITAL (A/D)

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.

Angel Pomares Soliz

Registro ADCON1 (direccin 9Fh)


U-0 U-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0

ADFM --Bit 7

---

--- PCFG3 PCFG2 PCFG1 PCFG0


Bit 0

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

Registro ADCON1 (direccin 9Fh)


PCFG3: PCFG0 "0000" "0001" "0010" "0011" "0100" "0101" 011X 1000 1001 1010 1011 1100 1101 1110 1111 AN4 RA5 A A A A D D D A A A A A D D D AN3 RA3 A V REF+ A V REF+ A V REF+ D AN2 RA2 A A A A D D D AN1 RA1 A A A A A A D A A A A A A D D AN0 RA0V A A A A A A D A A A A A A A A VDD RA3 VDD RA3 VDD RA3 VDD RA3 RA3 RA3 RA3 RA3 RA3 VDD RA3 VSS VSS VSS VSS VSS VSS VSS RA2 VSS VSS RA2 RA2 RA2 VSS RA2 VREF+ V REFCHAN/ REFS 8/0 (07/01) 5/0 (04/01) 3/0 (02/01) 0/0 (06/02) 6/0 (05/01) (04/02) (03/02) (02/2) 1/0 (1/2)

V REF+ V REFA V REF+ A A

V REF+ V REFV REF+ V REFV REF+ V REFD D

V REF+ V REF-

A= Entrada Analogica; D = E/S Digital

Angel Pomares Soliz

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

Angel Pomares Soliz

; Programa que enciende el led conectado al pin RB1

; --- 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

; Acceder al banco 1 ; Poner RB1 como salida

; Acceder al banco 0 ; Sacar un '1' por RB1 ; Bucle infinito

Angel Pomares Soliz

;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

Angel Pomares Soliz ;Fin del programa fuente

;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

;Puerta A digital ;Puerta B se configura como salida ;Selecciona banco 0

Angel Pomares Soliz

Você também pode gostar