Está en la página 1de 4

LIST P=16F877 ;Declaracion del PIC a utilizar INCLUDE <P16F877.

INC> as pertinentes del PIC a utilizar

;Libreri

__CONFIG _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC ;Palabras de configuracion para el PIC16F877 CBLOCK 0X20 ;Direccion de RAM donde estan ubicadas mis variables a usar DATO ;Registro donde se guardara el dato introducido ALTO ;Registro donde se guarda el nibel alto del Dato introducido BAJO ;Registro donde se guarda el nibel bajo del Dato introducido ROT ;Registro que se decrementa a cero para saber hasta cuando se rota CONT1 ;Registro que guarda la cantidad de unos del nibel alto del dato CONT2 ;Registro que guarda la cantidad de unos del nibel bajo del dato R_ContC ;Registro utilizado para decrementar el bucle interno de la rutina R_ContB ;Registro utilizado para decrementar el bucle interno de la rutina R_ContA ;Registro utilizado para decrementar el bucle interno de la rutina endC

el dato

de retardo de retardo de retardo

ORG 0 ;Direccion de inicio del programa INICIO: bsf STATUS,RP0 ;Sellecin del banco 1 para programar los puertos como entradas y/o salidas movlw b'11111111' ;Carga el registro W con FFH para programar un puerto como entrada movwf TRISC ;cargo el TRISC con FFH para programar el puerto C como entrada clrf TRISB ;Hace clear a TRISB para programarlo como salida bcf STATUS,RP0 ;Selecciona el banco 0 para proceder a cargar las lineas de codigo del programa principal PRINCIPAL: clrf PORTB los bits del Puerto B en cero movf PORTC,W ;Carga al registro W los datos introducidos por el puerto C movwf DATO ;Carga el dato de W al registro DATO ;Coloca

andwf b'11110000' ;Realiza la operacion AND al valor del DATO con b'11110000' para obtener el valo r del nibel alto movwf ALTO ;Guarda en el registro Alto el valor del nibel alto del DATO

movf DATO,W ;Procede de nuevo a guardar el valor del DATO a W andwf b'00001111' ;Realiza la operacion AND al valor del DATO con b'00001111' para obtener el valo r del nibel bajo movwf BAJO ;Guarda en el registro BAJO el valor del nibel bajo del DATO bcf STATUS,C ;Coloca en cero el valor de la bandera de Carry movlw 0x08 ;Carga W con el numero 08 movwf ROT ;Carga el registro ROT con el valor de W movf ALTO,W ;Carga en W el valor del nibel alto del DATO ROTA1: rlf W ;rota al registro W hacia la izquierda btfsc STATUS,C ;Verifica si la bandera de Carry esta en 0, si es asi salta la siguiente instruc cin incf CONT1,1 ;Si la bandera de carry se encuentra en uno incrementa el registro CONT1 para sa ber la cantidad de 1 del nibel alto del DATO decfsz ROT,1 ;Decrementa el registro ROT hasta que este sea 0, si es asi salta la siguiente i nstruccion goto ROTA1 ;Salto a la etiqueta ROTA1 en caso de que el registro ROT no sea 0 con el fin de seguir rotando W bcf STATUS,C ;Coloca en cero el valor de la bandera de Carry movlw 0x08 ;Carga W con el numero 08 movwf ROT ;Carga el registro ROT con el valor de W movf BAJO,W ;Carga en W el valor del nibel bajo del DATO ROTA2: rrf W ;rota al registro W hacia la derecha btfsc STATUS,C ;Verifica si la bandera de Carry esta en 0, si es asi salta la siguiente instruc cin incf CONT2,1 ;Si la bandera de carry se encuentra en uno incrementa el registro CONT1 para sa ber la cantidad de 1 del nibel bajo del DATO decfsz ROT,1 ;Decrementa el registro ROT hasta que este sea 0, si es asi salta la siguiente i nstruccion goto ROTA2 ;Salto a la etiqueta ROTA2 en caso de que el registro ROT no sea 0 con el fin de seguir rotando W bcf ;Coloca en cero el valor de la bcf ;Coloca en cero el valor de la movf ;Carga W con el valor de CONT1 subwf STATUS,C bandera de Carry STATUS,Z bandera de ZERO CONT1,W CONT2

