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, W255
7)Operación and 11111111 and 01010101
8)Resultado en W asignado a PORTB
Bit_Impar_0
STATUS,RP01
TRISA25510
TRISB010
STATUS,RP00
PORTAW
W255
ANDLW010101012
PORTBW
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,RP01
TRISA25510
TRISB010
STATUS,RP00
PORTAW
XORLWB’01010101’
PORTBW
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,RP01
PORTA asignado a W,
Operación SWAPLW para el intercambio de los nibbles ‘01010101’
Resultado en W asignado a PORTB
TRISA25510
TRISB010
STATUS,RP00
PORTAW
SWAPLWB’01010101’
MOVWFPORTB
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
C1
FC
F ROTA POTA W
BW
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
C0
FC
F ROTA POTA W
BW
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