Vous êtes sur la page 1sur 4

LIST

P=16F877 INCLUDE<P16F877.INC>

__CONFIG _WDT_OFF&_PWRTE_ON&_XT_OSC&_LVP_OFF&_CP_OFF ; Configuracin para CBLOCK PDEL0 PDEL1 ENDC ORG 0X20

0X00

INICIO CLRF PORTB ;pone a los 8bit del puerto b en (00000000) osea limpia cualquier valor BSF STATUS,RP0 ; pone rp0=1 del registro estatus para movernos de banco---- nos movemos al banc o 1 CLRF TRISB ;pone a los 8bit del trisb en 0----- si es 0=pone las patas del puerto como sali da ---- 1=pone las patas del puerto como entradas SALIDA MOVLW 0X06 ;mueve a w=06h es decir 0000 0110 MOVWF ADCON1 ; al registro adcon1 configuramos los bit con lo que tiene el registro w en este caso W=0000 0110 y asi segun la configuracion ;del adcon1 pone a re2,re1,re0,ra5,ra3,ra2,ra1,ra0, en entradas digitales es dec ir digo que tipo de entrada es MOVLW B'00111111' ;mueve a w=0000 0111 MOVWF TRISA ;se mueve lo que esta en w al trisa es decir trisa= 0000 0111 con esta entrada d e bit ponemos a rp0,rp1,rp2 como entradas BCF STATUS,RP0 ; me muevo al banco 0 COMIENZO MOVF PORTA,W esta en el puerto a lo muevo a w es decir como 0000 0EEE las ; lo que

;E=la entrada que estara en rp0,rp1,rp2 ya que se configuraron como entradas y e sas son las unica que tendran variaciones ANDLW B'00000111' ;operacion and de w con 0000 0111 y el resultado lo guarda en w EFECTOS ADDWF PCL,F ;suma w+ pcl y el resultado lo guarda en pcl ----- nota pcl contador de instruciones eje cutadas o lienas de comando GOTO EFECTO_1 GOTO EFECTO_2 GOTO EFECTO_3

EFECTO_1

MOVLW MOVWF CALL CALL

b'00000000' PORTB RETARDO_400MS RETARDO_400MS

MOVLW MOVWF CALL CALL MOVLW MOVWF CALL CALL CLRF MOVLW MOVWF CALL RETARDO_400MS CLRF MOVLW MOVWF CALL RETARDO_400MS CLRF MOVLW MOVWF CALL CALL CLRF MOVLW MOVWF CALL CALL CLRF MOVLW MOVWF CALL CALL CLRF MOVLW MOVWF CALL CALL CLRF GOTO GOTO

B'00000001' PORTB RETARDO_400MS RETARDO_400MS B'00000011' PORTB RETARDO_400MS RETARDO_400MS PORTB B'00000111' PORTB RETARDO_400MS PORTB B'00001111' PORTB RETARDO_400MS PORTB B'00011111' PORTB RETARDO_400MS RETARDO_400MS PORTB B'00111111' PORTB RETARDO_400MS RETARDO_400MS PORTB B'01111111' PORTB RETARDO_400MS RETARDO_400MS PORTB B'11111111' PORTB RETARDO_400MS RETARDO_400MS PORTB EFECTO_1 COMIENZO

CALL

CALL

; ; ;

EFECTO_2

MOVLW MOVWF CALL CALL

b'00000000' PORTB RETARDO_400MS RETARDO_400MS

MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVF XORLW BTFSC GOTO ;GOTO EFECTO_4 MOVLW MOVWF CALL CLRF CALL MOVF XORLW BTFSC GOTO GOTO

B'10000000' PORTB RETARDO_400MS PORTB RETARDO_400MS B'11000000' PORTB RETARDO_400MS PORTB RETARDO_400MS B'11100000' PORTB RETARDO_400MS PORTB RETARDO_400MS B'11110000' PORTB RETARDO_400MS PORTB RETARDO_400MS B'11111000' PORTB RETARDO_400MS PORTB RETARDO_400MS B'11111100' PORTB RETARDO_400MS PORTB RETARDO_400MS B'11111110' PORTB RETARDO_400MS PORTB RETARDO_400MS B'11111111' PORTB RETARDO_400MS PORTB RETARDO_400MS PORTA,W 0X01 STATUS,Z EFECTO_2 COMIENZO B'11111111' PORTB RETARDO_400MS PORTB RETARDO_400MS PORTA,W 0X03 STATUS,Z EFECTO_4 COMIENZO

RETARDO_400MS MOVLW .100 ;MUEVE A W = .147 ESTA EXPRESADO EN DECIMAL PERO LO CARGA EN SU EXPRESION BINARIA ES DECIR W=10010011 MOVWF PDEL0 ; MUEVE LO QUE E STA EN W A PDEL0 PLOOP1 MOVLW .150 ;MUEVE A W = .247 IGUALM ENTE ESTA EN DECIMAL PERO LO CARGA EN SU REPRESENTACION BINARIA W=11110111 MOVWF PDEL1 ; MUEVE W PDEL1 PLOOP2 CLRWDT ;BORRA EL TIMER DEL PERRO GUARDIAN PDELL1 GOTO PDELL2 PDELL2 GOTO PDELL3 PDELL3 GOTO PDELL4 PDELL4 CLRWDT ;BORRA EL TIMER DEL PERRO GUARDIAN DECFSZ PDEL1,1 ;DECREMENTA PDEL 1 Y EL RESULTADO SE ALMACENA EN PDEL1 Y SI ES 0 SALTA A LA SIGUIENTE INSTRUCION (DOS CICLOS) GOTO PLOOP2 DECFSZ PDEL0,1 ;DECREMENTA PDEL 0 Y EL RESULTADO SE ALMACENA EN PDEL0 Y SI ES 0 SALTA A LA SIGUIENTE INSTRUCION (DOS CICLOS) GOTO PLOOP1 PDELL5 GOTO PDELL6 PDELL6 GOTO PDELL7 PDELL7 GOTO PDELL8 PDELL8 GOTO PDELL9 PDELL9 RETURN END

Vous aimerez peut-être aussi