; ***** GENERADOR DE PATRONES PARA VIDEO ***** ; VERSION 2.01 ; GEN201.ASM ; (C) M. MAGGI - 30/08/1997 list p=16f84 ;DEFINICION DE PUERTOS: ;PORTB(0): SYNC ;PORTB(2): AZUL ;PORTB(3): ROJO ;PORTB(4): VERDE ;NO USAR EL BIT 1 DEL PORTB ;PARA LOS PATRONES DE RASTER Y BARRAS EL VIDEO ES ENTRELAZADO ;LOS PUNTOS Y EL CROSSHATCH SE HACEN CON VIDEO NO ENTRELAZADO PARA EVITAR EL ;"FLICKER" CBLOCK 0X0C ;VARIABLES DURHOR,CANTHB1,CANTHB2,BLKLIN,CANTPRE,DUREQU,CANTVER,DURVER,CANTPOS TIEMPO,FIELD,CARRY WHITE,YELLOW,CYAN,GREEN,MAGEN,RED,BLUE,BLACK,CANTLIN ENDC PORTA EQU 5 TRISA EQU 85H PORTB EQU 6 TRISB EQU 86H STATUS EQU 3 RP0 EQU 5 BLANCO EQU B'00011101' AMARIL EQU B'00011001' CYANO EQU B'00010101' VERDE EQU B'00010001' MAGENT EQU B'00001101' ROJO EQU B'00001001' AZUL EQU B'00000101' NEGRO EQU B'00000001' ; CLRF PORTA ;TODOS LOS BITS EN 0 CLRF PORTB ;TODOS LOS BITS EN 0 BSF STATUS,RP0 ;SELECCIONA BANCO DE REGISTROS 1 MOVLW B'11111111' MOVWF TRISA ;TODOS LOS BITS DEL PUERTO A COMO ENTRADAS CLRF TRISB^80H ;TODOS LOS BITS DEL PUERTO B COMO SALIDA BCF STATUS,RP0 ;SELECCIONA BANCO DE REGISTROS O ; MOVLW 0 MOVWF CARRY ;VARIABLE CONTROLAR EL ESTADO DEL CARRY RRF CARRY ;CARRY FLAG A "0" MOVLW B'10101010' MOVWF FIELD ;CONTROL DEL CAMPO LECTURA BTFSS PORTA,3 ;SE LEE EL TECLADO GOTO LECT1 ;SE USAN LOS BITS 2 Y 3 DEL PUERTO A BTFSC PORTA,2 ;FUNCION: BIT3 BIT2 GOTO INICIO3 ;BARRAS 0 0 GOTO INICIO2 ;RASTER 0 1 LECT1 BTFSC PORTA,2 ;CROSSHATCH 1 0 GOTO INICIO1 ;PUNTOS 1 1 ;***** BARRAS DE COLOR ***** INICIO RRF FIELD ;CARRY PASA AL BIT 7 DE FIELD, BIT 0 AL CARRY MOVLW D'3' ;LINEAS SIN VIDEO LUEGO DE LA POSECUALIZACION BTFSS FIELD,0 ;SI ES EL CAMPO 1 SE HACEN SOLO 3 LINEAS MOVLW D'4' ;4 LINEAS EN EL CAMPO 2 MOVWF BLKLIN MOVLW D'99' MOVWF CANTHB1 ;CANTIDAD DE LINEAS HORIZONTALES EN UN BLOQUE MOVLW D'3' MOVWF CANTHB2 ;CANTIDAD DE BLOQUES (3) MOVLW 5 MOVWF CANTPRE ;PULSOS DE PREECUALIZACION MOVLW 5 MOVWF CANTVER ;PULSOS DE SINCRONISMO VERTICAL MOVLW 5 MOVWF CANTPOS ;PULSOS DE POSECUALIZACION PREEQU BCF PORTB,0 ;DURACION: 2,6µS ABAJO MOVLW D'23' MOVWF DUREQU NOP NOP NOP BSF PORTB,0 LOOP1 DECFSZ DUREQU ;SE COMPLETAN LOS 32µS ARRIBA GOTO LOOP1 NOP NOP DECFSZ CANTPRE GOTO PREEQU NOP VERT BCF PORTB,0 MOVLW D'22' MOVWF DURVER LOOP2 DECFSZ DURVER GOTO LOOP2 BSF PORTB,0 ;DURACION: 4.8µS ARRIBA ("SERRATED PULSES") MOVLW 2 MOVWF TIEMPO TIME DECFSZ TIEMPO GOTO TIME NOP DECFSZ CANTVER GOTO VERT NOP POSEQU BCF PORTB,0 MOVLW D'23' MOVWF DUREQU NOP NOP NOP BSF PORTB,0 LOOP3 DECFSZ DUREQU GOTO LOOP3 NOP NOP DECFSZ CANTPOS GOTO POSEQU NOP ;SE EMPIEZAN A BARRER LAS LINEAS HORIZONTALES ;LA PRIMERA LINEA ES COMPLETA EN EL CAMPO 1, EN TANTO QUE ES SOLO MEDIA LINEA ;EN EL CAMPO 2, Y NO COMIENZA CON UN PULSO DE SINCRONISMO RLF PORTB ;1 O 1/2 LINEA H SEGUN EL CAMPO NOP ;SE PASA EL CARRY AL BIT 0 DEL PUERTO B NOP ;CAMPO 1: 1 LINEA Y PULSO DE SINC (CARRY=0) NOP ;CAMPO 2: 1/2 LINEA SIN PULSO DE SINC (CARRY=1) NOP NOP NOP NOP MOVLW D'21' ;TIEMPO PARA 1/2 H (80 CICLOS TOTAL) BTFSS PORTB,0 ;SI HAY H SYNC (CAMPO 1) SE AGREGA MAS TIEMPO ADDLW D'27' ;TIEMPO PARA 1 H (160 CICLOS TOTAL) MOVWF DURHOR BSF PORTB,0 BTFSS FIELD,0 GOTO NEXT ;SE PIERDE 1 CICLO MAS (SOLO 1/2 H) NEXT BCF PORTB,1 NOP LOOP DECFSZ DURHOR GOTO LOOP NOP ;SE HACEN 3 O 4 LINEAS EN BLANCO PARA CUMPLIR CON LAS 625 LINEAS DE LA NORMA N ;SI ES EL CAMPO 1 SE HACEN SOLO 3 LINEAS, YA QUE ANTES SE HIZO 1 DE MAS HORIZ BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA TIME3 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO TIME3 NOP NOP MOVLW D'48' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO LOOPH3 DECFSZ DURHOR GOTO LOOPH3 NOP DECFSZ BLKLIN GOTO HORIZ NOP ;SE HACEN 3 BLOQUES DE 99 LINEAS HORIZONTALES ;3*(99+1)=300 LINEAS HORIZ1 BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA TIME1 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO TIME1 NOP NOP MOVLW D'31' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP MOVLW 5 MOVWF WHITE MOVWF YELLOW MOVWF CYAN MOVWF GREEN MOVWF MAGEN MOVWF RED MOVWF BLUE MOVWF BLACK MOVLW BLANCO MOVWF PORTB WHITE1 DECFSZ WHITE GOTO WHITE1 MOVLW AMARIL MOVWF PORTB YELLO1 DECFSZ YELLOW GOTO YELLO1 MOVLW CYANO MOVWF PORTB CYAN1 DECFSZ CYAN GOTO CYAN1 MOVLW VERDE MOVWF PORTB GREEN1 DECFSZ GREEN GOTO GREEN1 MOVLW MAGENT MOVWF PORTB MAGEN1 DECFSZ MAGEN GOTO MAGEN1 MOVLW ROJO MOVWF PORTB RED1 DECFSZ RED GOTO RED1 MOVLW AZUL MOVWF PORTB BLUE1 DECFSZ BLUE GOTO BLUE1 MOVLW NEGRO MOVWF PORTB BLACK1 DECFSZ BLACK GOTO BLACK1 NOP NOP NOP NOP DECFSZ CANTHB1 GOTO HORIZ1 NOP HORIZ2 BCF PORTB,0 ;BIT 0 BAJO MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA TIME2 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO TIME2 MOVLW D'99' MOVWF CANTHB1 MOVLW D'31' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP MOVLW 5 MOVWF WHITE MOVWF YELLOW MOVWF CYAN MOVWF GREEN MOVWF MAGEN MOVWF RED MOVWF BLUE MOVWF BLACK MOVLW BLANCO MOVWF PORTB WHITE2 DECFSZ WHITE GOTO WHITE2 MOVLW AMARIL MOVWF PORTB YELLO2 DECFSZ YELLOW GOTO YELLO2 MOVLW CYANO MOVWF PORTB CYAN2 DECFSZ CYAN GOTO CYAN2 MOVLW VERDE MOVWF PORTB GREEN2 DECFSZ GREEN GOTO GREEN2 MOVLW MAGENT MOVWF PORTB MAGEN2 DECFSZ MAGEN GOTO MAGEN2 MOVLW ROJO MOVWF PORTB RED2 DECFSZ RED GOTO RED2 MOVLW AZUL MOVWF PORTB BLUE2 DECFSZ BLUE GOTO BLUE2 MOVLW NEGRO MOVWF PORTB BLACK2 DECFSZ BLACK GOTO BLACK2 NOP NOP NOP NOP DECFSZ CANTHB2 GOTO HORIZ1 NOP ;ESTA ULTIMA LINEA/MEDIA LINEA, LA 305, LA USO PARA CARGAR VARIABLES BCF PORTB,0 ;BIT 0 PASA A NIVEL BAJO NOP ;PIERDO TIEMPO PARA NOP ;HACER LOS 4,8µS MOVLW 0 ;NO USAR EL BIT 1 DEL PORTB, BIT 0 = SYNC BTFSC FIELD,0 MOVLW 1 MOVWF CARRY NOP MOVLW D'15' BTFSC FIELD,0 ADDLW D'24' MOVWF DURHOR BSF PORTB,0 ;BIT 0 PASA A NIVEL ALTO BTFSS FIELD,0 GOTO NEXT1 NEXT1 NOP NOP LOOPH5 DECFSZ DURHOR GOTO LOOPH5 RRF CARRY ;CARRY = 1 SI 1 H, CARRY = 0 SI 1/2 H BTFSC PORTA,2 GOTO LECTURA BTFSC PORTA,3 GOTO LECTURA NOP NOP NOP NOP NOP GOTO INICIO ;***** RASTER ***** INICIO1 RRF FIELD MOVLW D'3' BTFSS FIELD,0 MOVLW D'4' MOVWF BLKLIN MOVLW D'99' MOVWF CANTHB1 MOVLW D'3' MOVWF CANTHB2 MOVLW 5 MOVWF CANTPRE MOVLW 5 MOVWF CANTVER MOVLW 5 MOVWF CANTPOS APREEQU BCF PORTB,0 ;DURACION: 2,6µS ABAJO MOVLW D'23' MOVWF DUREQU NOP NOP NOP BSF PORTB,0 ALOOP1 DECFSZ DUREQU ;SE COMPLETAN LOS 32µS ARRIBA GOTO ALOOP1 NOP NOP DECFSZ CANTPRE GOTO APREEQU NOP AVERT BCF PORTB,0 MOVLW D'22' MOVWF DURVER ALOOP2 DECFSZ DURVER GOTO ALOOP2 BSF PORTB,0 ;DURACION: 4.8µS ARRIBA ("SERRATED PULSES") MOVLW 2 MOVWF TIEMPO ATIME DECFSZ TIEMPO GOTO ATIME NOP DECFSZ CANTVER GOTO AVERT NOP APOSEQU BCF PORTB,0 MOVLW D'23' MOVWF DUREQU NOP NOP NOP BSF PORTB,0 ALOOP3 DECFSZ DUREQU GOTO ALOOP3 NOP NOP DECFSZ CANTPOS GOTO APOSEQU NOP RLF PORTB ;1 O 1/2 LINEA H SEGUN EL CAMPO NOP NOP NOP NOP NOP NOP NOP MOVLW D'21' ;TIEMPO PARA 1/2 H (80 CICLOS TOTAL) BTFSS PORTB,0 ADDLW D'27' ;TIEMPO PARA 1 H (160 CICLOS TOTAL) MOVWF DURHOR BSF PORTB,0 BTFSS FIELD,0 GOTO ANEXT ;SE PIERDE 1 CICLO MAS (SOLO 1/2 H) ANEXT BCF PORTB,1 NOP ALOOP DECFSZ DURHOR GOTO ALOOP NOP AHORIZ BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA ATIME3 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO ATIME3 NOP NOP MOVLW D'48' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO ALOOPH3 DECFSZ DURHOR GOTO ALOOPH3 NOP DECFSZ BLKLIN GOTO AHORIZ NOP AHORIZ1 BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA ATIME1 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO ATIME1 NOP NOP MOVLW D'44' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW B'00011101' MOVWF PORTB ALOOPH4 DECFSZ DURHOR GOTO ALOOPH4 MOVLW B'00000001' MOVWF PORTB DECFSZ CANTHB1 GOTO AHORIZ1 NOP BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA ATIME2 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO ATIME2 MOVLW D'99' MOVWF CANTHB1 MOVLW D'44' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW B'00011101' MOVWF PORTB ALOOPH5 DECFSZ DURHOR GOTO ALOOPH5 MOVLW B'00000001' MOVWF PORTB DECFSZ CANTHB2 GOTO AHORIZ1 NOP ;ESTA ULTIMA LINEA/MEDIA LINEA, LA 305, LA USO PARA CARGAR VARIABLES BCF PORTB,0 ;BIT 0 PASA A NIVEL BAJO NOP ;PIERDO TIEMPO PARA NOP ;HACER LOS 4,8µS MOVLW 0 ;NO USAR EL BIT 1 DEL PORTB, BIT 0 = SYNC BTFSC FIELD,0 MOVLW 1 MOVWF CARRY NOP MOVLW D'15' BTFSC FIELD,0 ADDLW D'24' MOVWF DURHOR BSF PORTB,0 ;BIT 0 PASA A NIVEL ALTO BTFSS FIELD,0 GOTO ANEXT1 ANEXT1 NOP NOP ALOOPH6 DECFSZ DURHOR GOTO ALOOPH6 RRF CARRY ;CARRY = 1 SI 1 H, CARRY = 0 SI 1/2 H BTFSS PORTA,2 GOTO LECTURA BTFSC PORTA,3 GOTO LECTURA NOP NOP NOP NOP NOP GOTO INICIO1 ;***** CROSSHATCH ***** INICIO2 RRF FIELD NOP NOP MOVLW D'4' MOVWF BLKLIN MOVLW D'28' MOVWF CANTHB1 MOVLW D'10' MOVWF CANTHB2 MOVLW 4 MOVWF CANTPRE ;SOLO 4 PULSOS POR SER VIDEO NO ENTRELAZADO MOVLW 5 MOVWF CANTVER MOVLW 5 MOVWF CANTPOS BPREEQU BCF PORTB,0 ;DURACION: 2,6µS ABAJO MOVLW D'23' MOVWF DUREQU NOP NOP NOP BSF PORTB,0 BLOOP1 DECFSZ DUREQU ;SE COMPLETAN LOS 32µS ARRIBA GOTO BLOOP1 NOP NOP DECFSZ CANTPRE GOTO BPREEQU NOP BVERT BCF PORTB,0 MOVLW D'22' MOVWF DURVER BLOOP2 DECFSZ DURVER GOTO BLOOP2 BSF PORTB,0 ;DURACION: 4.8µS ARRIBA ("SERRATED PULSES") MOVLW 2 MOVWF TIEMPO BTIME DECFSZ TIEMPO GOTO BTIME NOP DECFSZ CANTVER GOTO BVERT NOP BPOSEQU BCF PORTB,0 MOVLW D'23' MOVWF DUREQU NOP NOP NOP BSF PORTB,0 BLOOP3 DECFSZ DUREQU GOTO BLOOP3 NOP NOP DECFSZ CANTPOS GOTO BPOSEQU NOP NOP ;1/2 LINEA H (NO ENTRELAZADO) NOP NOP NOP NOP NOP NOP NOP MOVLW D'21' ;TIEMPO PARA 1/2 H (80 CICLOS TOTAL) NOP NOP MOVWF DURHOR NOP NOP NOP NOP BCF PORTB,1 NOP BLOOP DECFSZ DURHOR GOTO BLOOP NOP BHORIZ BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA BTIME3 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO BTIME3 NOP NOP MOVLW D'48' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO BLOOPH3 DECFSZ DURHOR GOTO BLOOPH3 NOP DECFSZ BLKLIN GOTO BHORIZ NOP BHORIZ1 BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA BTIME1 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO BTIME1 NOP NOP MOVLW 9 MOVWF CANTLIN BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP NOP NOP NOP NOP NOP NOP BLOOPHA MOVLW B'00011100' ADDWF PORTB SUBWF PORTB NOP MOVLW 2 MOVWF DURHOR BLOOPH4 DECFSZ DURHOR GOTO BLOOPH4 DECFSZ CANTLIN GOTO BLOOPHA NOP MOVLW B'00011100' ADDWF PORTB SUBWF PORTB NOP NOP NOP NOP NOP NOP DECFSZ CANTHB1 GOTO BHORIZ1 NOP BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA BTIMEZ DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO BTIMEZ NOP NOP MOVLW D'44' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW B'00011101' MOVWF PORTB BLOOPHZ DECFSZ DURHOR GOTO BLOOPHZ MOVLW B'00000001' MOVWF PORTB NOP NOP NOP BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA BTIME2 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO BTIME2 MOVLW D'28' MOVWF CANTHB1 MOVLW D'44' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW B'00011101' MOVWF PORTB BLOOPH5 DECFSZ DURHOR GOTO BLOOPH5 MOVLW B'00000001' MOVWF PORTB DECFSZ CANTHB2 GOTO BHORIZ1 NOP ;ESTA ULTIMA MEDIA LINEA, LA 305, LA USO PARA CARGAR VARIABLES BCF PORTB,0 ;BIT 0 PASA A NIVEL BAJO NOP ;PIERDO TIEMPO PARA NOP ;HACER LOS 4,8µS MOVLW 0 ;NO USAR EL BIT 1 DEL PORTB, BIT 0 = SYNC BTFSC FIELD,0 MOVLW 1 MOVWF CARRY NOP MOVLW D'15' NOP NOP MOVWF DURHOR BSF PORTB,0 ;BIT 0 PASA A NIVEL ALTO NOP NOP NOP NOP NOP BLOOPH6 DECFSZ DURHOR GOTO BLOOPH6 RRF CARRY ;CARRY = 1 SI 1 H, CARRY = 0 SI 1/2 H BTFSC PORTA,2 GOTO LECTURA BTFSS PORTA,3 GOTO LECTURA NOP NOP NOP NOP NOP GOTO INICIO2 ;***** PUNTOS ***** INICIO3 RRF FIELD NOP NOP MOVLW D'4' MOVWF BLKLIN MOVLW D'28' MOVWF CANTHB1 MOVLW D'10' MOVWF CANTHB2 MOVLW 4 MOVWF CANTPRE MOVLW 5 MOVWF CANTVER MOVLW 5 MOVWF CANTPOS CPREEQU BCF PORTB,0 ;DURACION: 2,6µS ABAJO MOVLW D'23' MOVWF DUREQU NOP NOP NOP BSF PORTB,0 CLOOP1 DECFSZ DUREQU ;SE COMPLETAN LOS 32µS ARRIBA GOTO CLOOP1 NOP NOP DECFSZ CANTPRE GOTO CPREEQU NOP CVERT BCF PORTB,0 MOVLW D'22' MOVWF DURVER CLOOP2 DECFSZ DURVER GOTO CLOOP2 BSF PORTB,0 ;DURACION: 4.8µS ARRIBA ("SERRATED PULSES") MOVLW 2 MOVWF TIEMPO CTIME DECFSZ TIEMPO GOTO CTIME NOP DECFSZ CANTVER GOTO CVERT NOP CPOSEQU BCF PORTB,0 MOVLW D'23' MOVWF DUREQU NOP NOP NOP BSF PORTB,0 CLOOP3 DECFSZ DUREQU GOTO CLOOP3 NOP NOP DECFSZ CANTPOS GOTO CPOSEQU NOP NOP ;1/2 LINEA H NOP NOP NOP NOP NOP NOP NOP MOVLW D'21' ;TIEMPO PARA 1/2 H (80 CICLOS TOTAL) NOP NOP MOVWF DURHOR NOP NOP NOP NOP BCF PORTB,1 NOP CLOOP DECFSZ DURHOR GOTO CLOOP NOP CHORIZ BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA CTIME3 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO CTIME3 NOP NOP MOVLW D'48' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO CLOOPH3 DECFSZ DURHOR GOTO CLOOPH3 NOP DECFSZ BLKLIN GOTO CHORIZ NOP CHORIZ1 BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA CTIME1 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO CTIME1 NOP NOP MOVLW D'48' MOVWF DURHOR BSF PORTB,0 ;BIT 0 ALTO CLOOPHZ DECFSZ DURHOR GOTO CLOOPHZ NOP DECFSZ CANTHB1 GOTO CHORIZ1 NOP BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA CTIMEZ DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO CTIMEZ NOP NOP MOVLW 9 MOVWF CANTLIN BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP NOP NOP NOP NOP NOP NOP CLOOPHA MOVLW B'00011100' ADDWF PORTB SUBWF PORTB NOP MOVLW 2 MOVWF DURHOR CLOOPH4 DECFSZ DURHOR GOTO CLOOPH4 DECFSZ CANTLIN GOTO CLOOPHA NOP MOVLW B'00011100' ADDWF PORTB SUBWF PORTB NOP NOP NOP NOP NOP NOP NOP NOP NOP BCF PORTB,0 MOVLW 2 MOVWF TIEMPO ;PIERDO TIEMPO PARA CTIME2 DECFSZ TIEMPO ;HACER LOS 4,8µS GOTO CTIME2 MOVLW D'28' MOVWF CANTHB1 MOVLW 9 MOVWF CANTLIN BSF PORTB,0 ;BIT 0 ALTO NOP NOP NOP NOP NOP NOP NOP NOP NOP CLOOPHB MOVLW B'00011100' ADDWF PORTB SUBWF PORTB NOP MOVLW 2 MOVWF DURHOR CLOOPH5 DECFSZ DURHOR GOTO CLOOPH5 DECFSZ CANTLIN GOTO CLOOPHB NOP MOVLW B'00011100' ADDWF PORTB SUBWF PORTB NOP NOP NOP NOP NOP NOP DECFSZ CANTHB2 GOTO CHORIZ1 NOP ;ESTA ULTIMA MEDIA LINEA, LA 305, LA USO PARA CARGAR VARIABLES BCF PORTB,0 ;BIT 0 PASA A NIVEL BAJO NOP ;PIERDO TIEMPO PARA NOP ;HACER LOS 4,8µS MOVLW 0 ;NO USAR EL BIT 1 DEL PORTB, BIT 0 = SYNC BTFSC FIELD,0 MOVLW 1 MOVWF CARRY NOP MOVLW D'15' NOP NOP MOVWF DURHOR BSF PORTB,0 ;BIT 0 PASA A NIVEL ALTO NOP NOP NOP NOP NOP CLOOPH6 DECFSZ DURHOR GOTO CLOOPH6 RRF CARRY ;CARRY = 1 SI 1 H, CARRY = 0 SI 1/2 H BTFSS PORTA,2 GOTO LECTURA BTFSS PORTA,3 GOTO LECTURA NOP NOP NOP NOP NOP GOTO INICIO3 END