Que tal intimdq,
No es para nada complicado cambiar el codigo del PIC16F84 hacia un PIC16F627A o PIC16F628A.
No se que lenguaje estes usando, pero si es ensamblador solamente tienes que agregar un par de instrucciones al inicio del codigo y todo lo demas queda exactamente igual.
Hechame un grito si necesitas ayuda.
Elreypic.
Estimado gracias por su respuesta, el codigo es el siguiente
; ***** 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