Anda di halaman 1dari 5

Universidad Nacional Autnoma de Mxico Facultad de Ingeniera

Reporte de prctica 3. Puertos Paralelos II (Control de acciones) Nombre:

Laboratorio de Microcomputadoras.

1.- Empleando dos puertos paralelos del microcontrolador PIC, uno de ellos configurado como entrada y el otro como salida; realizar un programa que de acuerdo al valor del bit menos significativo del puerto A, se genere la accin indicada en el puerto B. processor 16f877 ;version del procesador include<p16f877.inc> ;libreria de la versin org 0 ; Carga el vector de RESET la direccion de inicio goto inicio org 5 ; Direccin de inicio del programa del usuario inicio: CLRF PORTA ; Limpia el puerto A CLRF PORTB ; Limpia el puerto B BSF STATUS,RP0 ; Cambia al banco 1 BCF STATUS,RP1 ; Cambia al banco 1 MOVLW H'06' MOVWF ADCON1 ; Configura al puerto A y E como digitales MOVLW H'3F' MOVWF TRISA ; Configura el puerto A como entrada BCF STATUS,RP0 ; Regresa al banco 0 para configurar el puerto B MOVLW H'00' MOVWF TRISB ; Configura el puerto B como salida BCF STATUS,RP0 ; Regresa al banco 0 valorpa: BTFSS PORTA,0 ;Verifica que el bit 0 del puerto A sea 0 GOTO apagar ;NO, salta a apagar GOTO prender ;SI, salta a prender apagar: MOVLW H'00' ;W=0 MOVWF PORTB ; Configura al puerto B con el valor de W GOTO valorpa ; Salta a valorpa prender: MOVLW H'FF' ; W = FF MOVWF PORTB ; Configura al puerto B con el valor de W GOTO valorpa ; Salta a valorpa END ; Directiva de fin de programa

2.- Realizar un programa, el cul realice las siguientes acciones de control, para lo cul requiere trabajar un puerto de entrada y otro puerto de salida, usar los sugeridos en el ejercicio anterior; generar retardos de seg., en las secuencias que lo requieran . processor 16f877 ;version del procesador include<p16f877.inc> ;libreria de la versin contador equ h'20' valor1 equ h'21' valor2 equ h'22'

valor3 equ h'23' cte1 equ 20h cte2 equ 50h cte3 equ 60h org 0H ; Carga el vector de RESET la direccion de inicio goto inicio org 06H ; Direccin de inicio del programa del usuario inicio: CLRF PORTA ; Limpia el puerto A CLRF PORTB ; Limpia el puerto B BSF STATUS,RP0 ; Cambia al banco 1 BCF STATUS,RP1 ; Cambia al banco 1 MOVLW H'06' MOVWF ADCON1 ; Configura al puerto A y E como digitales MOVLW H'3F' MOVWF TRISA ; Configura el puerto A como entrada MOVLW H'00' MOVWF TRISB ; Configura el puerto B como salida BCF STATUS,RP0 ; Regresa al banco 0 entrada CLRF PORTB ; Limpia el puerto B btfss PORTA,0 ;Es 1 el bit 0 de PORTA? goto ciclo024 ;Es 0,2 o 4 goto ciclo135 ;Es 1,3 o 5 ciclo024 btfss PORTA,1 ;Es 1 el bit 1 de PORTA? goto ciclo04 ;Es el 0 o 4 goto ciclo2 ;Es el 2 ciclo04 btfss PORTA,2 ;Es 1 el bit 2 de PORTA? goto ciclo0 ;Es el 0 goto ciclo4 ;Es el 4 ciclo135 btfss PORTA,1 ;Es 1 el bit 1 de PORTA? goto ciclo15 ;Es el 1 o 5 goto ciclo3 ;Es el 3 ciclo15 btfss PORTA,2 ;Es 1 el bit 2 de PORTA? goto ciclo1 ;Es el 1 goto ciclo5 ;Es el 5 ciclo0 ; Encontro 0 movlw h'00' movwf PORTB ;Movemos h00 a PORTB goto entrada ; Salta a entrada ciclo1 ; Encontro 1 movlw h'FF' movwf PORTB ;Movemos hFF a PORTB goto entrada ; Salta a entrada

