Академический Документы
Профессиональный Документы
Культура Документы
FACULTAD DE MATEMÁTICAS
MICROCONTROLADORES
OTILIO SANTOS AGUILAR
REPORTE:
COMUNICACIÓN SERIAL
FECHA DE ENTREGA:
LUNES 16 DE MAYO, 2011
Página 1 de 5
OBJETIVO
Encender y apagar 3 leds y verificar si están activados los switches o no con el PIC16F877A
mediante comunicación serial asíncrono de alta frecuencia de baudios con una hiperterminal.
CARACTERISTICAS DE LA TAREA
Los leds deben estar conectados en el puerto A y los switches en el puerto B. Los pines de
recepción y transmisión deben estar conectados en los pines 6 y 7 del puerto C, respectivamente.
Se imprime 1 en la hiperterminal si el switch en evaluación está activado y 0 si no lo está.
ORG 0x00
goto INICIO
ORG 0x04
goto SERV_INT
Se inicia el código: se digitaliza el puerto A y se configura como salida y al final se limpia. También
se configura el puerto B como entrada
INICIO
;-----------Puerto A como Digital------------------------
movlw ADCON1
movwf FSR
movlw 0x06
movwf INDF
Página 2 de 5
;-----------Puerto A como Salida------------------------
movlw TRISA
movwf FSR
movlw 0x00
movwf INDF
A continuación, se configura los pines 6 y 7 (TX como salida y RX como entrada, respectivamente)
;------------Configurando los pines TX y RX--------------
movlw TRISC
movwf FSR
bcf INDF,6
bsf INDF,7
movlw PIE1
movwf FSR
bsf INDF,RCIE `
goto $
Página 3 de 5
Se utilizaran las teclas A, S y D para encender y apagar los Leds 1 (pin RA0), 2 (pin RA1) y 3 (pin
RA2), respectivamente; y también las teclas J, K y L para los verificar si estan activados o no los
switches 1 (pin PB0), 2 (pin PB1) y 3 (pin PB2)
Cuando se inicie la interrupción se verificara qué tecla se oprimió, primero bajando la bandera de
interrupcion de la recepción y luego leyendo la información contenida
SERV_INT ;Servicio de Interrupcion
En caso de que se haya tecleado A, S o D los siguientes comandos harán que se encienda o se
apague determinado Led de acuerdo con la tecla presionada:
Nota: se usa el comando XOR para que se encienda o se apague el bit seleccionado (si son iguales
el bit seleccionado y el bit de comparación el resultado es 0, si son distintos el resultado es 1)
;----- Encendido y apagado de los leds ----------------------------------------
led1 ;Prende Led 1 si esta apagado y lo apaga si esta prendido
movlw b'00000001'
xorwf PORTA, f
goto FIN
Página 4 de 5
led2 ;Prende Led 2 si esta apagado y lo apaga si esta prendido
movlw b'00000010'
xorwf PORTA, f
goto FIN
led3 ;Prende Led 3 si esta apagado y lo apaga si esta prendido
movlw b'00000100'
xorwf PORTA, f
goto FIN
;ejemplo:
;se oprime 1
;
; bits despeciados (X)
; _____
; PORTA: XXXXX000
; XOR: 00000001
; --------
; XXXXX001
;se oprime 2
;
; PORTA: XXXXX001
; XOR: 00000010
; --------
; XXXXX011
;...
En caso de que se haya tecleado J, K o L los siguientes comandos verificara si está activado o no
determinado Switch de acuerdo con la tecla presionada:
Nota: el resultado (0 o 1) se imprimirá en la hiperterminal.
;----- Chequeo de los switches --------------------------------------------
sw1 ;Envia 1 o 0 dependiendo si el switch1 esta prendido o apagado
btfss PORTB,0
goto cero
movlw "1"
goto envia
Finalizacion de la interrupcion:
FIN retfie;
END
Página 5 de 5