Autor Tema: Reemplazar 16F84A-10 por 16F84A-4  (Leído 4951 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado intimdq

  • PIC10
  • *
  • Mensajes: 15
Reemplazar 16F84A-10 por 16F84A-4
« en: 20 de Junio de 2014, 11:07:51 »
Estimados, necesitaría realizar una consulta, es posible reemplazar el 16F84A-10 (10Mhz) por el 16F84A-4 (4Mhz) si el oscilador es externo de 10Mhz ? Digamos si en el diseño utilizo un cristal de 10 Mhz. Gracias por tiempo.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #1 en: 20 de Junio de 2014, 11:19:05 »
Que tal intimdq:

No es posible hacer eso, ya que el microcontrolador no trabajara adecuadamente.
Yo te recomiendo migrar a un microcontrolador mas actual como el PIC16F627A o 628A.

Saludos.

Elreypic.

Desconectado intimdq

  • PIC10
  • *
  • Mensajes: 15
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #2 en: 20 de Junio de 2014, 11:36:33 »
Que tal intimdq:

No es posible hacer eso, ya que el microcontrolador no trabajara adecuadamente.
Yo te recomiendo migrar a un microcontrolador mas actual como el PIC16F627A o 628A.

Saludos.

Elreypic.

Estimado gracias por tu respuesta, tienes razón en la utilización de un PIC mas actual, pero el problema es que es un programa ya echo y debería codificarlo, veré si puedo hacerlo.... Gracias...

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #3 en: 21 de Junio de 2014, 00:25:23 »
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.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #4 en: 21 de Junio de 2014, 04:06:16 »
Puede que funcione correctamente aún siendo 04. El tema es que de fábrica no lo garantizan.

Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado intimdq

  • PIC10
  • *
  • Mensajes: 15
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #5 en: 23 de Junio de 2014, 13:30:24 »
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

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #6 en: 23 de Junio de 2014, 15:41:45 »
Que tal intimdq:

El siguiente es el codigo modificado para un PIC16F627A, solo ten en cuenta la configuracion de los fuses al momento de grabar el codigo en el micro.

Saludos.

Elreypic.

Código: [Seleccionar]
; ***** GENERADOR DE PATRONES PARA VIDEO *****
; VERSION 2.03
; GEN203.ASM
; (C) M. MAGGI - 30/08/1997 Version original 2.01
; Version 2.03 por Miguel Angel Meza Campos
; Esta version sera migrada a un microcontrolador PIC16F627A
list p=16f627A
include "p16f627A.inc" ;Se incluye el archivo que contiene todas las definiciones
;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"

;El bloque tiene que ser redefinido a partir de la dirección 0x20
CBLOCK 0X20 ;VARIABLES
DURHOR,CANTHB1,CANTHB2,BLKLIN,CANTPRE,DUREQU,CANTVER,DURVER,CANTPOS
TIEMPO,FIELD,CARRY
WHITE,YELLOW,CYAN,GREEN,MAGEN,RED,BLUE,BLACK,CANTLIN
ENDC

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

MOVLW 0X07 ;Apaga los comparadores y configura puerto A como digital
MOVWF CMCON

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

Desconectado intimdq

  • PIC10
  • *
  • Mensajes: 15
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #7 en: 23 de Junio de 2014, 22:14:34 »
Que tal intimdq:

El siguiente es el codigo modificado para un PIC16F627A, solo ten en cuenta la configuracion de los fuses al momento de grabar el codigo en el micro.

Saludos.

Elreypic.

Código: [Seleccionar]
; ***** GENERADOR DE PATRONES PARA VIDEO *****
; VERSION 2.03
; GEN203.ASM
; (C) M. MAGGI - 30/08/1997 Version original 2.01
; Version 2.03 por Miguel Angel Meza Campos
; Esta version sera migrada a un microcontrolador PIC16F627A
list p=16f627A
include "p16f627A.inc" ;Se incluye el archivo que contiene todas las definiciones
;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"

;El bloque tiene que ser redefinido a partir de la dirección 0x20
CBLOCK 0X20 ;VARIABLES
DURHOR,CANTHB1,CANTHB2,BLKLIN,CANTPRE,DUREQU,CANTVER,DURVER,CANTPOS
TIEMPO,FIELD,CARRY
WHITE,YELLOW,CYAN,GREEN,MAGEN,RED,BLUE,BLACK,CANTLIN
ENDC

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

MOVLW 0X07 ;Apaga los comparadores y configura puerto A como digital
MOVWF CMCON

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


Estimado gracias por su colaboración, he grabado el pic pero no ha funcionado, podría ser que le falte algún detalle? Gracias amigo....
« Última modificación: 23 de Junio de 2014, 22:18:34 por intimdq »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #8 en: 26 de Junio de 2014, 12:37:26 »
Que tal intimdq,

El codigo funciona bien. Tu problema es que no estas configurando los fuses adecuadamente. Al ver la imagen que has colocado, has dejado los fuses sin configurar en su valor por default.
Tienes que cambiar el valor de los fuses adecuadamente para que el micro pueda funcionar.
Tienes que configurarlo de forma que el oscilador de operacion sea HS (actualemtne le estas diciendo que estas usando un oscilador RC, lo que no es correcto ya que tu deseas que el micro opere en 10 MHz).
Tambien le has dicho que deje activo el WDT y eso provoca que cada cierto tiempo el WDT resete el micro automaticamente. Tienes que desactivar el WDT.
Tambien le has dicho que vas a usar bajo voltaje de programacion eso tambien tienes que deshabilitarlo.

Bueno como te he comentado el problema son los fuses, es decir el registro de configuracion. Hay que configurarlo adecuadamente.

Saludos.

Elreypic.

Desconectado intimdq

  • PIC10
  • *
  • Mensajes: 15
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #9 en: 29 de Junio de 2014, 01:52:10 »
Que tal intimdq,

El codigo funciona bien. Tu problema es que no estas configurando los fuses adecuadamente. Al ver la imagen que has colocado, has dejado los fuses sin configurar en su valor por default.
Tienes que cambiar el valor de los fuses adecuadamente para que el micro pueda funcionar.
Tienes que configurarlo de forma que el oscilador de operacion sea HS (actualemtne le estas diciendo que estas usando un oscilador RC, lo que no es correcto ya que tu deseas que el micro opere en 10 MHz).
Tambien le has dicho que deje activo el WDT y eso provoca que cada cierto tiempo el WDT resete el micro automaticamente. Tienes que desactivar el WDT.
Tambien le has dicho que vas a usar bajo voltaje de programacion eso tambien tienes que deshabilitarlo.

Bueno como te he comentado el problema son los fuses, es decir el registro de configuracion. Hay que configurarlo adecuadamente.

Saludos.

Elreypic.


Estimado, gracias por su explicación, he modificado los fuses como me indico, pero me sigue sin funcionar :( . Seguire intentando a ver cual es el problema.....



Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #10 en: 30 de Junio de 2014, 12:18:32 »
Que tal intimdq;

Veo que no tienes experiencia con los microcontroladores PIC. Y sigues colocando mal los valores de los fuses.
Así que he realizado una pequeña modificación en el código ASM para que cuando generes el .HEX automaticamente tambien se generen los valores de los fuses, asi cuando cargues el .HEX en el pickit2 los fuses se coloquen en los valores correctos.

Código: [Seleccionar]
; ***** GENERADOR DE PATRONES PARA VIDEO *****
; VERSION 2.04
; GEN203.ASM
; (C) M. MAGGI - 30/08/1997 Version original 2.01
; Version 2.03 por Miguel Angel Meza Campos
; Esta version sera migrada a un microcontrolador PIC16F627A
; Version 2.04 por Miguel Angel Meza Campos
; Esta version contiene los valores correctos de los fuses
; de forma que estos se cargan automaticamente en el pickit2
list p=16f627A
include "p16f627A.inc" ;Se incluye el archivo que contiene todas las definiciones

;******************************************************************************
; Setting the fuses
;
; Flash program memory code protected: CP = ON
; Data EE Memory code protection off: CPD = OFF
; Low-voltage Disable: LVP = OFF
; Brown-out detect enbale: BOREN = ON
; Master clear Reset enable: MCLRE = ON
; Watchdog timer disable: WDT = OFF
; Power-up Timer enable: PWRTE = ON
; HS oscillator: High-speed crystal/resonator
;******************************************************************************
__CONFIG _CP_ON & _CPD_OFF & _LVP_OFF & _BOREN_ON & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _HS_OSC
 
;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"

;El bloque tiene que ser redefinido a partir de la dirección 0x20
CBLOCK 0X20 ;VARIABLES
DURHOR,CANTHB1,CANTHB2,BLKLIN,CANTPRE,DUREQU,CANTVER,DURVER,CANTPOS
TIEMPO,FIELD,CARRY
WHITE,YELLOW,CYAN,GREEN,MAGEN,RED,BLUE,BLACK,CANTLIN
ENDC

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

MOVLW 0X07 ;Apaga los comparadores y configura puerto A como digital
MOVWF CMCON

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

Saludos,

Elreypic.

Desconectado intimdq

  • PIC10
  • *
  • Mensajes: 15
Re: Reemplazar 16F84A-10 por 16F84A-4
« Respuesta #11 en: 01 de Julio de 2014, 21:28:21 »
Que tal intimdq;

Veo que no tienes experiencia con los microcontroladores PIC. Y sigues colocando mal los valores de los fuses.
Así que he realizado una pequeña modificación en el código ASM para que cuando generes el .HEX automaticamente tambien se generen los valores de los fuses, asi cuando cargues el .HEX en el pickit2 los fuses se coloquen en los valores correctos.

Código: [Seleccionar]
; ***** GENERADOR DE PATRONES PARA VIDEO *****
; VERSION 2.04
; GEN203.ASM
; (C) M. MAGGI - 30/08/1997 Version original 2.01
; Version 2.03 por Miguel Angel Meza Campos
; Esta version sera migrada a un microcontrolador PIC16F627A
; Version 2.04 por Miguel Angel Meza Campos
; Esta version contiene los valores correctos de los fuses
; de forma que estos se cargan automaticamente en el pickit2
list p=16f627A
include "p16f627A.inc" ;Se incluye el archivo que contiene todas las definiciones

;******************************************************************************
; Setting the fuses
;
; Flash program memory code protected: CP = ON
; Data EE Memory code protection off: CPD = OFF
; Low-voltage Disable: LVP = OFF
; Brown-out detect enbale: BOREN = ON
; Master clear Reset enable: MCLRE = ON
; Watchdog timer disable: WDT = OFF
; Power-up Timer enable: PWRTE = ON
; HS oscillator: High-speed crystal/resonator
;******************************************************************************
__CONFIG _CP_ON & _CPD_OFF & _LVP_OFF & _BOREN_ON & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _HS_OSC
 
;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"

;El bloque tiene que ser redefinido a partir de la dirección 0x20
CBLOCK 0X20 ;VARIABLES
DURHOR,CANTHB1,CANTHB2,BLKLIN,CANTPRE,DUREQU,CANTVER,DURVER,CANTPOS
TIEMPO,FIELD,CARRY
WHITE,YELLOW,CYAN,GREEN,MAGEN,RED,BLUE,BLACK,CANTLIN
ENDC

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

MOVLW 0X07 ;Apaga los comparadores y configura puerto A como digital
MOVWF CMCON

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

Saludos,

Elreypic.

Estimado elreypic2, tengo muy poca experiencia en este tema, he programado muy poco con MikroBasic pro y simulo en ISIS pero no recuerdo esta configuración... De poder y tener tiempo, en que parte del código "original" se basa para sacar estos parámetros? Anexo configuración en Pickit2. Gracias por su dedicación...!!!
PD: Generare el Hex y realizare la prueba....

bit 13 CP: Flash Program Memory Code Protection bit
1= Code protection off
0= All program memory code-protected

bit 12 Unimplemented: Read as ‘1’

bit 11 DEBUG: In-Circuit Debugger Mode bit
1= In-Circuit Debugger disabled, RB6 and RB7 are general purpose I/O pins
0= In-Circuit Debugger enabled, RB6 and RB7 are dedicated to the debugger

bit 10-9
WRT1:WRT0 Flash Program Memory Write Enable bits
11= Write protection off; all program memory may be written to by EECON control
10= 0000h to 00FFh write-protected; 0100h to 0FFFh may be written to by EECON control
01= 0000h to 03FFh write-protected; 0400h to 0FFFh may be written to by EECON control
00= 0000h to 07FFh write-protected; 0800h to 0FFFh may be written to by EECON control

bit 8
CPD:Data EEPROM Memory Code Protection bit
1= Data EEPROM code protection off
0= Data EEPROM code-protected

bit 7
LVP: Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
1= RB3/PGM pin has PGM function; low-voltage programming enabled
0= RB3 is digital I/O, HV on MCLR must be used for programming

bit 6
BOREN: Brown-out Reset Enable bit
1= BOR enabled
0= BOR disabled

bit 5-4
Unimplemented:Read as ‘1’

bit 3
PWRTEN: Power-up Timer Enable bit
1= PWRT disabled
0= PWRT enabled

bit 2
WDTEN: Watchdog Timer Enable bit
1= WDT enabled
0= WDT disabled

bit 1-0
FOSC1:FOSC0: Oscillator Selection bits
11= RC oscillator
10= HS oscillator
01= XT oscillator
00= LP oscillatorOSC


 

anything