0% encontró este documento útil (0 votos)
67 vistas10 páginas

Operaciones con Puertos en PIC16F84A

El documento presenta 8 ejemplos de operaciones lógicas y matemáticas que pueden realizarse entre los puertos A y B de un PIC16F84A usando pseudocódigo. Los ejemplos incluyen sumar una constante a PORTA, multiplicar PORTA por 2, fijar bits pares e impares, invertir unos y ceros, intercambiar nibbles, y desplazar bits hacia la izquierda y derecha. Para cada operación se describe la configuración de puertos, registros y operadores requeridos.

Cargado por

MDLR YT
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
67 vistas10 páginas

Operaciones con Puertos en PIC16F84A

El documento presenta 8 ejemplos de operaciones lógicas y matemáticas que pueden realizarse entre los puertos A y B de un PIC16F84A usando pseudocódigo. Los ejemplos incluyen sumar una constante a PORTA, multiplicar PORTA por 2, fijar bits pares e impares, invertir unos y ceros, intercambiar nibbles, y desplazar bits hacia la izquierda y derecha. Para cada operación se describe la configuración de puertos, registros y operadores requeridos.

Cargado por

MDLR YT
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

TALLER 1 INTEGRANTES: SEBASTIAN CHAVES---JUAN FELIPE LAGOS---MARLON DE LA ROSA

1) Por el Puerto B se obtiene el dato de las cinco líneas del Puerto A, al que está conectado un
array de interruptores, sumándole el valor de una constante, por ejemplo 74 decimales. Es
decir: (PORTB)=(PORTA)+Constante

Pseudo-lenguaje
1) entrar a banco 1
2) Poner entrada TRISA y salida TRISB
3) Volver a banco 0
4) Poner PORTA en w
5) Sumarle la constante a w
6)Asignar el valor de W en PORTB

Suma constante

STATUS.5  1

TRISA 1111 1111

TRISB 0000 0000

STATUS.5  0

PORTA  W

W K + W

PORTB W
2) Por el Puerto B se obtiene el dato del Puerto A multiplicado por 2.
Es decir: (PORTB)=2(PORTA)=(PORTA)+ (PORT A).

Pseudo-lenguaje
1. entrar a banco 1
2. Poner entrada TRISA y salida TRISB
3. Volver a banco 0
4. Poner PORTA en w
5. Sumarle PORTA a w
6.Asignar el valor de W en PORTB
PORT_POR_2

STATUS.5  1

TRISA 1111 1111

TRISB 0000 0000

STATUS.5  0

PORTA  W

W  W+ PORTA

PORTB  W
3) Por el Puerto B obtiene el dato del Puerto A, pero en la salida los bits pares se fijan siempre
a "1". El orden de los bits será "b7 b6 b5 b4 b3 b2 b1 b0", siendo los pares el b6, b4, b2 y el
b0.
Por ejemplo, si por el Puerto A se introduce el dato b'---01100', por el Puerto B se visualiza
b'01011101'. Observar que los bits pares están a "1" (efectivamente: Puerto B = b'x1x1x1x1')
y los impares permanecen con el dato del puerto de entrada (efectivamente: Puerto A = b'---
x1x0x' y Puerto B = b'xxxx1x0x').

Pseudo-lenguaje
1. entrar a banco 1
2. Poner entrada TRISA y salida TRISB
3. Volver a banco 0
4. Poner PORTA en w
5. Evaluar la condición OR
6.Asignar el valor de W en PORTB
BIT_PARES

STATUS.5  1

TRISA 1111 1111

TRISB 0000 0000

STATUS.5  0

PORTA  W

IORLW  010101012

PORTB  W
4. Por el Puerto B se obtiene el contenido del Puerto A, pero los bits impares de la salida se fijan
siempre a “0”. El orden de los bits será “b7 b6 b5 b4 b3 b2 b1”, siendo los impares el b7, b5, b3,
b1. Por ejemple, si por el Puerto A se introduce el dato b’—001100’, por el Puerto B se visualiza
‘0000100’.

PSEUDO-LENGUAJE
1)Se define el PIC16F84A
2)El programa comienza en la posición 0
3)Se accede al banco 1
4)Las líneas de PORTA como entrada y as líneas de PORTB como salida
5)Se accede al banco 0
6)PORTA asignado a W, W255
7)Operación and 11111111 and 01010101
8)Resultado en W asignado a PORTB

Bit_Impar_0

STATUS,RP01

TRISA25510

TRISB010

STATUS,RP00

PORTAW

W255

ANDLW010101012

PORTBW
5)Por el Puerto B se obtiene el dato del Puerto A invertidos los unos y los ceros. Por ejemplo, si
por el Puerto A se introduce “---11001”, por el Puerto B aparecerá “xxx00110”. (No importa el
estado de los tres bits superiores del Puerto B)

