Práctico 6 (PIC)

Anuncio
UNIVERSIDAD NACIONAL DE SAN LUIS
Facultad de Ciencias Físico Matemática y Naturales Técnico Universitario en Microprocesadores Ingeniería Electrónica Orientación Sistemas Digitales
PROCESADORES I PRÁCTICO 6: MICROCONTROLADORES PIC OBJETIVOS: Fijar los conocimientos vistos en la teoría sobre microcontroladores en general y sobre la familia PIC en particular. Familiarizarse con el uso de los microcontroladores PIC, su set de instrucciones, características, conexionado básico, etc. ELEMENTOS NECESARIOS: - Conocer los temas dados en la teoría correspondiente. - Hoja de datos del PIC 16F628. - Cristal de 4MHz y capacitores de 22pF. - EXLOG y elementos para el conexionado. PARTE 1: PREGUNTAS 1) Explique cuáles son las ventajas y desventajas de disponer de un µC con un set de instrucciones reducido. 2) Explique cuáles son las ventajas de utilizar la arquitectura Harvard en los µC, y como se relaciona y en qué consiste la llamada técnica de segmentación o pipeline. 3) Mencione las diferentes gamas disponibles de µC PICs y mencione brevemente las características principales de cada una de ellas. 4) Diga cuál es la función principal y cómo funciona el WATCHDOG TIMER (perro guardián). Explique cómo se usa este TIMER en el código del programa. 5) Se tiene dos microcontroladores PIC16F628 y PIC16F84 funcionando con un cristal de 4MHz. Los mismos ejecutan un mismo programa de 1000 instrucciones de las cuales el 10% son de salto. Calcular el tiempo que tarda en ejecutarse el programa en cada microcontrolador. 6) Indicar el valor del registro W luego de la ejecución de las siguientes instrucciones en cada caso: a) b) c) movlw
ffh
clrf
10h
clrw
movwf
10h
movf
10h,0
addlw
03h
incfsz
10h,1
btfsz
03h,2
bsf
03h,2
87h
movlw
17h
movlw
80h
movlw
1
UNIVERSIDAD NACIONAL DE SAN LUIS
Facultad de Ciencias Físico Matemática y Naturales Técnico Universitario en Microprocesadores Ingeniería Electrónica Orientación Sistemas Digitales
PARTE 2: LABORATORIO (PIC16F628) 1) Configurar los bits 0‐3 del Puerto A como entrada y los bits 4‐5 del puerto B como salida STATUS
TRISA
PORTA
TRISB
PORTB
RP0
EQU
EQU
EQU
EQU
EQU
EQU
03
05
05
06
06
5
ORG
BSF
MOVLW
MOVWF
MOVLW
MOVWF
0000
…………,…
B’……………………’
…………
B’……………………’
…………
2) Analizar el Programa 1 y responder: a) Considerando todos los pines de I/O, ¿cuales son configurados inicialmente como entradas y cuales como salidas? b) Completar la siguiente tabla de verdad correspondiente a la función lógica implementada por el programa: RB5 RB4 RA3 RA2 RA1 RA0 c) ¿Cuál es el máximo tiempo que tardan en actualizarse las salidas frente a un cambio en las entradas? (considerando solo ciclos de instrucción) 3) Configurar las interrupciones para permitir una interrupción externa STATUS
TRISA
PORTA
TRISB
PORTB
INTCON
RP0
EQU
EQU
EQU
EQU
EQU
EQU
EQU
03
05
05
06
06
0B
5
ORG
0000
; comienzo del Programa
GOTO
INICIO
ORG
0004
GOTO
SUBINT
;---------------------------------------------------; Programa principal
;---------------------------------------------------INICIO
MOVLW
B’……………………’
MOVWF
…………
2
UNIVERSIDAD NACIONAL DE SAN LUIS
Facultad de Ciencias Físico Matemática y Naturales Técnico Universitario en Microprocesadores Ingeniería Electrónica Orientación Sistemas Digitales
4) Analizar el Programa 2: a) Explique qué tipo de interrupción es utilizada en este programa. b) Además de quitar la máscara (con un 1 en el bit 3 de INTCON), ¿que más es necesario hacer para que esta interrupción pueda ser atendida? c) Explique qué función cumple en este programa la instrucción CALL. 5) Armar el circuito básico en el EXLOG con un PIC con uno de los programas previamente grabado, conectando las entradas a llaves o pulsadores y las salidas a los LEDS (poner especial atención de cuáles son las entradas). 6) Verificar que el funcionamiento del circuito responde efectivamente a la tabla de verdad. 7) ¿Cómo haría para distinguir cuál de las dos versiones de programa contiene el PIC que le tocó? Programa 1: STATUS
TRISA
PORTA
TRISB
PORTB
RP0
EQU
EQU
EQU
EQU
EQU
EQU
03
05
05
06
06
5
;
;
;
;
;
;
ORG
0000
; comienzo del programa
MOVLW B'00000111'
MOVWF CMCON
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BCF
GOTO
STATUS,RP0
B’11111111’
TRISB
B’11110000’
TRISA
STATUS,RP0
SAL4
registro de ESTADO
sentido PORTA (bank 1)
datos PORTA (bank 0)
sentido PORTB (bank 1)
datos PORTB (bank 0)
bit para cambiar de banco en STATUS
; DESABILITO COMPARADORES DEL 16F628
;
;
;
;
;
;
entramos al bank 1,
movemos 11111111b a
configuramos todo el puerto B como entrada
movemos 11111000b a W
configuramos RA0-RA3 como salidas
volvemos al bank 0
REPETIR
MOVWF PORTA
SAL4
SAL2
SAL1
SAL3
BTFSC PORTB,5
GOTO
SAL1
; testea la entrada RB5 (más significativa)
; salta si RB5=1, si RB5=0 skipped (BTFSC)
BTFSC
GOTO
MOVLW
GOTO
MOVLW
GOTO
PORTB,4
SAL2
B’00000001’
REPETIR
B’00000010’
REPETIR
; testea la entrada RB4 (menos significativa)
; salta si RB4=1
BTFSC
GOTO
MOVLW
GOTO
MOVLW
GOTO
PORTB,4
SAL3
B’00000100’
REPETIR
B’00001000’
REPETIR
; testea la entrada RB4 (menos significativa)
; salta si RB4=1
3
UNIVERSIDAD NACIONAL DE SAN LUIS
Facultad de Ciencias Físico Matemática y Naturales Técnico Universitario en Microprocesadores Ingeniería Electrónica Orientación Sistemas Digitales
Programa 2: STATUS
TRISA
PORTA
TRISB
PORTB
INTCON
RP0
EQU
EQU
EQU
EQU
EQU
EQU
EQU
03
05
05
06
06
0B
5
;
;
;
;
;
;
;
registro de ESTADO
sentido del PORTA (bank 1)
datos del PORTA (bank 0)
sentido del PORTB (bank 1)
datos del PORTB (bank 0)
configuración de interrupciones
bit de STATUS para cambiar de banco
ORG
GOTO
0000
INICIO
; comienzo del Programa
;------------------------------------------------------------------------; Subrutina de interrupcion
;------------------------------------------------------------------------ORG
0004
; vector de interrupciones
SUBINT
BTFSC PORTB,5
; testea la entrada RB5 (más significativa)
GOTO
SAL1
; salta si RB5=1
SAL2
SAL1
SAL3
BTFSC
GOTO
MOVLW
GOTO
MOVLW
GOTO
PORTB,4
SAL2
B’00000001’
VOLVER
B’00000010’
VOLVER
; testea la entrada RB4 (menos significativa)
; salta si RB4=1
BTFSC
GOTO
MOVLW
GOTO
MOVLW
PORTB,4
SAL3
B’00000100’
VOLVER
B’00001000’
; testea la entrada RB4 (menos significativa)
; salta si RB4=1
VOLVER MOVWF PORTA
BCF INTCON,INTF
RETFIE
;BORRO LA BANDERA DE INTERRUPCION EXTERNA RBO
;------------------------------------------------------------------------; Programa principal
;------------------------------------------------------------------------INICIO
MOVLW B'00000111'
MOVWF CMCON
; DESABILITO COMPARADORES DEL 16F628
MOVLW B’00001000’
MOVWF INTCON
; movemos 00001000b a W
; habilita la interrupción por cambio en PORTB
; y deshabilita todas las demás
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BCF
STATUS,RP0
B’00111111’
TRISB
B’11110000’
TRISA
STATUS,RP0
;
;
;
;
;
;
CALL
SUBINT
; llama la primera vez aunque no haya cambio en RB
REPETIR
SLEEP
GOTO
REPETIR
entramos al bank 1
movemos 00111111b a W
configuramos RB4 y RB5 como entradas
movemos 11111000b a W
configuramos RA0-RA3 como salidas
volvemos al bank 0
; espera a que ocurra una interrupción
END
4
Descargar