ciclo2 movlw h'80' movwf PORTB recorreder rRf PORTB

; Encontro 2 ;Movemos h80 a PORTB

; Recorre el bit a la derecha con acarreo por lo que va guardando el ;numero anterior y hace la suma automaticamente call retardo ; Llama a retardo btfsS PORTB,0 ; Si el puerto aun no se llena repite el ciclo goto recorreder ; Salta a recorreder movlw H'80' ; W = 80 movwf PORTB ;Movemos h80 a PORTB call retardo ; Llama a retardo goto entrada ; Salta a entrada ciclo3 ; Encontro 3 movlw h'01' ; W = 01 movwf PORTB ;Movemos h01 a PORTB recorreizq rlf PORTB,1 ;Recorremos el bit y se guarda en W movlw PORTB ; Movemos lo de W a PORTB call retardo ; Llama a retardo btfss PORTB,7 ;El bit 7 de PORTB es 1? goto recorreizq ;No, Sigue recorriendo el bit a la izq movlw H'01' h'01' ; W = 01 movwf PORTB ;Movemos h01 a PORTB call retardo ; Llama a retardo goto entrada ; Salta a entrada ciclo4 ; Encontro 4 movlw h'80' h'01' ; W = 80,01 movwf PORTB ;Movemos h80 h01 a PORTB recorreD rrf PORTB,1 ;Recorremos el bit y se guarda en W movlw PORTB ; Movemos lo de W a PORTB call retardo ; Llama a retardo btfss PORTB,0 ;El bit 0 de PORTB es 1? goto recorreD ;No, Sigue recorriendo el bit a la der goto recorreI ;Si, recorre hacia la izquierda recorreI rlf PORTB,1 ;Recorremos el bit y se guarda en W movlw PORTB ; Movemos lo de W a PORTB call retardo ; Llama a retardo btfss PORTB,7 ;El bit 7 de PORTB es 1? goto recorreI ;No, Sigue recorriendo el bit a la izq goto entrada ;SI, Salta a entrada ciclo5 ; Encontro 5 movlw h'00' ;Apaga todos los bits movwf PORTB ;Movemos h00 a PORTB call retardo ; Llama a retardo movlw h'FF' ;Enciende todos los bits

movwf PORTB ;Movemos hFF a PORTB call retardo ; Llama a retardo movlw h'00' ;Apaga todos los bits movwf PORTB ;Movemos h00 a PORTB call retardo ; Llama a retardo movlw h'FF' ;Enciende todos los bits movwf PORTB ;Movemos hFF a PORTB call retardo ; Llama a retardo goto entrada ; Salta a entrada retardo movlw cte1 ; W = cte1 movwf valor1 ; valor1 = W tres movlw cte2 ; W = cte2 movwf valor2 ; valor2 = W dos movlw cte3 ; W = cte3 movwf valor3 ; valor3 = W uno decfsz valor3 ; Decrementa el valor y verifica que no ha llegado a cero goto uno ; Salta a uno decfsz valor2 ; Decrementa el valor y verifica que no ha llegado a cero goto dos ; Salta a dos decfsz valor1 ; Decrementa el valor y verifica que no ha llegado a cero goto tres ; Salta a tres return ; Regresa a la rutina END ; Directiva de fin de programa

Conclusiones: En esta prctica se aprendi a leer datos desde los puertos paralelos para llevar a cabo funciones de control y desplegarlas en estos mismos puertos configurndolos como de entrada o salida segn su conveniencia. Tambin se aprendi a utilizar mens de seleccin y codificar diferentes opciones en el pic.

Anda mungkin juga menyukai