You are on page 1of 4

Apuntes de Microprocesadores.

Clase 9

Manejo de Salidas digitales

Una de las características más resaltantes de los PIC’s es su capacidad para suministrar y drenar corriente. Cada
pin de los puertos puede manejar hasta 25 mA; mientras que en forma conjunta para todos los bit de un el
puerto B estos valores se amplían a 200 mA (ver figura 1).

Esta particular robustez permite usar a los PIC para manipular directamente elementos optoelectrónicos
básicos, tales como LED’s y displays de siete segmentos, lo que significa una gran ventaja para la visualización
de salidas.
+5v

PIC16F887 25mA max PIC16F887 25mA max

+5v

200mA max. 200mA max.


PIC16F887 PIC16F887

Fig. 1 Máximas capacidades de corriente del PIC16F887

Ej. De programación y manejo de salidas digitales

Diseñe un comprador de magnitud de dos números binarios de 4 bits (N1 y N2) y que maneje tres LED’s para que se visualice la
relación entre ellos: mayor, menor o igual.
+5V

PIC16F887 N1 Datos
8
Port B
N2

RC0 > 330Ω


< 330Ω
RC1
Figura 2. Diagrama lógico del circuito RC2
= 330Ω

Wilmer Sanz F. 1
Apuntes de Microprocesadores. Clase 9

Algoritmo en Pseudo Códigos

PuertoB:= Dato; N1 y N2 se leen en un solo “paquete” de 8 bits


N2:= Dato & 0F ; los 4 LSb del dato son N2
N1:= Dato & F0
N1:= Swapf N1; alusión directa a la instrucción que intercambia los MSb y los LSb dentro un mismo Byte
Resta:= N1-N2
Si Resta = 0, Goto Saleq
Si Resta > 0, Goto SalM
Salmen Encender Led “<”
Goto Fin
Saleq Encender Led “=”
Gto Fin
SalM Encender Led “>”
Fin End

El listado siguiente muestra el código correspondiente a este algoritmo.

#include p16f887.inc
N1 EQU 0x20
N2 EQU 0x21

ORG 0x0
GOTO Inicio
ORG 0x5
Inicio BSF STATUS,RP0
MOVLW 0xFF
MOVWF TRISB ; Puerto B es para entrada
CLRF TRISC ; Puerto C es para salidas
BCF INTCON,GIE ;Inhabilitación de las Interrupciones
MOVLW 0xFF
MOVWF PORTC,1 ;Se apagan los LED’s conectados al Puerto C
MOVF PORTB,0
MOVWF N1
MOVWF N2
MOVLW 0x0F
ANDWF N2,1 ; N2 tiene los 4 bits bajos del dato leído
MOVLW 0xF0
ANDWF N1,1
SWAPF N1,1 ; N1 tiene los 4 bits altos del dato leído
MOVF N2,0
SUBWF N1,0 ; W <- N1+C2(N2) en complemento a 2
BTFSC STATUS,Z ; Si Z se activa el Goto siguiente se realiza
GOTO Saleq
BTFSC STATUS,C ; Si Carry se activa el Goto siguiente se realiza
GOTO SalM
Salmen BCF PORTC,1 ; Se enciende el Led conectado a RC1, con un cero en su cátodo
GOTO Fin
Saleq BCF PORTC,2 ; Se enciende el Led conectado a RC2
GOTO Fin
SalM BCF PORTC,0 ; Se enciende el Led conectado a RC0
Fin NOP
END

Wilmer Sanz F. 2
Apuntes de Microprocesadores. Clase 9

Actividad sugerida

El código anterior tiene un error que el Profesor, conscientemente, no ha señalado durante la clase. ¿Cuál es? Haga la
simulación con el MPLAB SIM sin incluir la corrección y luego repítala, incluyéndola.

Ejercico: Convertidor Hexadecimal a 7 segmentos para display ánodo común.

Se le muestra el circuito y una Tabla en el Data Memory que contiene el equivalente en siete segmentos del dígito hexadecimal leído.
Plantee el algoritmo en seudo códigos y elabore el código o programa correspondiente.

+5V

N1

PIC16F887 4 Entrada
Port B

Port C +5V

Dir. BANCO 0 (Entrada Hex) BANCO 1 (Salida 7 segmentos) Dir.


20H 00 000 0001 = 01 A0H
21H 01 100 1111 = 4F A1H
22H 02 001 0010 = 12 A2H
23H 03 000 0110 = 06 A3H
24H 04 100 1100 = 4C A4H
25H 05 010 0100 = 24 A5H
26H 06 010 0000 = 20 A6H
27H 07 000 1111 = 0F A7H
28H 08 000 0000 = 00 A8H
29H 09 000 1100 = 0C A9H
2AH 0A 000 1000 =08 AAH
2BH 0B 110 0000 = 60 ABH
2CH 0C 011 0001 = 31 ACH
2DH 0D 100 0010 = 42 ADH
2EH 0E 011 0000 = 30 AEH
2FH 0F 011 1000 = 38 AFH

Bibliografía

- Microchip Technology Inc. (2005). MPASM™ Assembler, MPLINK™ Object Linker, MPLIB™ Object Librarian
User’s Guide. http://ww1.microchip.com/downloads/en/DeviceDoc/33014J.pdf [En línea] Último acceso: 12-05-2008

- Microchip Technology Inc. (2007). Data Sheet del PIC16F8XX. Documento 41291D,
http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf [En línea] Último acceso: 29-09-2017

Wilmer Sanz F. 3
Apuntes de Microprocesadores. Clase 9
Pseudo códigos

N:= Portb
N:=N&0xF
FSR:=Dir de Tabla
Ciclo W:=INDF
Si N<>W Skip
GOTO Salida
FSR:=FSR+1
GOTO Ciclo
Salida RP0:=1
FSR:=FSR OR 0x80
W:=INDF
RP0:= 0
Portc:=W
Fin

Wilmer Sanz F. 4

You might also like