Viendo el Tetris con PIC16F84A por todas partes, aquí y allá.
Con este trozo de código que encontré hace tiempo y lo tengo conservado para aprender hacer cosas en TV con señales de vídeos tanto PAL donde vivo, y NTSC que también se configura ahora en las TV €uropeas.
¿Alguien que tenga la TV NTSC estandar se su país, tiene la posibilidad de usar la configuración PAL como los €uropeos al NTSC? Esi si, la versión PAL la imagen se ve más nítida, sobre todo en los videojuegos PlayStation, etc... se nota mucho.
Código:
; Prueba de sincronización horizontal
; Este código crea líneas verticales
; en el centro se despliega una línea blanca, a las orillas
; dos líneas grises y todo lo demás aparece en negro.
; Se debe utilizar un cristal de 12MHz
; A RB0 se conecta una resistencia de 1K ohm
; A RB1 se conecta una resistencia de 470 ohm
; ---|
; |
; RB0|-/\/\/\--|
; | |
; RB1|-/\/\/\--|---* Salida de video
; |
; -- |
list p=16f88
include p16f88.inc
radix hex
__config _CONFIG1,_CP_OFF&_DEBUG_OFF&_WRT_PROTECT_OFF&_CPD_OFF&_LVP_OFF&_BODEN_OFF&_MCLR_OFF&_PWRTE_OFF&_WDT_OFF&_HS_OSC
cblock 0x20
delaycnt
hrzcnt
stuff
counter1
counter2
endc
COLOR_SYNC EQU 0x00
COLOR_BLACK EQU 0x01
COLOR_GRAY EQU 0X02
COLOR_WHITE EQU 0X03
VIDEO_PORT EQU PORTB
DELAY MACRO
LOCAL LABEL
movwf delaycnt
LABEL decfsz delaycnt,f
goto LABEL
ENDM
dnop MACRO
LOCAL label
label goto label+1
ENDM
org 0x00
goto INICIO
org 0x05
INICIO
bsf STATUS,RP0 ; Cambio al banco 1
clrf ANSEL ; Todos los pines digitales
clrf TRISB ; Puerto B como salida
bcf STATUS,RP0 ; Regreso al banco 0
clrf VIDEO_PORT ; Se limpia el puerto B
clrf TMR2
clrf T2CON
bsf STATUS,RP0
movlw 0xFF
movwf PR2
bcf STATUS,RP0
HORIZONTAL
bsf T2CON,TMR2ON
movlw COLOR_BLACK
; Front Porch
movwf VIDEO_PORT
movlw .1
DELAY
DNOP
movlw COLOR_SYNC
; 5us de sincronización
movwf VIDEO_PORT
movlw .4
DELAY
movlw COLOR_BLACK
; Back Porch por 5us
movwf VIDEO_PORT
movlw .4
DELAY
; 52us de video
movlw COLOR_GRAY
; 4us de gris
movwf VIDEO_PORT
movlw .3
DELAY
movlw COLOR_BLACK
; 20us de negro
movwf VIDEO_PORT
movlw .19
DELAY
movlw COLOR_WHITE
; 4us de blanco
movwf VIDEO_PORT
movlw .3
DELAY
movlw COLOR_BLACK
; 20us de negro
movwf VIDEO_PORT
movlw .19
DELAY
movlw COLOR_GRAY
;4us de gris
movwf VIDEO_PORT
movlw .3
DELAY
goto HORIZONTAL
end
Estoy pendiente de que me llegue por correos una DemoBoard y hacer cosas de estas con ella. En este caso da igual que PIC hacerlos, ya que me vienen estos:
1 x PIC12F508 de la gama baja y 8 patillas
1 x PIC16F88 de la gama media y 18 patillas
1 x PIC16F886 de la gama media y 28 patillas (viene de serie con USB-PIC'SCHOOL, insertado en su zócalo)
1 x PIC16F887 de la gama media y 40 patillas
1 x PIC18F2550 de la gama alta y 28 patillas
1 x PIC18F4550 de la gama alta y 40 patillas
También tengo el PIC16F84A-04 que no debe faltar. Así tengo para rato.
Con esto quiero entender como se hace señales de TV y sonidos tipo beep como los PC al iniciar.
Poco a poco entenderé el código. Los que sepan o hayan hechos proyectos sobre señales de TV, es buena idea poner enlaces por aquí.
Para hacer pruebas primero haré un montaje completo como indica aquí sobre el tetris. Luego hexaminar con menos códigos el de arriba para no volverse loco. Documentaciones mucha, explicar abiertamente como se crea dibujitos es un poco lioso.
La idea principal de todo es ser capaz de mostrar mensajes en pantalla y ver qué salidas y entradas visualizadas en un Televisor por un PIC.
Un cordial saludo.