PSEUDO-LENGUAJE
1)Se define el PIC16F84A
2)El programa comienza en la posición 0
3)Se accede al banco 1
4)Las líneas de PORTA como entrada y as líneas de PORTB como salida
5)Se accede al banco 0
6)PORTA asignado a W
7)Operación OR PORTA and 01010101
8)Resultado en W asignado a PORTB

PUERTOS_INVERTIDOS

STATUS,RP01

TRISA25510

TRISB010

STATUS,RP00

PORTAW

XORLWB’01010101’

PORTBW
6) Por el puerto B se obtiene el dato del Puerto A intercambiando los nibbles alto y bajo. Por
ejemplo, si por el Puerto A se introduce” ---1001”, por el Puerto B aparecerá “1001xxx1”.

PSEUDO-LENGUAJE
Se define el PIC16F84A
El programa comienza en la posición 0 INTERCAMBIO_NIBBLES
Se accede al banco 1
Las líneas de PORTA como entrada y as líneas de PORTB como salida
Se accede al banco 0
STATUS,RP01
PORTA asignado a W,
Operación SWAPLW para el intercambio de los nibbles ‘01010101’
Resultado en W asignado a PORTB

TRISA25510

TRISB010

STATUS,RP00

PORTAW

SWAPLWB’01010101’

MOVWFPORTB

7) Por el Puerto B obtiene el dato del Puerto A desplazando un bit hacia la izquierda, por
la derecha entrará un "1". Por ejemplo, si por el Puerto A se introduce "---11001", por
el Puerto B aparecerá "xx110011" (no importa el estado de los dos bits superiores del Puerto
B)
Pseudo-lenguage

1)definir pic16f84a
2)programa inicia en la dirección cero (0)
3)acceso al banco uno (status)
4)configuración líneas puerto b como salida
5)las 5 líneas del puerto a se configuran como entrada
6)acceso al banco cero (status)
7)se agrega un bit que entrara por la derecha (status, c)
8)Rota los bits una posición a la izquierda
9)llevar a puerto b para visualizarlos
10)se crea un bucle cerrado
11) finaliza el programa
DESPLAZAMIENTO_DE_UN_BIT

STATUS,RP0 1

TRISA  255

TRISB  0

STATUS,RP0 0

C1

FC

F ROTA POTA  W

BW
8) Por el Puerto B se obtiene el dato del Puerto A desplazando un bit hacia la derecha, por la
izquierda entrará un "0". Por ejemplo, si por el Puerto A se introduce “---11001", por el
Puerto B aparecerá "0xxx1100".

Pseudolenguage

1)Definir pic16f84a
2) programa inicia en la dirección cero (0)
3)acceso al banco uno (status)
4)configuración líneas puerto b como salida
5)las 5 líneas del puerto a se configuran como entrada
6)acceso al banco cero (status)
7) se agrega un CERO (0) que entrara por la izquierda (status, c)
8) Rota los bits una posición a la derecha
9) llevar a puerto b para visualizarlos
10)se crea un bucle cerrado
11) fin de programa

DESPLAZAMIENTO_DE_UN_BIT

STATUS,RP0 1

TRISA  255

TRISB  0

STATUS,RP0 0

C0

FC

F ROTA POTA  W

BW
9) Por el Puerto B se saca el dato del Puerto A invirtiendo los bits pares. Los impares se dejan
como entrada

Pseudolenguage

1)Definir pic16f84a
2) programa inicia en la dirección cero (0)
3)acceso al banco uno (status)
4)configuración líneas puerto b como salida
5)las 5 líneas del puerto a se configuran como entrada
6)acceso al banco cero (status)
7)cargar registro de A
8) registro de A mover a W
9)invertir bits pares
10)entrada como bits impares
11)resultado se agrega a b
12) se crea un bucle cerrado
13) fin de programa

INVERTIR_BITS

STATUS,RP0 1

TRISA  255

TRISB  0

STATUS,RP0 0

W  PORTA

XORLW  ’01010101’

PORTB  W
10) Por el Puerto B se obtiene el dato de las cinco líneas del Puerto A al que están
conectado un array de interruptores. Esta operación la realizará una única vez.
Después el programa entrará en modo "Standby" o de bajo consumo del cual no
podrá salir después.
Pseudolenguage

1)Definir pic16f84a
2) programa inicia en la dirección cero (0)
3)acceso al banco uno (status)
4)configuración líneas puerto b como salida
5)las 5 líneas del puerto a se configuran como entrada
6)acceso al banco cero (status)
7)cargar registro de A
8) registro de A mover a W
9)registro w se asigna en B
10)el código entra en bajo consumo
11) fin del programa

BAJO_CONSUMO

STATUS,RP0 1

TRISA  255

TRISB  0

STATUS,RP0 0

W  PORTA

PORTB  W

También podría gustarte