Microcontroladores PIC16FXX:

Anuncio
Microcontroladores PIC16FXX:
Puertos de entrada/salida digitales
y
Contadores 0 y 1
Estructura del microcontrolador
Patillado y periférico de la Familia 16FXX
Los líneas de entrada/salida tienen las siguientes características:

Manipulan corrientes altas (25 mA) para controlar LEDs directamente

Se pueden programar para generar interrupciones cuando cambia un pin

Pull-ups programables individualmente
Estructura del puerto A
Características del Puerto A
PORTA es un puerto digital bidireccional
El número de lineas depende del microcontrolador específico (por ejemplo 8
bits para el 16F88).
La dirección de cada línea está determinada por el registro TRISA:
●
TRISA bit = 1 hace que pin correspondiente de PORTA sea una entrada
●
TRISA bit = 0 hace que pin correspondiente de PORTA sea una salida
Despues de Power-on Reset, los pines están configurados dependiendo de la
salida multiplexada.
Cuando se lee el registro del PORTA, leemos el estado del mientras que cuando
escribimos lo hacemos en un latch del puerto.
Todas las operaciones de escritura son operaciones de lectura-modificaciónescritura: Escribir un puerto implica que los pines son leidos, su valormodificado
y luego escrito en el latch.
Registros asociados al Puerto A
ANSEL: Analog Select Register
ANS<6:0>: Selección de función de pins:
1 = Entrada analogica
0 = Entrada digital
IRP: Register Bank Select bit
(used for indirect addressing)
1 = Bank 2, 3 (100h-1FFh)
0 = Bank 0, 1 (00h-FFh)
RP: Register Bank Select bits
(used for direct addressing)
11 = Bank 3 (180h-1FFh)
10 = Bank 2 (100h-17Fh)
01 = Bank 1 (80h-FFh)
00 = Bank 0 (00h-7Fh)
Configurando el Puerto A – Un ejemplo
Configuración del Puert A en el PIC16F88
BANKSEL PORTA
CLRF PORTA
; Select bank of PORTA
; Initialize PORTA by
; clearing output data latches
BANKSEL ANSEL
MOVLW 0x00
MOVWF ANSEL
; Select Bank of ANSEL
; Configure all pins as digital inputs
;
MOVLW 0xFF
MOVWF TRISA
; Value used to initialize data direction
, Set RA<7:0> as inputs
Estructura del Puerto B
Características del Puerto B
PORTB es un puerto digital bidireccional
El número de lineas depende del microcontrolador específico (por ejemplo 8
bits para el 16F88).
La dirección de cada línea está determinada por el registro TRISB:
●
TRISB bit = 1 hace que pin correspondiente de PORTA sea una entrada
●
TRISB bit = 0 hace que pin correspondiente de PORTA sea una salida
Cada línea del PORTB despues de Power-on Reset, los pines están
configurados dependiendo de la salida multiplexada.
Cada línea del PORTB, tiene una resistencia de pull-up programable individualmente (CCP1CON<3:0> = 0 0 0 0 – Modo captura deshabilitado - ).
Se habilita reseteando el bit RBPU (OPTION_REG<7>). Los pull-ups son
deshabilitados despues de Power-on Reset.
Todas las operaciones de escritura son operaciones de lectura-modificaciónescritura: Escribir un puerto implica que los pines son leidos, su valormodificado
y luego escrito en el latch.
Características del Puerto B
Cuatro de las líneas del PORTB (RB7:RB4) pueden generar una interrupción
cuando se produce un cambio en alguna de esas líneas (interrupt-on-change).
Estas función se puede activar solo cuando las líneas están configuradas como
salidas.
Las entradas del PORTB (RB7:RB4) son comparadas con los valores almacenados en los latch del PORTB que almacenan el valor leido anteriormente, calculando una diferencia que se utiliza para generar el bit RBIF (INTCON<0>).
Esta interrupción puede sacar al dispositivo del estado Sleep.
El usuario puede indicar que atendio la interrupción de la siguienet manera:


Cualquier operación de lectura o escritura del PORTB. Esto resetea la
diferencia de comportamiento
Resetear el bit RBIF.
Registros asociados al Puerto B
RBPU:
PORTB Pull-up Enable bit
1 = PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled
INTEDG: Interrupt Edge Select bit
1 = Interrupt on rising edge of RB0/INT pin
0 = Interrupt on falling edge of RB0/INT pin
Registro de control de inetrrupción
GIE: Global Interrupt Enable bit
PEIE: Peripheral Interrupt Enable bit
1 = Enables all unmasked interrupts
0 = Disables all interrupts
1 = Enables all unmasked peripheral interrupts
0 = Disables all peripheral interrupts
INT0IE: RB0/INT External Interrupt Enable bit
RBIE: RB Port Change Interrupt Enable bit
1 = Enables the RB0/INT external interrupt
0 = Disables the RB0/INT external interrupt
1 = Enables the RB port change interrupt
0 = Disables the RB port change interrupt
INT0IF: RB0/INT External Interrupt Flag bit 1 = The RB0/INT external interrupt occurred
0 = The RB0/INT external interrupt did not occur
RBIF: RB Port Change Interrupt Flag bit
1 = At least one of the RB7:RB4 pins changed
0 = None of the RB7:RB4 pins have changed
Estructura del Timer0
Registros asociados al Timer0
Registros asociados al Timer0
T0CS: TMR0 Clock Source Select 1 = Transition on T0CKI pin
0 = Internal instruction cycle clock (CLKO)
T0SE: TMR0 Source Edge Select 1 = Increment on high-to-low transition
0 = Increment on low-to-high transition
PSA: Prescaler Assignment
1 = Prescaler is assigned to the WDT
0 = Prescaler is assigned to the Timer0
PS: Prescaler Rate Select bits
Bit Value
000
001
010
011
100
101
110
111
TMR0 Rate
1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256
WDT Rate
1:1
1:2
1:4
1:8
1:16
1:32
1:64
1:128
Estructura del Timer1
El Timer1 puede operar en uno de los siguientes tres modos:
●
Como untemporizador
●
Como un contador sincrono
●
Como un contador asincrono
Registros asociados al Timer1
Registros asociados al Timer1
T1RUN: Timer1 System Clock Status
1 = System clock is derived from Timer1 oscillator
0 = System clock is derived from another source
T1CKPS: Timer1 Input Clock Prescale Select
11 = 1:8 Prescale value
10 = 1:4 Prescale value
01 = 1:2 Prescale value
00 = 1:1 Prescale value
T1OSCEN: Timer1 Oscillator Enable Control
1 = Oscillator is enabled
0 = Oscillator is shut off
T1SYNC: Timer1 External Clock Input Synchronization Control
1 = Do not synchronize external clock input
0 = Synchronize external clock input
TMR1CS: Timer1 Clock Source Select 1 = External clock from pin (on the rising edge)
0 = Internal clock (FOSC/4)
TMR1ON: Timer1 On
1 = Enables Timer1
0 = Stops Timer1
Operando con Timer1 – Ejemplo -
Como leer el Timer1 cuando esta contando
Operando con Timer1 – Ejemplo -
Como escribir Timer1
Descargar