;Mediante el complemento a 2 el valor de W se resta con el del registro CONT2 co n el fin de ver si es mayor o menor btfss STATUS,C ;Verifica el bit de la bandera CARRY, si es 0 quiere decir que los unos del nibe l alto son mayores o iguales al del nibel bajo goto CERO ;Salto a la etiqueta CERO para determinar si los unos del nibel alto son iguales a los del nibel bajo clrf PORTB ;Coloca en cero todo el puerto B call Retardo_10s ;Se llama a un retardo de 10 seg para que la muestra del dato sea apreciable goto PRINCIPAL ;salto a la etiqueta principal para tomar de nuevo una dato por el puerto C ya q ue los unos del nibel alto son menores a los del nibel bajo MAYOR: incf DATO,1 ;Si los unos del nibel alto son mayores a los del nibel bajo se incrementa en 1 el valor del DATO original movf DATO,W ;Se carga el resultado del incremento del DATO en W movwf PORTB ;Se procede a mostrar el valor del dato incrementado por el Puerto B call Retardo_10s ;SE LLAMA A UN RETARDO DE 10 seg para que la muestra del dato sea apreciable al ojo humano goto PRINCIPAL ;Salto a PRINCIPAL para pedir otro dato CERO: btfss STATUS,Z ;Se veri fica el bit de la bandera ZERO para saber si los unos del nibel alto son iguales a los del nibel bajo, si es asi se salta una instruccin goto MAYOR ;Si el bit de la bandera ZERO es 0 quiere decir que los unos del nibel alto son mayores a los del nibel bajo por lo que se salta a la etiqueta MAYOR para realiz ar las operaciones pertinentes movf DATO,W ;Se carga el valor del DATO original en W para sacerle el complemento a 2 sublw b'00000000' ;Se resta el valor b'00000000' con el complemento a 2 del DATO para que no se pi erda y guardarlo en W movwf PORTB ;Se muestra el resultado de la operacion por el puerto B call Retardo_10s ;Se llama a un retardo de 10 seg para que la muestra del dato sea apreciable goto PRINCIPAL ;Salto a PRINCIPAL para pedir otro dato

Retardo_10s ta 2 ciclos mquina. movlw d'100' el valor de "N". goto Retardo_1Decima Retardo_1Decima movwf R_ContC R1Decima_BucleExterno2 movlw d'100' es el valor de "M". movwf R_ContB

; La llamada "call" apor ; Aporta 1 ciclo mquina. Este es ; Aporta 2 ciclos mquina. ; Aporta 1 ciclo mquina. ; Aporta Nx1 ciclos mquina. Este ; Aporta Nx1 ciclos mquina.

R1Decima_BucleExterno movlw d'249' ; Aporta MxNx1 ciclos mquina. Est e es el valor de "K". movwf R_ContA ; Aporta MxNx1 ciclos mquina. R1Decima_BucleInterno nop ; Aporta KxMxNx1 ciclos mquina. decfsz R_ContA,F ; (K-1)xMxNx1 cm (si no salta) + MxNx2 cm (al saltar). goto R1Decima_BucleInterno ; Aporta (K-1)xMxNx2 ciclos mquina. decfsz R_ContB,F ; (M-1)xNx1 cm (cuando no salta) + Nx2 cm (al saltar). goto R1Decima_BucleExterno ; Aporta (M-1)xNx2 ciclos mquina. decfsz R_ContC,F ; (N-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto R1Decima_BucleExterno2 ; Aporta (N-1)x2 ciclos mquina. return ; El salto del retorno a porta 2 ciclos mquina. END a ;Fin del program

También podría gustarte

  • Manual de PIC
    Manual de PIC
    Documento114 páginas
    Manual de PIC
    Carlos Alberto Uribe Gómez
    Aún no hay calificaciones
  • Jimenez
    Jimenez
    Documento4 páginas
    Jimenez
    fumachu
    Aún no hay calificaciones
  • Digital Es
    Digital Es
    Documento4 páginas
    Digital Es
    fumachu
    Aún no hay calificaciones
  • New 2
    New 2
    Documento3 páginas
    New 2
    fumachu
    Aún no hay calificaciones
  • Mikrobasic Espa Ol
    Mikrobasic Espa Ol
    Documento64 páginas
    Mikrobasic Espa Ol
    Navi Morales
    Aún no hay calificaciones
  • Pract 5
    Pract 5
    Documento3 páginas
    Pract 5
    fumachu
    Aún no hay calificaciones
  • Pract 4
    Pract 4
    Documento3 páginas
    Pract 4
    fumachu
    Aún no hay calificaciones
  • Pract 2
    Pract 2
    Documento3 páginas
    Pract 2
    fumachu
    Aún no hay calificaciones
  • Pract 3
    Pract 3
    Documento2 páginas
    Pract 3
    fumachu
    Aún no hay calificaciones
  • Pract2 B
    Pract2 B
    Documento4 páginas
    Pract2 B
    fumachu
    Aún no hay calificaciones
  • Practica 1 Dig 2 A
    Practica 1 Dig 2 A
    Documento1 página
    Practica 1 Dig 2 A
    fumachu
    Aún no hay calificaciones
  • Practica 1 Dig 2 A
    Practica 1 Dig 2 A
    Documento1 página
    Practica 1 Dig 2 A
    fumachu
    Aún no hay calificaciones
  • Practica 1 Dig 2 A
    Practica 1 Dig 2 A
    Documento1 página
    Practica 1 Dig 2 A
    fumachu
    Aún no hay calificaciones
  • P2
    P2
    Documento12 páginas
    P2
    fumachu
    Aún no hay calificaciones
  • Graf
    Graf
    Documento5 páginas
    Graf
    fumachu
    Aún no hay calificaciones
  • Port 2
    Port 2
    Documento1 página
    Port 2
    fumachu
    Aún no hay calificaciones
  • Programacion z80
    Programacion z80
    Documento597 páginas
    Programacion z80
    fumachu
    100% (1)