Propeller-Clock.pdf

16
"Propeller Clock" Mecánicamente escaneados Reloj LED luz Siete diodos emisores de vuelta, dando la ilusión de los números en el aire. Vista Superior Vista Lateral Este es el primer reloj que he construido. He construido un par de signos de LED, pero aburrido porque ya conozco el mensaje. ¿Cómo este reloj funciona: Un motor hace girar la "hélice", y un pequeño microprocesador mantiene la noción del tiempo y cambia el patrón de siete LEDs con tiempo exacto para simular un 7 por 30 matriz de LEDs.Es una ilusión, pero funciona muy bien. Si usted quiere construir este reloj, usted necesitará un par de cosas, entre ellas: . Habilidad con motores y cosas mecánicas experiencia electrónica previa. Un VCR muerto o unidad de disco u otra fuente de un motor adecuado y piezas diversas. Un programador que programar PIC16C84 o un microprocesador 16F84.

Transcript of Propeller-Clock.pdf

  • "Propeller Clock" Mecnicamente escaneados Reloj LED luz Siete diodos emisores de vuelta, dando la ilusin de los nmeros en el aire.

    Vista Superior Vista Lateral

    Este es el primer reloj que he construido. He construido un par de signos de LED, pero

    aburrido porque ya conozco el mensaje.

    Cmo este reloj funciona:

    Un motor hace girar la "hlice", y un pequeo microprocesador mantiene la nocin del tiempo

    y cambia el patrn de siete LEDs con tiempo exacto para simular un 7 por 30 matriz de

    LEDs.Es una ilusin, pero funciona muy bien.

    Si usted quiere construir este reloj, usted necesitar un par de cosas, entre ellas:

    . Habilidad con motores y cosas mecnicas

    experiencia electrnica previa.

    Un VCR muerto o unidad de disco u otra fuente de un motor adecuado y piezas diversas.

    Un programador que programar PIC16C84 o un microprocesador 16F84.

  • He proporcionado (casi) todo lo dems: la pgina siguiente con dibujos y planos.

    Descargar:

    mclock.txt Una descripcin completa de cmo construirlo. mclkpart.txt La lista de

    piezas.mclock8.asm El cdigo fuente en formato Microchip MPASM. mclock8.hex El cdigo

    hexadecimal listo para cargar en un PIC16C84 o 16F84 chip. mclksch2.gif Un diagrama

    esquemtico grande y muy legible. mclkmoto.gif Un dibujo de las modificaciones en el

    motor.

    Si usted no puede conseguir ese tipo de motor, puede utilizar el motor de una unidad de disco

    de edad . Esta pgina tiene un montn de fotos y tomar algn tiempo para cargar. Si utiliza un

    motor de la unidad de disco o cualquier otro motor de corriente continua con escobillas 180

    grados de separacin, necesitars el cdigo ligeramente revisada: Descargar:mclockt3.asm El

    cdigo fuente. mclockt3.hex El cdigo hexadecimal listo para poner en un chip.

    Si usted no tiene ninguna manera de poner el programa en un chip PIC 16C84 o 16F84, usted

    puede construir su propio programador .

    Impreso Circuito Diseo de la placa para una versin del reloj.

    Licencia:

    El diseo del hardware y el software estn cubiertos bajo la GNU General Public License .

    Garanta:

    Ninguno.

    Preguntas Frecuentes:

    Q: Qu es esto 0.047 FARAD condensador ??

    A: Usted puede obtener muchos lugares, incluyendo los condensadores de memoria en Jameco

    Electrnica .

    Q: Qu es un conector Berg?

    A: Qu es un Kleenex? :-) El lado placa de circuito impreso a veces se llama una

    "cabecera".Las luces y los botones de enganche de placas madre para computadoras los

    utilizan. Los pines son 0.025 "cuadrado, en 0.1" centros. La final femenina se compone de

    terminales a presin encajan en una carcasa de plstico. Un ejemplo en Jameco.

    Q: Vi una versin grande de este en una tienda pero era diferente. Lo has visto?

    A: S, he visto un montn de "persistencia de la visin" relojes en los ltimos aos. Hice ste

    en 1996, as que creo que todos me copian :)

    Q: Mi motor cabeza VCR tiene un montn de cables. Cmo Cules utilizo?

    A: Yo no utilizar un motor de cabeza. He utilizado un motor de carrete. Slo tiene 2 cables y

    funciona con corriente continua.

    [ Inicio ] [ Servicios ] [ TechRef ] [ Fin ] [ Legal ] [ Contacto ]

  • Copyright 1995-2002 Bob Blick. Todos los Derechos Reservados.

    marcas comerciales y marcas mencionadas son propiedad de sus respectivos dueos.

    El propulsor, un reloj LED escaneada mecnicamente por Bob Blick.

    El reloj est en un pedazo de hilado de tarjeta perforada, pero debe

    conseguir el poder.

    Pens en muchas maneras de hacer esto, incluyendo el uso de dos

    motores (motor

    uno tiene su eje fijo a una base, y el motor de dos giros del cuerpo

    de

    motor uno, la generacin de electricidad), por lo que un transformador

    rotatorio, o

    usando anillos colectores.

    Decid hacerlo de otra manera, la toma del poder de la hilatura

    inducido de un motor DC sin formato. Con el fin de ejecutar los cables

    fuera de la

    motor, quit el rodamiento de un extremo del motor, dejando un

    Gran hoyo.

    Hay tres terminales interiores ms pequeos motores de corriente

    continua, y acta

    mucho a la corriente alterna trifsica, por lo que debe ser

    rectificado

    respaldar a Washington DC. Un efecto secundario agradable de esto es

    que la posicin de la

    motor puede ser detectada mediante la adopcin de una de las fases

    directamente en el

    microprocesador.

    Paso uno: Destrozar un motor.

    Encontrar una videograbadora, tal vez un agudo o un Samsung, con un

    motor de bobina plana.

    El motor que tengo est marcado JPA1B01, pero sostenido lo sabe por el

    nmero

    RMOTV1007GEZZ. Tmelo aparte sin mangling los cepillos (hay

    pequeos agujeros para deslizarse en un clip para mover los cepillos

    fuera de la

    cierto), y el aviso de que tiene un cojinete de bolas y un cojinete de

    manguito.

    Elimine la manga que lleva fuera de la caja y el pegamento o soldadura

    al

    otro extremo del motor, como una extensin del cojinete de bolas. El

    eje de

    del motor tendr que ser colocado de nuevo un poco para obtener el

    derecho de

    altura, pulse en un tornillo de banco con un espaciador hueco en un

    extremo. Tomar un

    Conector Berg con tres cables y soldarlos a las tres terminales

    sobre la armadura del motor. Pegar un espaciador corto roscado al eje

    en

    el extremo que se pega hacia fuera del agujero, y volver a montar el

    motor (ya sea

    cuidado con los pinceles). Puede pegar el motor a una cabeza como un

    VCR

    base pesada.

    Paso dos: Construir el circuito.

    Sola perfboard (Vectorboard) y handwired el circuito juntos. Uso

  • una toma de 18 pines para el 16C84 porque tiene que ser programado

    antes

    ponindolo en el circuito. A los 7 resistencias de corriente lmite

    utilic un

    DIP matriz resistencia, ya que lo hizo fcil para experimentar con LED

    brillo. Me instalados en 120 ohmios. Puede utilizar siete resistencias

    regulares,

    porque 120 ohmios funciona bien, a pesar de que pone la derecha de

    corriente de pico en

    el lmite para el 16C84. Piense en el equilibrio mientras se construye

    este

    circuito, y hacer referencia a mis imgenes, por lo que no tiene que

    aadir un montn de

    equilibrio de peso ms adelante. Sustituir a cualquiera de los valores

    de parte que te gusta. Nota

    que he usado un supercap 47000uf, que es mantener el reloj corriendo

    detrs

    apagarlo, as que usted puede ajustar la hora. Los LEDs reciben

    alimentacin independiente

    de esto. No sustituya un resonador cermico para el cristal de 4 MHz,

    Este es un reloj y debe ser exacta.

    Tercer paso: Programar el 16C84.

    Usted necesitar un programador que programar un PIC16C84. Si has

    encontrado

    esta pgina archivo / web, usted puede encontrar los planes para

    construir un programador 16C84.

    Programarlo utilizando el archivo hex que acompaa este documento.

    Tengo

    incluido el cdigo fuente (.asm) slo para su diversin. Cuando

    programar el chip, defina las opciones de chips a: temporizador de

    vigilancia (WDT)

    OFF y el oscilador a cristal normal de XT.

    Paso cuatro: El tiro juntos y Keep Time.

    Tornillo de la placa de circuito en el motor, y conecte el conector de

    tres hilos

    en. Encienda el motor. El voltaje preferido es 6,2 voltios, pero

    que se desarrollar del 5 voltios a alrededor de 7,5 voltios. Tenga en

    cuenta que 5 voltios llega a

    el circuito cuando 6,2 voltios se aplica al motor, a causa de diodo

    prdidas. El reloj puede estar trabajando en este punto, donde se

    presentan las 12:00. Si se

    no es. probablemente hubo alguna tensin en el supercap cuando

    enchufado

    en el chip. Apague los pines de alimentacin y momentneamente cortos

    5 y 4

    juntos (suelo y / MCLR) para restablecer el chip. Ahora cuando se

    aplica energa

    el reloj debera funcionar, y usted puede configurarlo apagando el

    poder y

    presionando los botones (hora, 10 minutos, minuto) el nmero correcto

    de

    veces. Si los nmeros aparecen al revs, invertir la polaridad de la

    motor para hacer girar en sentido contrario. Usted puede experimentar

    con el equilibrio

    el reloj, y el uso de espuma debajo de la base para reducir la

    vibracin.

  • Paso cinco: Modificaciones.

    Si te fijas bien en el cdigo fuente, vers que la "tasa de punto"

    se ajusta a la velocidad del motor para que la pantalla una

    consistente

    anchura independientemente de la velocidad del motor. El motor utilic

    tiene cepillos conjunto

    90 grados de diferencia, y le da dos ndices cada revolucin. El reloj

    se muestra en dos partes, separadas 180 grados. Si utiliza un motor

    con la

    cepillos 180 de diferencia, el reloj slo mostrar en un lado, y la

    nmeros sern demasiado ancho. Usted querr modificar el programa, en

    el

    seccin marcada D_lookup_3. El valor en el registro W cuando est

    parado obtiene

    llamados efectos la anchura de los dgitos. Usted puede tratar de

    enviar la mitad de

    el valor period_calc para retrasar, quiz girando period_calc derecho

    en W (recuerde que debe borrar la primera bandera de acarreo). Como

    este:

    ESTADO bcf, C

    FRR period_calc, w

    llamar Delay

    25 de enero 1997 Bob Blick

    www.bobblick.com

    copyright 1997 Bob Blick, todos los derechos reservados

    notas actualizadas 02 de noviembre 2006

    Nota: PIC16C84 es ahora obsoleto. Usted puede utilizar un PIC16F84 o

    PIC16F84A sin cambios.

    Nota: motor VCR Sharp es ahora obsoleto. Utilice cualquier motor de

    corriente continua, de preferencia

    destinado a 12 voltios por lo que la velocidad no ser demasiado

    grande cuando se opera

    a aproximadamente 6,2 voltios.

  • La Lista de la hlice de piezas de reloj

    Condensadores:

    C1, C2 - cermica 33pF

    C3, C6 - cermica 0.1uF

    C4 - electroltico 47uF

    C5 - supercap 47,000uf (lmite de memoria)

    Diodos:

    D1-D7 - diodos emisores de luz

    D8-16 - 1N4001 propsito general rectificadores 1Amp

    Resistencias:

    R1 - 120 ohmios gama DIP o siete 120 ohmios

    R2-R6 - 10k ohmios

    Otra informacin:

    J1 - tres conectores de terminales Berg

    SW1-SW3 - pulsadores normalmente abiertos

    U1 - PIC16C84, PIC16F84 o PIC16F84A

    XTAL1 - cristal de 4MHz

    MOTOR - RMOTV1007GEZZ de Sharp

    Nota: U1 a programar con el archivo hex mClock

  • --------

    ; mclock8.asm

    ; "El Propeller" escanea mecnicamente reloj LED

    ; algunos cambios desde la ltima versin -

    ; tabla modificada etc para Compatiblility con octava LED

    ; temporizador de vigilancia utiliza para asegurar el arranque

    ; Bob Blick 12 de febrero 1997

    ; Licencia bajo los trminos de la Licencia Pblica General de GNU,

    www.gnu.org

    ; No hay garantas expredded o implcita

    ; Bob Blick 18 de febrero 2002

    ; --------

    Lista p = 16C84

    radix hexagonal

    incluir "p16c84.inc"

    ; --------

    ; recuerde que debe definir las opciones en tiempo explosin: OSC =

    xtal regular, WDT = ON

    ; los tiempos de todos basados en cristal 4 MHz

    ; --------

    ; son estos equipara ya en el archivo de inclusin? algn da voy a

    mirar.

    ; --------

    w equ 0

    f equ 1

    ; --------

    ; Comience de RAM disponible.

    ; --------

    cblock 0x0C

    safe_w; en realidad no temporal, utilizado por svc de

    interrupcin

    safe_s; en realidad no la temperatura, utilizados por

    svc de interrupcin

    period_count; incrementa cada interrupcin

    period_dup; copia de period_count salvo de interrupcin

    period_calc; perodo estable despus calc histresis.

    banderas; b2 = int b1 = minutos b4 = borde

    dot_index; el que se muestra la columna

    digit_index; que se est visualizando dgitos

    hora, en formato de visualizacin, no hexagonal (01-12)

    minutos, 00 a 59

    bigtick_dbl; incrementa cada interrupcin

    bigtick_hi

    bigtick_lo

    llaves, valor clave

    cero; valor cero

    tick; utilizado por retraso

    CDDN

    ; --------

    ; Inicio de ROM

    ; --------

    org 0x00; Inicio de espacio de cdigo

    Ir a Inicio

    ; --------

    ; SERVICIO DE INTERRUPCIN DE RUTINA

    ; --------

    org 0x04; interrumpir vectorial

    Safe_w Intsvc movwf; salvar w

    ESTADO swapf, w; estado de intercambio, w

  • movwf safe_s, guardar el estado (de intercambio nibble,

    recordar)

    ; --------

    ; ahorro de hecho, ahora empezar a trabajar

    ; --------

    ; claro temporizador de vigilancia para garantizar la puesta en marcha

    CLRWDT

    ;

    ; Valor mnimo recuento periodo

    period_count incf, f

    btfsc STATUS, Z; de ajuste a cero significa

    desbordamiento

    period_count DECF, f

    ; 234375 interrumpe cada minuto. Incrementar la BigTick cada vez.

    incf bigtick_lo, f

    ESTADO BTFSC, Z

    incf bigtick_hi, f

    ESTADO BTFSC, Z

    INCFSZ bigtick_dbl, f

    Goto Bigtick_out

    ; --------

    ; Aqu? BigTick ha rodado a cero y haya pasado un minuto.

    ; recargar BigTick y establecer un indicador para el contador

    principal

    ; --------

    movlw 0xFC; 234375 = 0x039387

    movwf bigtick_dbl; 0 - = 0x039387 0xFC6C79

    movlw 0x6C

    movwf bigtick_hi

    movlw 0x79

    movwf bigtick_lo

    banderas bsf, 1; notificar Keep_time

    Bigtick_out

    ; --------

    ; hecho de trabajar, iniciar la restauracin

    ; --------

    swapf safe_s, w; Obtener estado, mordiscos reswap

    ESTADO movwf; estado de restauracin

    swapf safe_w, f; mordiscos de swap en preparacin

    swapf safe_w, w; para la restauracin de intercambio de

    w

    INTCON millones de pies cbicos, 2; claro indicador de

    interrupcin antes del regreso

    RETFIE; regreso de interrupcin

    ; --------

    ; CARCTER bsqueda en la tabla

    ; ignorar bit alto. set = LED apagado, claro = LED, bit0 = LED

    inferior, bit6 = LED superior

    ; --------

    Char_tbl

    ADDWF PCL, f

    dt 0xC1,0xBE, 0xBE, 0xBE, 0xC1; "O"

    dt 0xFF, 0xDE, 0x80,0xFE, 0xFF; "1"

    dt 0xDE, 0xBC, 0xBA, 0xB6,0xCE; "2"

    dt 0xBD, 0xBE, 0xAE, 0x96,0xB9; "3"

    dt 0xF3,0xEB, 0xDB, 0x80,0xFB; "4"

    dt 0x8D, 0xAE, 0xAE, 0xAE, 0xB1; "5"

    dt 0xE1,0xD6,0xB6,0xB6,0xF9; "6"

    dt 0xBF, 0xB8,0xB7,0xAF, 0x9F; "7"

    dt 0xC9,0xB6,0xB6,0xB6,0xC9; "8"

    dt 0xCF, 0xB6,0xB6,0xB5,0xC3; "9"

  • dt 0xFF, 0xC9,0xC9,0xFF, 0xFF; ":"

    Char_tbl_end

    ; --------

    ; SUBRUTINAS COMENZAR AQU

    ; --------

    ; claras partes importantes de ram

    ; --------

    Ram_init movlw 0x07

    llaves movwf

    movlw 0x12; por qu los relojes siempre comienzan

    movwf horas; a las 12:00?

    minutos CLRF

    clrf dot_index

    clrf digit_index

    movlw 0xFC

    movwf bigtick_dbl

    retlw 0

    ; --------

    ; pines no utilizados estoy fijando para ser salidas

    ; --------

    Port_init movlw 0x00; toda la salida, b7 = no utilizada

    tris PORTB; en el puerto b adjunta a LED

    b'00010111 movlw '; puerto tiene un 5 pines. Necesito 4

    entradas

    ; B0 = minutos = b1, b2 = 10

    minutos horas

    ; B3 =, b4 = ndice de rotacin

    sin uso

    tris PORTA; en el puerto un

    retlw 0

    ; --------

    ; consiguen interrupciones basados en temporizador ir

    ; --------

    Timer_init bcf INTCON, 2; claro TMR0 int flag

    bsf INTCON, 7; permitir que las interrupciones globales

    INTCON bsf, 5; permitir TMR0 int

    clrf TMR0; temporizador clara

    CLRWDT, por qu es esto necesario? solo hazlo ..

    b'11011000 movlw '; cre temporizador. prescaler (bit3)

    puenteado

    opcin, enviar w de opcin. generar advertencia.

    clrf TMR0; iniciar temporizador

    retlw 0

    ; --------

    ; prueba para el ndice de rotacin y periodo tienda en period_dup

    ; --------

    Check_index MOVF PORTA, w; obtener el estado de un puerto

    banderas xorwf, w; comparan con estado guardado

    b'00010000 andlw '; slo est interesado en el bit 4

    ESTADO BTFSC, Z; prueba de borde

    retlw 0; no una ventaja, igual que la ltima

    xorwf banderas, f; a ahorrar para la prxima vez

    banderas BTFSC, 4; prueba de flanco de bajada

    retlw 0; debe haber sido un flanco ascendente

    period_count movf, w; hacer una copia de trabajo

    movwf period_dup; llamado periodo dup

    period_count clrf; un nuevo comienzo para la prxima

    rotacin

    clrf digit_index; listo para primer dgito

    dot_index clrf; primera columna

    ; calcular un periodo que no tramado o jitter

  • ; perodo que no ser cambiada a menos nuevo perodo es realmente

    diferente

    period_calc movf, w

    period_dup SUBWF, w; encontrar diferencia

    ESTADO btfss, C; llevar pabelln conjunto significa no

    pedir prestado

    Goto Calc_period_neg; debe ser de otra manera

    sublw 2; desviacin permitida = 3

    ESTADO btfss, C; prestado no se saltar

    incf period_calc; nuevo valor mucho mayor que calc

    retlw 0

    Calc_period_neg addlw 2; desviacin permitida = 3

    ESTADO btfss, C; llevar saltar

    DECF period_calc; sin equipaje significa que debe ser

    cambiado

    retlw 0

    ; --------

    ; cambiar el patrn de LED basado en estado de digit_index y dot_index

    ; --------

    Display_now movlw 0x05

    xorwf dot_index, w; prueba para finales de dgitos

    movlw 0xFF; patrn para la columna en blanco

    ESTADO BTFSC, Z

    Goto D_lookup_3, sino que necesita un espacio en blanco

    ESTADO bcf, C; carry clara ante una rotacin

    digit_index RLF, w; el doble del ndice debido a que

    cada

    ADDWF PCL, f; lleva dos instrucciones

    Hora D_10hr swapf, w

    Goto D_lookup; lo que una gran oleada de energa

    D_1hr horas MOVF, w; me siento al modificar

    Goto D_lookup; el contador de programa

    D_colon movlw 0x0A

    Goto D_lookup

    Minutos D_10min swapf, w

    Goto D_lookup

    D_1min minutos MOVF, w

    Goto D_lookup

    RETLW D_nothing 0

    D_lookup andlw b'00001111 '; quitarse bits de hi

    cero movwf; multiplique esto por 5 para la bsqueda

    cero ADDWF, f; la posicin base de la mesa

    cero ADDWF, f; es este engao?

    cero ADDWF, f; creo que no.

    cero ADDWF, f, creo que es la conservacin de la

    energa!

    ESTADO btfss, Z; prueba de cero

    Goto D_lookup_2; no un cero

    digit_index movf, f, esto es slo para probar / bandera

    conjunto

    movlw 0xFF, lo que hace un patrn de LED blanco

    ESTADO BTFSC, Z; prueba si es 10 hrs dgitos

    Goto D_lookup_3, es un cero a la izquierda

    D_lookup_2 movf dot_index, w; conseguir la columna

    cero ADDWF, w; agregarlo a la base dgitos

    llamar Char_tbl; obtener el patrn de puntos para esta

    columna

    D_lookup_3 movwf PORTB; enviarlo a los LED

    movlw 0x0C; sub valor por encima del perodo

    SUBWF period_calc, w; compensar los gastos generales y

    conjunto

  • llamar Delay; anchura de dgitos con este retraso

    dot_index incf f,; de la subasta a la siguiente columna

    movlw 0x06; 6 columnas es un dgito ms espacio

    xorwf dot_index, w; prueba siguiente dgito

    ESTADO btfss, Z

    retlw 0; no una nueva dgitos

    dot_index clrf; nuevo tiempo dgitos

    incf digit_index, f

    retlw 0; Display_now hecho.

    ; --------

    ; una rutina de retardo corto

    ; --------

    Garrapata Delay movwf

    Delay_loop DECFSZ garrapata, f

    Goto Delay_loop; w no est daado, por lo que puede

    Delay

    volver; se recordar sin recargar

    ; --------

    ; prueba para la pulsacin de tecla y tiempo de atencin ajustar si es

    necesario

    ; --------

    Check_keys MOVF PORTA, w; conseguir puerto "a"

    llaves xorwf, w; comparar con los anteriores

    andlw b'00000111 '; slo se preocupan por los pernos

    del botn

    ESTADO BTFSC, Z; de ajuste a cero = sin botones

    retlw 0; retorno

    xorwf llaves, f; almacenar valor clave

    movlw 0x64; un tiempo bastante largo retraso se

    cero movwf; prevenir rebotes clave

    Key_delay movlw 0xFF

    llamar Delay

    cero DECFSZ

    Goto Key_delay

    botn de prueba "minutos"; btfss llaves, 2

    Goto Inc_mins

    btfss llaves, 1; botn de prueba "decenas"

    Goto Inc_tens

    botn de "horas" de prueba; btfss teclas, 0

    Goto Inc_hours

    retlw 0; debe ser un problema tcnico. s, claro!

    ; --------

    ; incrementar diez minutos

    ; --------

    Inc_tens movlw 0x0A

    cero movwf; cero tiene diez

    Inc_tens_loop llamar Inc_mins

    cero DECFSZ

    Goto Inc_tens_loop; otro minuto aadi

    retlw 0

    ; --------

    ; incrementar una hora

    ; --------

    Inc_hours movlw 0x12

    hora xorwf, w

    ESTADO BTFSC, Z

    Goto Inc_hours_12

    movlw 0x07; esta parte se hace un poco descuidado

    hora ADDWF, w

    movlw 0x07

    STATUS btfss, DC

  • movlw 1

    hora ADDWF, f

    retlw 0

    Inc_hours_12 movlw 0x01

    hora movwf

    retlw 0

    ; --------

    ; incrementar el tiempo basado en banderas, 1 que fue enviado por la

    rutina de interrupcin

    ; Inc_mins bucle tambin utilizado por la rutina de puesta en hora

    ; --------

    Banderas Keep_time btfss, 1; los minutos bandera

    retlw 0; esta vez no

    banderas mpc, 1; borrar la bandera minutos

    Inc_mins movlw 0x07; la hora de inicio de incremento

    minutos ADDWF, w; suman los 7 minutos w

    ESTADO BTFSC, DC; hizo aadiendo 7 dgitos causa

    equipaje?

    Goto Sixty_mins; luego probar para un cambio de hora

    incf minutos, de lo contrario aadir al menos 1 de

    verdad

    RETLW 0; y volver

    Sixty_mins movwf minutos; guardar los minutos

    movlw 0x60; prueba de 60

    xorwf minutos, w; son minutos a 60?

    ESTADO btfss, Z

    RETLW 0; no? volver

    CLRF minutos, de lo contrario minuto cero

    Goto Inc_hours; y hora de incremento

    ; --------

    ; Fin de subrutinas

    ; Programa comienza aqu

    ; --------

    Iniciar llamar Ram_init; establecer las variables a los valores

    agradables

    llamar Port_init; establecer las direcciones de puerto

    llamar Timer_init; comenzar interrupcin basada

    temporizador

    ; --------

    ; Hecho inicializar, inicie el bucle sin fin.

    ; --------

    ;

    Crculo; comenzar el bucle grande

    ;

    ; --------

    ; detectar flanco descendente en PORTA, 4 para determinar el ndice de

    rotacin

    ; calcular el perodo de rotacin y almacenar en period_dup

    ; Comparar con periodo (period_calc) trabajar y ajustar si forma

    diferente

    ; --------

    llamar Check_index

    ; --------

    ; comprobar estado de visualizacin y el cambio si es necesario

    ; --------

    llamar Display_now

    ; --------

    ; comprobar el teclado y ajustar el tiempo

    ; --------

    llamar Check_keys

    ; --------

  • ; comprobar bandera minutos e incrementar el tiempo si ha pasado un

    minuto

    ; --------

    llamar Keep_time

    ; --------

    ; seores, eso es un reloj, mantenerlo rodando

    ; --------

    Goto Crculo; que escuch al hombre, ponerse en marcha!

    fin

    ; --------

    ; final del archivo

    ; --------

  • :020000040000FA

    :10000000F028FF3FFF3FFF3F8C00030E8D00640090

    :100010008E0A03198E03980A0319970A0319960F7B

    :100020001828FC3096006C309700793098009114B5

    :100030000D0E83008C0E0C0E0B1109008207C134CB

    :10004000BE34BE34BE34C134FF34DE348034FE34BA

    :10005000FF34DE34BC34BA34B634CE34BD34BE34AE

    :10006000AE349634B934F334EB34DB348034FB34BF

    :100070008D34AE34AE34AE34B134E134D634B6342B

    :10008000B634F934BF34B834B734AF349F34C934DC

    :10009000B634B634B634C934CF34B634B634B534E5

    :1000A000C334FF34C934C934FF34FF3407309900F6

    :1000B00012309400950192019301FC3096000034B7

    :1000C000003066001730650000340B118B178B165B

    :1000D00081016400D83062008101003405081106F6

    :1000E0001039031900349106111A00340E088F00DC

    :1000F0008E019301920110080F02031C8328023C19

    :10010000031C900A0034023E031C900300340530A7

    :100110001206FF300319A9280310130D8207140ECD

    :100120009A2814089A280A309A28150E9A28150831

    :100130009A2800340F399A009A079A079A079A0763

    :10014000031DA6289308FF300319A92812081A07CF

    :100150001E2086000C301002B520920A06301206CE

    :10016000031D00349201930A00349B009B0BB628B8

    :100170000800050819060739031900349906643088

    :100180009A00FF30B5209A0BC128191DE328991C4D

    :10019000CC28191CD22800340A309A00E3209A0B8C

    :1001A000CE280034123014060319DD280730140756

    :1001B0000730831C01309407003401309400003470

    :1001C000911C00349110073015078318E928950A0F

    :1001D0000034950060301506031D00349501D228C7

    :1001E0005620602065206E208720B920E020F3286B

    :0201F000FF3FCF

    :02400E00F53F7C

    :00000001FF