BUCLES – SUBRUTINAS – RETARDOS MICROCONTROLADORES
NAYIBE CHIO BUCLES INFINITOS INICIOCODIGO CODIGO_1 CODIGO_2 IR A INICIO INICIO CODIGO CODIGO_1 CODIGO_2 Realizar un programa que visualice a través de un puerto de 8 líneas un contador que comience desde cero (TAREA)
NAYIBE CHIO BUCLES FINITOS Realizar un programa que revise y visualice el estado de tres sensores de proximidad (TAREA) INICIO CODIGO CODIGO_1 CODIGO_2 ? TERMINAR NO SI INICIOCODIGO CODIGO_1 SI CUMPLE CONDICION, IR A INICIO SI NO CUMPLE CONDICION CODIGO_2 TERMINAR
NAYIBE CHIO BUCLES ANIDADOS El número total de ciclos de instrucción es igual al producto de los ciclos de instrucción del bucle interno por las del bucle externo
NAYIBE CHIO
NAYIBE CHIO DIRECTIVAS CBLOCK (Define a Block of Constants) ENDC (End Constant Block) Asigna direcciones de la memoria RAM de datos CBLOCK 0x20;Las variables se posicionan a partir de esta posición en la RAM VAR1;VAR1 ocupa la posición 0x20 de la RAM VAR2;VAR2 ocupa la posición 0x21 de la RAM RESUL;RESUL ocupa la posición 0x22 de la RAM ENDC
NAYIBE CHIO CBLOCK ;Las variables se posicionan a partir de la última posición de RAM ;definida por el último bloque CBLOCK MAYOR;MAYOR ocupa la posición 0x23 de la RAM MENOR;MENOR ocupa la posición 0x24 de la RAM IGUAL;IGUAL ocupa la posición 0x25 de la RAM ENDC Si en el primer CBLOCK no se define el comienzo, los valores asignados comienzan con el cero (NO ES CORRECTO)
NAYIBE CHIO #DEFINE (Define a Text Substitution Label) : define una cadena de sustitución de texto #DEFINE [ ] #DEFINELEDONPORTB,0 #DEFINEBANCO1BSF STATUS,5 #DEFINEBANCO0BCF STATUS, BANCO1 BCF LEDON BANCO0 BSF LEDON
NAYIBE CHIO SALTOS INDEXADO : Dirección de salto = suma de un registro base (PCL) con un valor cargado en el registro trabajo W equivalente a un registro índice o valor de desplazamiento (offset)
NAYIBE CHIO _CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC LIST P = 16F877 INCLUDE ORG 0x00 CALL PUERTOS;configuración de puertos CICLO MOVF PORTB,0;lee varlor de variable de entrada ANDLW B’ ’;deja los dos bits de entrada ADDWF PCL,1;va al salto adecuado TABLA GOTO SALTO0 GOTO SALTO1 GOTO SALTO2 GOTO SALTO3 SALTO0 MOVLW B’ ’;Salto 0 GOTO SALIDA SALTO1 MOVLW B’ ’;Salto 1 GOTO SALIDA SALTO2 MOVLW B’ ’; Salto 2 GOTO SALIDA SALTO3 MOVLW B’ ’; Salto 3 GOTO SALIDA SALIDA MOVWF PORTD;Visualiza por el puerto de salida GOTO CICLO PUERTOS BSF STATUS,5;Banco 1 CLRF TRISD;PortD como salida MOVLW B’ ’:2 primeros bits PortB - entrada MOVWF TRISB BCF STATUS,5;Banco0 RETURN END
NAYIBE CHIO TAREA 1 Como se puede incluir un programa dentro de otro programa. Revisar la directiva INCLUDE. Explique con un ejemplo
NAYIBE CHIO TABLAS ADDWF PCL,1 RETLW DIRECTIVA ‘DT’ : Define tabla, sustituye el uso repetitivo de retlw DT “MICROCONTROLADORES”,0x08,.30
NAYIBE CHIO TAREA 2 Explique con un ejemplo que hacen las siguientes directivas : MESSG ERROR IF Y ENDIF
NAYIBE CHIO RETARDOS Qué es un ciclo de máquina? Cuánto tiempo tarda en ejecutarse una instrucción bsf con un cristal de 4 Mhz? Cuánto tiempo tarda en ejecutarse una instrucción call con un cristal de 4 Mhz? Cuántos ciclos de máquina se necesitan para generar un retardo de 1.5 ms con un cristal de 4 Mhz?
NAYIBE CHIO MPLAB : los tiempos se miden con el stopwatch. –Dubugger Stopwatch Instrucción NOP (No operación): 1 ciclo de máquina o de instrucción. No altera registros ni banderas
NAYIBE CHIO Retardo Lazo Simple Algoritmo 1.Carga contador con un valor inicial 2.Tiempo de espera 3.Decrementa contador 4.Contador llego a cero A. Si Termina B. No vuelve a 2
NAYIBE CHIO Ret_1ms;el llamado aporta 2 cm movlw d’249’;1 cm. Carga K movwf cont;1 cm Ciclo_1ms nop;1cm * K decfsz cont,1;(K-1)*1cm(No salta) + 2 cm (Salta) goto Ciclo_1ms;(K-1)*2cm return;2cm Tiempo = (K*1) + (K-1)* (K-1)*2 +2 Con K = 249 Tiempo = 1001 cm
NAYIBE CHIO Retardo Lazo anidado Algoritmo 1.Carga contador2 con un valor inicial 2.Carga contador1 con un valor inicial 3.Tiempo de espera 4.Decrementa contador1 5.Contador1 llego a cero A. Si va a 6 B. No vuelve a 4 6. Decrementa contador2 7. Contador2 llego a cero A. Si Termina B. No vuelve a 2
NAYIBE CHIO Ret_1ms;el llamado aporta 2 cm movlw d’1’;1 cm. Carga N movwf cont2;1 cm Ciclo_Ext movlw d’249’;N*1 cm. Carga K movwf cont1;N*1 cm Ciclo_Int nop;1cm * K *N decfsz cont1,1;(K-1)*N*1cm(No salta) + N*2 cm (Salta) goto Ciclo_Int;(K-1)*N*2cm decfsz cont2,1;(N-1)*1cm(No salta) + 2 cm (Salta) goto Ciclo_Ext;(N-1)*2cm return;2cm Tiempo = (N*1) + (N*1) + (K*N*1) +[(K-1)*N*1] +(N*2) + [(K-1)*N*2] + [(N-1)*1] +2 + [(N-1)*2] +2 Tiempo = 8+N+N+KN+KN-N+2N+2KN-2N+N-1+2N-2 Tiempo = 5 + 4N + 4KN = 1005 cm
NAYIBE CHIO TAREA 3 Cómo se conectan al microcontrolador los siguientes periféricos y que voltajes y corrientes pueden soportar? -Interruptores -Pulsadores -Entradas con optoacopladores -Sensores(óptico, infrarrojo, pasivo de luz,proximidad, realice la busqueda con 5 tipos de sensores) -Diodo Led -Display de 7 segmentos -Zumbador -Motor paso a paso -Motor de corriente continua -Servomotor -Relé -Fototriac -Triac
NAYIBE CHIO