I am learning the English yet, then sorry about some errors!
My idea was to create a circuit with a mix of the good ideas and things that I learned using the PicBasic Pro compiler. My project is based on Persistence of Vison. I belive that the firt project of this type was made by Bob Blick about 25 years ago.
http://www.bobblick.com/techref/proj...propclock.html
“Propeller Clock" Mechanically Scanned LED Clock
Seven light emitting diodes spin, giving the illusion of numbers in the air”
images from attachment
Then, when I started my first study using PIC microcontrolers and PBP compiler, I decided to do it!
My Propeller Clock and Messages Project !!!
The biggest problem of this type of project using an propeller, is the transference of the power for the revolving pcb (rotary board).
I already tried DC motor with transference using brushs but the noise is high beyond the consumption of the brush , batteries in the board, until I found a friend whom he showed to me another way to make this. He is Edson Tomioka from Brasil. Bellow your project link and some images:
http://edsontomioka.zymichost.com/pi.../PICClock.html
images from attachment
He used a cooler, a plain coil printed on pcb to transfer the energy as a transformer with air nucleus. He used a popular 555 integrated and a FET transistor to create about 200KHZ frequency on primary coil, and then using other coil on secondary with a simple fast diode to retifier , a capacitor to filter and a 7805 to regulate to give 5v to microcontroller.
However, I very found difficult to make this coil in the pcb, then I decided to copy the idea of it of a different and more practical skill for me.
I used a piece of a plastic cup of a candy to serve as form for the primary coil that is always fixed glue in cooler. In the rotor I made the secondary coil that turns together with the board.
I had to place a little of adhesive tape in the rotor to increase the space of the center after removing the helices, because underneath of the plastic has a part of iron therefore in my tests without this space occurred the collapse of the magnetic flow!
I used about 60 laps of enamelled wire in primary coil and 60 in the secondary, about 4 ohms every. I used a 13,5V source, then the max. current is about 3 A (peak). Its was necessary to have a min. Current on secundary to circuit to function correctly, about 150mA, basead in my tests!
images from attachment
As you know now, my initial inspiration was the Bob Blick project. However, I also leaned very PBP through the example written by Melanie Newman using a DS1307 RTC from Dallas. This program includes Setting the Date and Time, 3 Buttons Control Setting,12/24 hour Clock Mode,Year,Month,Day of Month (also accounting for Leap Years),Hour,Minute,Second,written for 2 line 16 Character LCD, really a an excellent didactic project!
http://melabs.com/resources/samples/...ted/mn1307.txt
Then, I constructed my RTC to understand better the program and to improve my know how about PBP programming techniques.
image from attachment
And then, I joined everything and with a little of manual and mental effort I constructed my project based on the persistence of the vision
A big cooler spins the "propeller", and 16F877A PIC microcontroller keeps track of time and changes the pattern on 8RGB LEDs with exact timing to simulate an radial array of LEDs.Think about balance while you build this circuit, its is a critical because high rotation of the coller. I placed everything in a closed box for security guard question. Care will be to make this, therefore I do not make responsible!
I still need to improve the part of the adjustment of the clock because I have to use another hardware to adjust the DS1307 (Melanie Newman project) and then to change for the board, but as is only necessary makes this an only time, I was leaving the time to pass!
images from attachment
It is my project on Youtube !!!
'**************************************************************** '* Name : POV_Clock_by_Pimentel.PBP * '* Author : [select VIEW...EDITOR OPTIONS] * '* Notice : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 09/11/10 * '* Version : 1.0 * '* Notes : USA BOBINA P/ TRANSMITIR ENERGIA (VENTOINHA PC) * '* : GIRA NO SENTIDO ANTI-HORÁRIO * '* : SEM TRANSISTORES P/ LEDS * : ANALOGICO OMITIDO DEVIDO BAIXO RPM!!! * * '**************************************************************** @ DEVICE pic16F877a, WDT_OFF ' Watchdog Timer @ DEVICE pic16F877a, PWRT_OFF ' Power-On Timer @ DEVICE pic16F877a, BOD_OFF ' Brown-Out Detect @ DEVICE pic16F877a, LVP_OFF ' Low-Voltage Programming @ DEVICE pic16F877a, CPD_OFF ' Data Memory Code Protect @ DEVICE pic16F877a, PROTECT_OFF ' Program Code Protection @ DEVICE pic16F877a, WRT_OFF ' Flash Memory Word Enable @ DEVICE pic16F877a, HS_OSC ' System Clock Options define OSC 20 'define oscilador em 20MHz TRISB = %00000000 'SETA PORTB P/ LEDS COR AZUL TRISC = %00000000 'SETA PORTB P/ LEDS COR VERDE TRISD = %00000000 'SETA PORTD P/ LEDS COR VERMELHO TRISA.1 = 0 'LED AZUL DO CONTORNO TRISA.2 = 0 'LED VERDE DO CONTORNO TRISA.3 = 0 'LED VERMELHO DO CONTORNO TRISE.0 = 1 'SDA P/ RTC TRISE.1 = 1 'SCL P/ RTC TRISE.2 = 1 'JUMPER P/ SELECIONAR HORARIO DE VERAO P/ ADIANTAR 1 HORA TRISA.0 = 1 'PORTA.0 COMO ENTRADA P/ SENSOR DE EFEITO HALL UGN3503 ADCON1 = %10001110 'SETA PORTA.0 COMO ANALÓGICA E RESULTADO JUSTIFICADO À 'DIREITA ADCON0 = %10000001 'CONFIGURA O MÓDULO A/D (FOSC/32; CANAL 0; AD_ON) 'ADCON0 = %01000001 'CONFIGURA O MÓDULO A/D (FOSC/8; CANAL 0; AD_ON) 'ADCON0 = %00000001 'CONFIGURA O MÓDULO A/D (FOSC/2; CANAL 0; AD_ON) SCLpin var PORTE.1 SDApin var PORTE.0 HORARIO_VERAO VAR PORTE.2 HALL VAR PORTA.0 VALOR_AD VAR WORD DEZ_SEG VAR BYTE 'guardam os dígitos dos horários UN_SEG VAR BYTE DEZ_MIN VAR BYTE UN_MIN VAR BYTE DEZ_HORA VAR BYTE UN_HORA VAR BYTE DEZ_DIA VAR BYTE UN_DIA VAR BYTE DEZ_ANO VAR BYTE UN_ANO VAR BYTE DEZ_MES VAR BYTE UN_MES VAR BYTE MES VAR BYTE I VAR WORD 'HORA_ANALOGICA VAR BYTE 'MINUTO_ANALOGICO VAR BYTE 'SEGUNDO_ANALOGICO VAR BYTE ' RAM Assignments and Variables ' ----------------------------- CounterA var byte ' General purpose Variable CounterB var byte ' General purpose Variable RTCSec var byte ' Seconds RTCMin var byte ' Minutes RTCHour var byte ' Hours RTCWDay var byte ' Weekday RTCDay var byte ' Day RTCMonth var byte ' Months RTCYear var byte ' Year RTCCtrl var byte ' Control DH1 VAR BYTE 'DEZENA DA HORA DH2 VAR BYTE DH3 VAR BYTE DH4 VAR BYTE DH5 VAR BYTE UH1 VAR BYTE 'UNIDADE DA HORA UH2 VAR BYTE UH3 VAR BYTE UH4 VAR BYTE UH5 VAR BYTE DM1 VAR BYTE 'DEZENA DO MINUTO DM2 VAR BYTE DM3 VAR BYTE DM4 VAR BYTE DM5 VAR BYTE UM1 VAR BYTE 'UNIDADE DO MINUTO UM2 VAR BYTE UM3 VAR BYTE UM4 VAR BYTE UM5 VAR BYTE DS1 VAR BYTE 'DEZENA DO SEGUNDO DS2 VAR BYTE DS3 VAR BYTE DS4 VAR BYTE DS5 VAR BYTE US1 VAR BYTE 'UNIDADE DO SEGUNDO US2 VAR BYTE US3 VAR BYTE US4 VAR BYTE US5 VAR BYTE DD1 VAR BYTE 'DEZENA DO DIA DD2 VAR BYTE DD3 VAR BYTE DD4 VAR BYTE DD5 VAR BYTE UD1 VAR BYTE 'UNIDADE DO DIA UD2 VAR BYTE UD3 VAR BYTE UD4 VAR BYTE UD5 VAR BYTE M31 VAR BYTE 'TERCEIRA LETRA DO MES M32 VAR BYTE M33 VAR BYTE M34 VAR BYTE M35 VAR BYTE M21 VAR BYTE 'SEGUNDA LETRA DO MES M22 VAR BYTE M23 VAR BYTE M24 VAR BYTE M25 VAR BYTE M11 VAR BYTE 'PRIMEIRA LETRA DO MES M12 VAR BYTE M13 VAR BYTE M14 VAR BYTE M15 VAR BYTE DA1 VAR BYTE 'DEZENA DO ANO DA2 VAR BYTE DA3 VAR BYTE DA4 VAR BYTE DA5 VAR BYTE UA1 VAR BYTE 'UNIDADE DO ANO UA2 VAR BYTE UA3 VAR BYTE UA4 VAR BYTE UA5 VAR BYTE 'VB VAR BYTE[60] 'VC VAR BYTE[60] 'VD VAR BYTE[60] AZUL VAR PORTA.1 VERDE VAR PORTA.2 VERMELHO VAR PORTA.3 B0 VAR BYTE B1 VAR BYTE B2 VAR BYTE B3 VAR BYTE AUX VAR BYTE TAB VAR BYTE ' ESCOLHE O SELECT QUE VAI EXECUTAR MN VAR WORD DELAY CON 325 'delay de cada coluna do POV VALOR CON 610 'VALOR DO HALL EM CIMA DO IMA PORTB = 0: PORTD = 0: PORTC = 0 : 'ZERA PORTS TAB = 1: MN = 0: B2 = 0: B3 = 110: VERMELHO = 0: VERDE = 0 : AZUL = 0 : goto LOOP_1 '---------------------------------------------------------------------------------------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- DEZENA_HORA: 'COR BRANCA PORTB = DH1: PORTC = DH1: PORTD = DH1: GOSUB RETARDO PORTB = DH2: PORTC = DH2: PORTD = DH2: GOSUB RETARDO PORTB = DH3: PORTC = DH3: PORTD = DH3: gOSUB RETARDO PORTB = DH4: PORTC = DH4: PORTD = DH4: GOSUB RETARDO PORTB = DH5: PORTC = DH5: PORTD = DH5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC UNIDADE_HORA: 'COR BRANCA PORTB = UH1: PORTC = UH1: PORTD = UH1: GOSUB RETARDO PORTB = UH2: PORTC = UH2: PORTD = UH2: GOSUB RETARDO PORTB = UH3: PORTC = UH3: PORTD = UH3: GOSUB RETARDO PORTB = UH4: PORTC = UH4: PORTD = UH4: GOSUB RETARDO PORTB = UH5: PORTC = UH5: PORTD = UH5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC DEZENA_MINUTO: 'COR BRANCA PORTB = DM1: PORTC = DM1: PORTD = DM1: GOSUB RETARDO PORTB = DM2: PORTC = DM2: PORTD = DM2: GOSUB RETARDO PORTB = DM3: PORTC = DM3: PORTD = DM3: GOSUB RETARDO PORTB = DM4: PORTC = DM4: PORTD = DM4: GOSUB RETARDO PORTB = DM5: PORTC = DM5: PORTD = DM5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC UNIDADE_MINUTO: 'COR BRANCA PORTB = UM1: PORTC = UM1: PORTD = UM1: GOSUB RETARDO PORTB = UM2: PORTC = UM2: PORTD = UM2: gOSUB RETARDO PORTB = UM3: PORTC = UM3: PORTD = UM3: GOSUB RETARDO PORTB = UM4: PORTC = UM4: PORTD = UM4: GOSUB RETARDO PORTB = UM5: PORTC = UM5: PORTD = UM5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC DEZENA_SEGUNDO: 'COR BRANCA PORTB = DS1: PORTC = DS1: PORTD = DS1: GOSUB RETARDO PORTB = DS2: PORTC = DS2: PORTD = DS2: GOSUB RETARDO PORTB = DS3: PORTC = DS3: PORTD = DS3: GOSUB RETARDO PORTB = DS4: PORTC = DS4: PORTD = DS4: GOSUB RETARDO PORTB = DS5: PORTC = DS5: PORTD = DS5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC UNIDADE_SEGUNDO: PORTB = US1: PORTC = US1: PORTD = US1: GOSUB RETARDO PORTB = US2: PORTC = US2: PORTD = US2: GOSUB RETARDO PORTB = US3: PORTC = US3: PORTD = US3: GOSUB RETARDO PORTB = US4: PORTC = US4: PORTD = US4: GOSUB RETARDO PORTB = US5: PORTC = US5: PORTD = US5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC 'DP 235 255 255 DP_RTC: PORTB = 0: PORTC = 0: GOSUB RETARDO PORTB = 20: PORTC = 20: PORTD = 20: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0 : GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC DEZENA_DIA: 'COR BRANCA PORTB = DD1: PORTC = DD1: PORTD = DD1: GOSUB RETARDO PORTB = DD2: PORTC = DD2: PORTD = DD2: GOSUB RETARDO PORTB = DD3: PORTC = DD3: PORTD = DD3: GOSUB RETARDO PORTB = DD4: PORTC = DD4: PORTD = DD4: GOSUB RETARDO PORTB = DD5: PORTC = DD5: PORTD = DD5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: ' GOSUB RETARDO GOTO VOLTA_RTC UNIDADE_DIA: 'COR BRANCA PORTB = UD1: PORTC = UD1: PORTD = UD1: GOSUB RETARDO PORTB = UD2: PORTC = UD2: PORTD = UD2: GOSUB RETARDO PORTB = UD3: PORTC = UD3: PORTD = UD3: GOSUB RETARDO PORTB = UD4: PORTC = UD4: PORTD = UD4: GOSUB RETARDO PORTB = UD5: PORTC = UD5: PORTD = UD5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC '------------------------------------------------------------------------------- 'MES MES1: PORTB = M11: PORTC = M11: PORTD = M11: GOSUB RETARDO PORTB = M12: PORTC = M12: PORTD = M12: GOSUB RETARDO PORTB = M13: PORTC = M13: PORTD = M13: GOSUB RETARDO PORTB = M14: PORTC = M14: PORTD = M14: GOSUB RETARDO PORTB = M15: PORTC = M15: PORTD = M15: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC MES2: PORTB = M21: PORTC = M21: PORTD = M21: GOSUB RETARDO PORTB = M22: PORTC = M22: PORTD = M22: GOSUB RETARDO PORTB = M23: PORTC = M23: PORTD = M23: GOSUB RETARDO PORTB = M24: PORTC = M24: PORTD = M24: GOSUB RETARDO PORTB = M25: PORTC = M25: PORTD = M25: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC MES3: PORTB = M31: PORTC = M31: PORTD = M31: GOSUB RETARDO PORTB = M32: PORTC = M32: PORTD = M32: GOSUB RETARDO PORTB = M33: PORTC = M33: PORTD = M33: GOSUB RETARDO PORTB = M34: PORTC = M34: PORTD = M34: GOSUB RETARDO PORTB = M35: PORTC = M35: PORTD = M35: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC '------------------------------------------------------------------------------- VINTE: '0 = 062,069,073,081,062,000 ok PORTB = 62: PORTC = 62: PORTD = 62: GOSUB RETARDO PORTB = 69: PORTC = 69: PORTD = 69: GOSUB RETARDO PORTB = 73: PORTC = 73: PORTD = 73: GOSUB RETARDO PORTB = 81: PORTC = 81: PORTD = 81: GOSUB RETARDO PORTB = 62: PORTC = 62: PORTD = 62: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO '2 = 070,073,081,097,066,000 ok PORTB = 70: PORTC = 70: PORTD = 70: GOSUB RETARDO PORTB = 73: PORTC = 73: PORTD = 73: GOSUB RETARDO PORTB = 81: PORTC = 81: PORTD = 81: GOSUB RETARDO PORTB = 97: PORTC = 97: PORTD = 97: GOSUB RETARDO PORTB = 66: PORTC = 66: PORTD = 66: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC '------------------------------------------------------------------------------- DEZENA_ANO: 'COR BRANCA PORTB = DA1: PORTC = DA1: PORTD = DA1: GOSUB RETARDO PORTB = DA2: PORTC = DA2: PORTD = DA2: GOSUB RETARDO PORTB = DA3: PORTC = DA3: PORTD = DA3: GOSUB RETARDO PORTB = DA4: PORTC = DA4: PORTD = DA4: GOSUB RETARDO PORTB = DA5: PORTC = DA5: PORTD = DA5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC UNIDADE_ANO: 'COR BRANCA PORTB = UA1: PORTC = UA1: PORTD = UA1: GOSUB RETARDO PORTB = UA2: PORTC = UA2: PORTD = UA2: GOSUB RETARDO PORTB = UA3: PORTC = UA3: PORTD = UA3: GOSUB RETARDO PORTB = UA4: PORTC = UA4: PORTD = UA4: GOSUB RETARDO PORTB = UA5: PORTC = UA5: PORTD = UA5: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC TRACO: PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO PORTB = 0: PORTC = 0: PORTD = 0: GOSUB RETARDO GOTO VOLTA_RTC 'ESP 255 255 255 255 255 255 ESP_RTC: PORTB = 0: PORTC = 0: PORTD = 0 GOSUB RETARDO: GOSUB RETARDO: GOSUB RETARDO GOSUB RETARDO: GOSUB RETARDO: GOSUB RETARDO GOSUB RETARDO: pauseus 600' GOSUB RETARDO GOTO VOLTA_RTC LOOP_1: MOSTRA_RELOGIO_DIGITAL: GOSUB RTC 'AQUI ENTRA A LÓGICA P/ AJUSTE DO HORÁRIO DE VERÃO ATRAVÉS DE JUMPER IF HORARIO_VERAO = 0 THEN IF DEZ_HORA = 0 THEN UN_HORA = UN_HORA + 1 IF UN_HORA = 10 THEN UN_HORA = 0 DEZ_HORA = 1 GOTO SAI_AJUSTE ENDIF ENDIF IF DEZ_HORA = 1 THEN UN_HORA = UN_HORA + 1 IF UN_HORA = 10 THEN UN_HORA = 0 DEZ_HORA = 2 GOTO SAI_AJUSTE ENDIF ENDIF IF DEZ_HORA = 2 THEN UN_HORA = UN_HORA + 1 IF UN_HORA = 4 THEN UN_HORA = 0 DEZ_HORA = 0 GOTO SAI_AJUSTE ENDIF ENDIF ENDIF SAI_AJUSTE: '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 IF DEZ_HORA = 0 THEN DH1 = 62 :DH2 = 69 :DH3 = 73 :DH4 = 81 :DH5 = 62 ENDIF '1 = 000,033,127,001,000,000 IF DEZ_HORA = 1 THEN DH1 = 0 :DH2 = 33 :DH3 = 127 :DH4 = 1 :DH5 = 0 ENDIF '2 = 033,067,069,073,049,000 IF DEZ_HORA = 2 THEN DH1 = 33 :DH2 = 67 :DH3 = 69 :DH4 = 73 :DH5 = 49 ENDIF '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 IF UN_HORA = 0 THEN UH1 = 62 :UH2 = 69 :UH3 = 73 :UH4 = 81 :UH5 = 62 ENDIF '1 = 000,033,127,001,000,000 IF UN_HORA = 1 THEN UH1 = 0 :UH2 = 33 :UH3 = 127 :UH4 = 1 :UH5 = 0 ENDIF '2 = 033,067,069,073,049,000 IF UN_HORA = 2 THEN UH1 = 33 :UH2 = 67 :UH3 = 69 :UH4 = 73 :UH5 = 49 ENDIF '3 = 066,065,081,105,070,000 IF UN_HORA = 3 THEN UH1 = 66 :UH2 = 65 :UH3 = 81 :UH4 = 105 :UH5 = 70 ENDIF '4 = 012,020,036,127,004,000 IF UN_HORA = 4 THEN UH1 = 12 :UH2 = 20 :UH3 = 36 :UH4 = 127 :UH5 = 4 ENDIF '5 = 114,081,081,081,078,000 IF UN_HORA = 5 THEN UH1 = 114 :UH2 = 81 :UH3 = 81 :UH4 = 81 :UH5 = 78 ENDIF '6 = 030,041,073,073,006,000 IF UN_HORA = 6 THEN UH1 = 30 :UH2 = 41 :UH3 = 73 :UH4 = 73 :UH5 = 6 ENDIF '7 = 064,071,072,080,096,000 IF UN_HORA = 7 THEN UH1 = 64 :UH2 = 71 :UH3 = 72 :UH4 = 80 :UH5 = 96 ENDIF '8 = 054,073,073,073,054,000 IF UN_HORA = 8 THEN UH1 = 54 :UH2 = 73 :UH3 = 73 :UH4 = 73 :UH5 = 54 ENDIF '9 = 048,073,073,074,060,000 IF UN_HORA = 9 THEN UH1 = 48 :UH2 = 73 :UH3 = 73 :UH4 = 74 :UH5 = 60 ENDIF '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 IF DEZ_MIN = 0 THEN DM1 = 62 :DM2 = 69 :DM3 = 73 :DM4 = 81 :DM5 = 62 ENDIF '1 = 000,033,127,001,000,000 IF DEZ_MIN = 1 THEN DM1 = 0 :DM2 = 33 :DM3 = 127 :DM4 = 1 :DM5 = 0 ENDIF '2 = 033,067,069,073,049,000 IF DEZ_MIN = 2 THEN DM1 = 33 :DM2 = 67 :DM3 = 69 :DM4 = 73 :DM5 = 49 ENDIF '3 = 066,065,081,105,070,000 IF DEZ_MIN = 3 THEN DM1 = 66 :DM2 = 65 :DM3 = 81 :DM4 = 105 :DM5 = 70 ENDIF '4 = 012,020,036,127,004,000 IF DEZ_MIN = 4 THEN DM1 = 12 :DM2 = 20 :DM3 = 36 :DM4 = 127 :DM5 = 4 ENDIF '5 = 114,081,081,081,078,000 IF DEZ_MIN = 5 THEN DM1 = 114 :DM2 = 81 :DM3 = 81 :DM4 = 81 :DM5 = 78 ENDIF '6 = 030,041,073,073,006,000 IF DEZ_MIN = 6 THEN DM1 = 30 :DM2 = 41 :DM3 = 73 :DM4 = 73 :DM5 = 6 ENDIF '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 IF UN_MIN = 0 THEN UM1 = 62 :UM2 = 69 :UM3 = 73 :UM4 = 81 :UM5 = 62 ENDIF '1 = 000,033,127,001,000,000 IF UN_MIN = 1 THEN UM1 = 0 :UM2 = 33 :UM3 = 127 :UM4 = 1 :UM5 = 0 ENDIF '2 = 033,067,069,073,049,000 IF UN_MIN = 2 THEN UM1 = 33 :UM2 = 67 :UM3 = 69 :UM4 = 73 :UM5 = 49 ENDIF '3 = 066,065,081,105,070,000 IF UN_MIN = 3 THEN UM1 = 66 :UM2 = 65 :UM3 = 81 :UM4 = 105 :UM5 = 70 ENDIF '4 = 012,020,036,127,004,000 IF UN_MIN = 4 THEN UM1 = 12 :UM2 = 20 :UM3 = 36 :UM4 = 127 :UM5 = 4 ENDIF '5 = 114,081,081,081,078,000 IF UN_MIN = 5 THEN UM1 = 114 :UM2 = 81 :UM3 = 81 :UM4 = 81 :UM5 = 78 ENDIF '6 = 030,041,073,073,006,000 IF UN_MIN = 6 THEN UM1 = 30 :UM2 = 41 :UM3 = 73 :UM4 = 73 :UM5 = 6 ENDIF '7 = 064,071,072,080,096,000 IF UN_MIN = 7 THEN UM1 = 64 :UM2 = 71 :UM3 = 72 :UM4 = 80 :UM5 = 96 ENDIF '8 = 054,073,073,073,054,000 IF UN_MIN = 8 THEN UM1 = 54 :UM2 = 73 :UM3 = 73 :UM4 = 73 :UM5 = 54 ENDIF '9 = 048,073,073,074,060,000 IF UN_MIN = 9 THEN UM1 = 48 :UM2 = 73 :UM3 = 73 :UM4 = 74 :UM5 = 60 ENDIF '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 IF DEZ_SEG = 0 THEN DS1 = 62 :DS2 = 69 :DS3 = 73 :DS4 = 81 :DS5 = 62 ENDIF '1 = 000,033,127,001,000,000 IF DEZ_SEG = 1 THEN DS1 = 0 :DS2 = 33 :DS3 = 127 :DS4 = 1 :DS5 = 0 ENDIF '2 = 033,067,069,073,049,000 IF DEZ_SEG = 2 THEN DS1 = 33 :DS2 = 67 :DS3 = 69 :DS4 = 73 :DS5 = 49 ENDIF '3 = 066,065,081,105,070,000 IF DEZ_SEG = 3 THEN DS1 = 66 :DS2 = 65 :DS3 = 81 :DS4 = 105 :DS5 = 70 ENDIF '4 = 012,020,036,127,004,000 IF DEZ_SEG = 4 THEN DS1 = 12 :DS2 = 20 :DS3 = 36 :DS4 = 127 :DS5 = 4 ENDIF '5 = 114,081,081,081,078,000 IF DEZ_SEG = 5 THEN DS1 = 114 :DS2 = 81 :DS3 = 81 :DS4 = 81 :DS5 = 78 ENDIF '6 = 030,041,073,073,006,000 IF DEZ_SEG = 6 THEN DS1 = 30 :DS2 = 41 :DS3 = 73 :DS4 = 73 :DS5 = 6 ENDIF '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 IF UN_SEG = 0 THEN US1 = 62 :US2 = 69 :US3 = 73 :US4 = 81 :US5 = 62 ENDIF '1 = 000,033,127,001,000,000 IF UN_SEG = 1 THEN US1 = 0 :US2 = 33 :US3 = 127 :US4 = 1 :US5 = 0 ENDIF '2 = 033,067,069,073,049,000 IF UN_SEG = 2 THEN US1 = 33 :US2 = 67 :US3 = 69 :US4 = 73 :US5 = 49 ENDIF '3 = 066,065,081,105,070,000 IF UN_SEG = 3 THEN US1 = 66 :US2 = 65 :US3 = 81 :US4 = 105 :US5 = 70 ENDIF '4 = 012,020,036,127,004,000 IF UN_SEG = 4 THEN US1 = 12 :US2 = 20 :US3 = 36 :US4 = 127 :US5 = 4 ENDIF '5 = 114,081,081,081,078,000 IF UN_SEG = 5 THEN US1 = 114 :US2 = 81 :US3 = 81 :US4 = 81 :US5 = 78 ENDIF '6 = 030,041,073,073,006,000 IF UN_SEG = 6 THEN US1 = 30 :US2 = 41 :US3 = 73 :US4 = 73 :US5 = 6 ENDIF '7 = 064,071,072,080,096,000 IF UN_SEG = 7 THEN US1 = 64 :US2 = 71 :US3 = 72 :US4 = 80 :US5 = 96 ENDIF '8 = 054,073,073,073,054,000 IF UN_SEG = 8 THEN US1 = 54 :US2 = 73 :US3 = 73 :US4 = 73 :US5 = 54 ENDIF '9 = 048,073,073,074,060,000 IF UN_SEG = 9 THEN US1 = 48 :US2 = 73 :US3 = 73 :US4 = 74 :US5 = 60 ENDIF '=============================================================================== 'na parte cima escreve: '0 = 062,069,073,081,062,000 ok IF DEZ_DIA = 0 THEN DD1 = 62 :DD2 = 69 :DD3 = 73 :DD4 = 81 :DD5 = 62 ENDIF '1 = 000,064,127,066,000,000 ok IF DEZ_DIA = 1 THEN DD1 = 0 :DD2 = 64 :DD3 = 127 :DD4 = 66 :DD5 = 0 ENDIF '2 = 070,073,081,097,066,000 ok IF DEZ_DIA = 2 THEN DD1 = 70 :DD2 = 73 :DD3 = 81 :DD4 = 97 :DD5 = 66 ENDIF '3 = 049,075,069,065,033,000 ok IF DEZ_DIA = 3 THEN DD1 = 49 :DD2 = 75 :DD3 = 69 :DD4 = 65 :DD5 = 33 ENDIF '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 ok IF UN_DIA = 0 THEN UD1 = 62 :UD2 = 69 :UD3 = 73 :UD4 = 81 :UD5 = 62 ENDIF '1 = 000,064,127,066,000,000 ok IF UN_DIA = 1 THEN UD1 = 0 :UD2 = 64 :UD3 = 127 :UD4 = 66 :UD5 = 0 ENDIF '2 = 070,073,081,097,066,000 ok IF UN_DIA = 2 THEN UD1 = 70 :UD2 = 73 :UD3 = 81 :UD4 = 97 :UD5 = 66 ENDIF '3 = 049,075,069,065,033,000 ok IF UN_DIA = 3 THEN UD1 = 49 :UD2 = 75 :UD3 = 69 :UD4 = 65 :UD5 = 33 ENDIF '4 = 016,127,018,020,024,000 ok IF UN_DIA = 4 THEN UD1 = 16 :UD2 = 127 :UD3 = 18 :UD4 = 20 :UD5 = 24 ENDIF '5 = 057,069,069,069,039,000 ok IF UN_DIA = 5 THEN UD1 = 57 :UD2 = 69 :UD3 = 69 :UD4 = 69 :UD5 = 39 ENDIF '6 = 048,073,073,074,060,000 ok IF UN_DIA = 6 THEN UD1 = 48 :UD2 = 73 :UD3 = 73 :UD4 = 74 :UD5 = 60 ENDIF '7 = 003,005,009,113,001,000 ok IF UN_DIA = 7 THEN UD1 = 3 :UD2 = 5 :UD3 = 9 :UD4 = 113 :UD5 = 1 ENDIF '8 = 054,073,073,073,054,000 ok IF UN_DIA = 8 THEN UD1 = 54 :UD2 = 73 :UD3 = 73 :UD4 = 73 :UD5 = 54 ENDIF '9 = 030,041,073,073,006,000 ok IF UN_DIA = 9 THEN UD1 = 30 :UD2 = 41 :UD3 = 73 :UD4 = 73 :UD5 = 6 ENDIF '------------------------------------------------------------------------------- 'VAI ATÉ 2039 SOMENTE... '1 = 000,064,127,066,000,000 ok IF DEZ_ANO = 1 THEN DA1 = 0 :DA2 = 64 :DA3 = 127 :DA4 = 66 :DA5 = 0 ENDIF '2 = 070,073,081,097,066,000 ok IF DEZ_ANO = 2 THEN DA1 = 70 :DA2 = 73 :DA3 = 81 :DA4 = 97 :DA5 = 66 ENDIF '3 = 049,075,069,065,033,000 ok IF DEZ_ANO = 3 THEN DA1 = 49 :DA2 = 75 :DA3 = 69 :DA4 = 65 :DA5 = 33 ENDIF '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 ok IF UN_ANO = 0 THEN UA1 = 62 :UA2 = 69 :UA3 = 73 :UA4 = 81 :UA5 = 62 ENDIF '1 = 000,064,127,066,000,000 ok IF UN_ANO = 1 THEN UA1 = 0 :UA2 = 64 :UA3 = 127 :UA4 = 66 :UA5 = 0 ENDIF '2 = 070,073,081,097,066,000 ok IF UN_ANO = 2 THEN UA1 = 70 :UA2 = 73 :UA3 = 81 :UA4 = 97 :UA5 = 66 ENDIF '3 = 049,075,069,065,033,000 ok IF UN_ANO = 3 THEN UA1 = 49 :UA2 = 75 :UA3 = 69 :UA4 = 65 :UA5 = 33 ENDIF '4 = 016,127,018,020,024,000 ok IF UN_ANO = 4 THEN UA1 = 16 :UA2 = 127 :UA3 = 18 :UA4 = 20 :UA5 = 24 ENDIF '5 = 057,069,069,069,039,000 ok IF UN_ANO = 5 THEN UA1 = 57 :UA2 = 69 :UA3 = 69 :UA4 = 69 :UA5 = 39 ENDIF '6 = 048,073,073,074,060,000 ok IF UN_ANO = 6 THEN UA1 = 48 :UA2 = 73 :UA3 = 73 :UA4 = 74 :UA5 = 60 ENDIF '7 = 003,005,009,113,001,000 ok IF UN_ANO = 7 THEN UA1 = 3 :UA2 = 5 :UA3 = 9 :UA4 = 113 :UA5 = 1 ENDIF '8 = 054,073,073,073,054,000 ok IF UN_ANO = 8 THEN UA1 = 54 :UA2 = 73 :UA3 = 73 :UA4 = 73 :UA5 = 54 ENDIF '9 = 030,041,073,073,006,000 ok IF UN_ANO = 9 THEN UA1 = 30 :UA2 = 41 :UA3 = 73 :UA4 = 73 :UA5 = 6 ENDIF '------------------------------------------------------------------------------- ' Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec IF MES = 1 THEN 'Jan 'J = 001,063,065,064,032,000 ok M11 = 1 :M12 = 63 :M13 = 65 :M14 = 64 :M15 = 32 'a = 0120,084,084,084,032,000 ok M21 = 120 :M22 = 84 :M23 = 84 :M24 = 84 :M25 = 32 'n = 120,004,004,008,124,000 ok M31 = 120 :M32 = 4 :M33 = 4 :M34 = 8 :M35 = 124 ENDIF IF MES = 2 THEN 'Feb 'F = 001,009,009,009,127,000 ok M11 = 1 :M12 = 9 :M13 = 9 :M14 = 9 :M15 = 127 'e = 024,084,084,084,056,000 ok M21 = 24 :M22 = 84 :M23 = 84 :M24 = 84 :M25 = 56 'b = 048,072,072,080,124,000 ok M31 = 48 :M32 = 72 :M33 = 72 :M34 = 80 :M35 = 124 ENDIF IF MES = 3 THEN 'Mar 'M = 127,002,012,002,127,000 ok M11 = 127 :M12 = 2 :M13 = 12 :M14 = 2 :M15 = 127 'a = 0120,084,084,084,032,000 ok M21 = 120 :M22 = 84 :M23 = 84 :M24 = 84 :M25 = 32 'r = 008,004,004,008,124,000 ok M31 = 8 :M32 = 4 :M33 = 4 :M34 = 8 :M35 = 124 ENDIF IF MES = 4 THEN 'Apr 'A = 126,009,009,009,126,000 ok M11 = 126 :M12 = 9 :M13 = 9 :M14 = 9 :M15 = 126 'p = 008,020,020,020,124,000 ok M21 = 8 :M22 = 20 :M23 = 20 :M24 = 20 :M25 = 124 'r = 008,004,004,008,124,000 ok M31 = 8 :M32 = 4 :M33 = 4 :M34 = 8 :M35 = 124 ENDIF IF MES = 5 THEN 'May 'M = 127,002,012,002,127,000 ok M11 = 127 :M12 = 2 :M13 = 12 :M14 = 2 :M15 = 127 'a = 0120,084,084,084,032,000 ok M21 = 120 :M22 = 84 :M23 = 84 :M24 = 84 :M25 = 32 'y = 060,080,080,080,012,000 ok M31 = 60 :M32 = 80 :M33 = 80 :M34 = 80 :M35 = 12 ENDIF IF MES = 6 THEN 'Jun 'J = 001,063,065,064,032,000 ok M11 = 1 :M12 = 63 :M13 = 65 :M14 = 64 :M15 = 32 'u = 124,032,064,064,060,000 ok M21 = 124 :M22 = 32 :M23 = 64 :M24 = 64 :M25 = 60 'n = 120,004,004,008,124,000 ok M31 = 120 :M32 = 4 :M33 = 4 :M34 = 8 :M35 = 124 ENDIF IF MES = 7 THEN 'Jul 'J = 001,063,065,064,032,000 ok M11 = 1 :M12 = 63 :M13 = 65 :M14 = 64 :M15 = 32 'u = 124,032,064,064,060,000 ok M21 = 124 :M22 = 32 :M23 = 64 :M24 = 64 :M25 = 60 'l = 000,064,127,065,000,000 ok M31 = 0 :M32 = 64 :M33 = 127 :M34 = 65 :M35 = 0 ENDIF IF MES = 8 THEN 'Aug 'A = 126,009,009,009,126,000 ok M11 = 126 :M12 = 9 :M13 = 9 :M14 = 9 :M15 = 126 'u = 124,032,064,064,060,000 ok M21 = 124 :M22 = 32 :M23 = 64 :M24 = 64 :M25 = 60 'g = 060,084,084,084,024,000 ok M31 = 60 :M32 = 84 :M33 = 84 :M34 = 84 :M35 = 24 ENDIF IF MES = 9 THEN 'Sep 'S = 049,073,073,073,070,000 ok M11 = 49 :M12 = 73 :M13 = 73 :M14 = 73 :M15 = 70 'e = 024,084,084,084,056,000 ok M21 = 24 :M22 = 84 :M23 = 84 :M24 = 84 :M25 = 56 'p = 008,020,020,020,124,000 ok M31 = 8 :M32 = 20 :M33 = 20 :M34 = 20 :M35 = 124 ENDIF IF MES = 10 THEN 'Oct 'O = 062,065,065,065,062,000 ok M11 = 62 :M12 = 65 :M13 = 65 :M14 = 65 :M15 = 62 'c = 032,068,068,068,056,000 ok M21 = 32 :M22 = 68 :M23 = 68 :M24 = 68 :M25 = 56 't = 032,064,068,063,004,000 ok M31 = 32 :M32 = 64 :M33 = 68 :M34 = 63 :M35 = 4 ENDIF IF MES = 11 THEN 'Nov 'N = 127,016,008,004,127,000 ok M11 = 127 :M12 = 16 :M13 = 8 :M14 = 4 :M15 = 127 'o = 056,068,068,068,056,000 ok M21 = 56 :M22 = 68 :M23 = 68 :M24 = 68 :M25 = 56 'v = 028,032,064,032,028,000 ok M31 = 28 :M32 = 32 :M33 = 64 :M34 = 32 :M35 = 28 ENDIF IF MES = 12 THEN 'Dec 'D = 028,034,065,065,127,000 ok M11 = 28 :M12 = 34 :M13 = 65 :M14 = 65 :M15 = 127 'e = 024,084,084,084,056,000 ok M21 = 24 :M22 = 84 :M23 = 84 :M24 = 84 :M25 = 56 'c = 032,068,068,068,056,000 ok M31 = 32 :M32 = 68 :M33 = 68 :M34 = 68 :M35 = 56 ENDIF '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- LOOP_RTC_DIGITAL: VERMELHO = 1: VERDE = 0 : AZUL = 0 GOSUB TESTA_HALL if VALOR_AD > VALOR then MSG_RTC 'TESTAR VALOR DO AD NO IMÃ GOTO LOOP_RTC_DIGITAL MSG_RTC: PAUSEUS 20 for B0 = 0 TO 19 IF MN < 150 THEN BRANCHL B0,[ESP_RTC,DEZENA_HORA,UNIDADE_HORA,DP_RTC,DEZENA_MINUTO,UNIDADE_MINUTO,DP_RTC,DEZENA_SEGUNDO,UNIDADE_SEGUNDO,ESP_RTC,UNIDADE_ANO,DEZENA_ANO,VINTE,TRACO,MES3,MES2,MES1,TRACO,UNIDADE_DIA,DEZENA_DIA] ENDIF VOLTA_RTC: MN = MN + 1 NEXT B0 IF MN >= 120 THEN MN = 0 AUX = AUX + 1 IF AUX > 100 THEN AUX = 0 GOTO BANNER_MOVENDO 'MOSTRA_RELOGIO_ANALOGICO ELSE GOTO MOSTRA_RELOGIO_DIGITAL ENDIF ELSE GOTO LOOP_RTC_DIGITAL ENDIF '------------------------------------------------------------------------------- 'MOSTRA_RELOGIO_ANALOGICO: 'VERMELHO = 0: VERDE = 1 : AZUL = 1 'FOR I = 0 TO 59 ' VB[I] = 0: VC[I] = 0: VD[I] = 0 'NEXT I 'GOSUB RTC 'MINUTO_ANALOGICO = (DEZ_MIN * 10) + (UN_MIN) 'FOR I = 0 TO MINUTO_ANALOGICO ' VD[I] = 8 'NEXT 'SEGUNDO_ANALOGICO = (DEZ_SEG* 10) + (UN_SEG) 'FOR I = 0 TO SEGUNDO_ANALOGICO ' VB[I] = 2 'NEXT 'HORA_ANALOGICA = (DEZ_HORA *10) + (UN_HORA) ''------------------------------------------------------------------------------- 'IF HORARIO_VERAO = 0 THEN ' HORA_ANALOGICA = HORA_ANALOGICA + 1 ' IF HORA_ANALOGICA = 24 OR HORA_ANALOGICA = 12 THEN ' HORA_ANALOGICA = 0 ' ENDIF 'ENDIF ''------------------------------------------------------------------------------- ' IF HORA_ANALOGICA >= 12 THEN ' HORA_ANALOGICA = (HORA_ANALOGICA - 12)*5 ' ELSE ' HORA_ANALOGICA = (HORA_ANALOGICA *5) ' ENDIF ''ESSA ROTINA SERVE MELHOR P/ ANALÓGICO DE PONTEIRO ''------------------------------------------------------------------------------- ''IF MINUTO_ANALOGICO < 12 THEN ''HORA_ANALOGICA = HORA_ANALOGICA ''ENDIF ''IF MINUTO_ANALOGICO > 11 AND MINUTO_ANALOGICO < 24 THEN ''HORA_ANALOGICA = HORA_ANALOGICA + 1 ''ENDIF ''IF MINUTO_ANALOGICO > 23 AND MINUTO_ANALOGICO < 36 THEN ''HORA_ANALOGICA = HORA_ANALOGICA + 2 ''ENDIF ''IF MINUTO_ANALOGICO > 35 AND MINUTO_ANALOGICO < 48 THEN ''HORA_ANALOGICA = HORA_ANALOGICA + 3 ''ENDIF ''IF MINUTO_ANALOGICO > 47 AND MINUTO_ANALOGICO < 60 THEN ''HORA_ANALOGICA = HORA_ANALOGICA + 4 ''ENDIF 'FOR I = 0 TO HORA_ANALOGICA '' if I//5 = 0 OR I = 0 THEN 'HABILITANDO O IF MOSTRA-SE APENAS UM LED NA HORA CORRESPONDENTE (DE 5 EM 5 MIN) ' VC[I] = 64 '' ENDIF 'NEXT 'LOOP_RTC_ANALOGICO: 'GOSUB TESTA_HALL 'if VALOR_AD > VALOR then MSG_RTC_ANALOGICO 'TESTAR VALOR DO AD NO IMÃ 'GOTO LOOP_RTC_ANALOGICO 'MSG_RTC_ANALOGICO: ' PAUSEUS 100 ' for B0 = 0 TO 59 ' IF MN < 150 THEN ' BRANCHL B0,[P45,P44,P43,P42,P41,P40,P39,P38,P37,P36,P35,P34,P33,P32,P31,P30,P29,P28,P27,P26,P25,P24,P23,P22,P21,P20,P19,P18,P17,P16,P15,P14,P13,P12,P11,P10,P9,P8,P7,P6,P5,P4,P3,P2,P1,P0,P59,P58,P57,P56,P55,P54,P53,P52,P51,P50,P49,P48,P47,P46] ' ENDIF 'VOLTA_RTC_ANALOGICO: 'MN = MN + 1 'NEXT B0 'IF MN >= 120 THEN ' MN = 0 ' AUX = AUX + 1 ' IF AUX > 180 THEN ' AUX = 0 ' GOTO BANNER_MOVENDO ' ELSE ' GOTO MOSTRA_RELOGIO_ANALOGICO ' ENDIF 'ELSE ' GOTO LOOP_RTC_ANALOGICO 'ENDIF ''------------------------------------------------------------------------------- '-------------------------------------------------------------------------------- BANNER_MOVENDO: GOSUB TESTA_HALL if VALOR_AD > VALOR then MSG_MOVENDO 'TESTAR VALOR DO AD NO IMÃ GOTO BANNER_MOVENDO MSG_MOVENDO: SELECT CASE TAB CASE 1: VERMELHO = 0: VERDE = 1 : AZUL = 0 for B0 = B2 to B3 'SEJAM BEM-VINDOS! LOOKUP B0,[000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,_ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,049,073,073,073,070,000,127,073,073,073,065,000,002,001,065,126,064,000,063,072,072,072,063,000,127,032,024,032,127,000,000,000,000,000,000,000,127,073,073,073,054,000,_ 127,073,073,073,065,000,127,032,024,032,127,000,000,008,008,008,000,000,124,002,001,002,124,000,000,065,127,065,000,000,127,016,008,004,127,000,127,065,065,034,028,000,062,065,065,065,062,000,049,073,073,073,070,000,000,000,000,125,000,000,_ 000,000,00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,_ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000],B1 PORTB = B1 : PORTC = B1: PORTD = B1: GOSUB RETARDO : PORTB = 0: PORTC = 0: PORTD = 0 next CASE 2: VERMELHO = 0: VERDE = 0 : AZUL = 1 for B0 = B2 to B3 ' CONSULTEM NOSSAS OFERTAS! ' C---------------------- O-----------------------N-----------------------S-----------------------U-----------------------L-----------------------T-----------------------E-----------------------M-----------------------BR----------------------N---------------------- ' O-----------------------S-----------------------S-----------------------A-----------------------S-----------------------BR----------------------O-----------------------F-----------------------E-----------------------R---------------------- ' T-----------------------A-----------------------S----------------------- LOOKUP B0,[000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,_ 062,065,065,065,034,000,062,065,065,065,062,000,127,016,008,004,127,000,049,073,073,073,070,000,126,001,001,001,126,000,127,001,001,001,001,000,064,064,127,064,064,000,127,073,073,073,065,000,127,032,024,032,127,000,000,000,000,000,000,000,_ 127,016,008,004,127,000,062,065,065,065,062,000,049,073,073,073,070,000,049,073,073,073,070,000,063,072,072,072,063,000,049,073,073,073,070,000,000,000,000,000,000,000,062,065,065,065,062,000,127,072,072,072,064,000,127,073,073,073,065,000,_ 127,072,076,074,049,000,064,064,127,064,064,000,063,072,072,072,063,000,049,073,073,073,070,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,_ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000],B1 PORTB = 0 : PORTC = B1: PORTD = 0: GOSUB RETARDO : PORTB = 0: PORTC = 0: PORTD = 0 next CASE 3: VERMELHO = 1: VERDE = 0 : AZUL = 0 for B0 = B2 to B3 'baterias multimarcas 'b------------------------a-----------------------t----------------------- e--------------------- 'r----------------------i------------------a------------------------s----------------------br-----------------------m----------------------u-----------------------l-------------------------t-----------------------i-------------------------- 'm----------------------a-----------------------r-----------------------c-----------------------a-----------------------s LOOKUP B0,[000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,_ 127,005,009,009,006,000,002,021,021,021,015,000,016,126,017,001,002,000,014,021,021,021,012,000,031,008,016,016,008,000,000,017,095,001,000,002,021,021,021,015,000,009,021,021,021,002,000,000,000,000,000,000,000,000,031,016,031,016,015,000,_ 030,001,001,002,031,000,000,065,127,001,000,000,016,126,017,001,002,000,000,017,095,001,000,000,031,016,031,016,015,000,002,021,021,021,015,000,031,008,016,016,008,000,014,017,017,017,002,000,002,021,021,021,015,000,009,021,021,021,002,000,_ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,_ 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000],B1 PORTB = B1 : PORTC = B1: PORTD = B1: GOSUB RETARDO : PORTB = 0: PORTC = 0: PORTD = 0 next END SELECT INC_PONTEIRO: B2 = B2 + 1: B3 = B3 + 1: AUX = 0 IF B3 > 254 THEN LOOP_MSG GOTO BANNER_MOVENDO LOOP_MSG: TAB = TAB + 1 : B2 = 0: B3 = 110: AUX = 0 IF TAB = 4 THEN FIM_MSG_RODANDO GOTO BANNER_MOVENDO FIM_MSG_RODANDO: TAB = 1 '-------------------------------------------------------------------------------- BANNER_PARADO: GOSUB TESTA_HALL if VALOR_AD > VALOR then MSG_PARADA 'TESTAR VALOR DO AD NO IMÃ GOTO BANNER_PARADO MSG_PARADA: SELECT CASE TAB CASE 1: VERMELHO = 0 : VERDE = 1: AZUL = 0 for B0 = 0 to 118 'NA PARTE DE BAIXO ESCREVE "Baterias" 'br--------------------- B---------------------- a---------------------- t---------------------- e---------------------- r---------------------- i-----------------------a-----------------------s-----------------------BR---------------------- LOOKUP B0,[000,000,000,000,000,000,127,073,073,073,054,000,002,021,021,021,015,000,016,126,017,001,002,000,014,021,021,021,012,000,031,008,016,016,008,000,000,017,095,001,000,000,002,021,021,021,015,000,009,021,021,021,002,000,000,000,000,000,000,000,_ 120,084,084,084,032,000,008,004,004,008,124,000,024,084,084,084,056,000,124,032,064,064,060,000,060,084,084,084,024,000,120,004,004,008,124,000,120,084,084,084,032,000,120,004,004,008,127,000,120,004,004,008,124,000,126,009,009,009,126,000],B1 'a----------------------'r------------------------e---------------------- u---------------------- g--------------------- n---------------------- a---------------------- h--------------------- -n--------------------- -A--------------------- 'NA PARTE DE CIMA ESCREVE: "Anhanguera" PORTB = B1 : PORTC = B1: PORTD = B1: GOSUB RETARDO : PORTB = 0: PORTC = 0: PORTD = 0 next B0 '----------------------------------------------------------------------------- CASE 2: VERMELHO = 0 : VERDE = 0: AZUL = 1 for B0 = 0 to 118 'NA PARTE DE BAIXO ESCREVE "32280880" 'br--------- 3--------------------- - 2--------------------- - 2---------------------- 8---------------------- 0---------------------- 8---------------------- 8---------------------- 0--------------------- br--------------------- LOOKUP B0,[000,000,000,066,065,081,105,070,000,000,033,067,069,073,049,000,000,033,067,069,073,049,000,000,054,073,073,073,054,000,000,062,069,073,081,062,000,000,054,073,073,073,054,000,000,054,073,073,073,054,000,000,062,069,073,081,062,000,000,000,_ 000,000,000,000,000,000,024,084,084,084,056,000,120,004,004,008,124,000,056,068,068,068,056,000,002,001,009,126,008,000,024,084,084,084,056,000,000,064,127,065,000,000,024,084,084,084,056,000,001,001,127,001,001,000,000,000,000,000,000,000],B1 'br---------------------'e--------------------- -n---------------------- o---------------------- f--------------------- e---------------------- l---------------------- e-----------------------T--------------------- BR--------------------- 'NA PARTE DE CIMA ESCREVE: "Telefone" PORTB = 0 : PORTC = B1: PORTD = B1: GOSUB RETARDO : PORTB = 0: PORTC = 0: PORTD = 0 next B0 END SELECT B0 = 0 AUX = AUX + 1 IF AUX > 200 THEN TAB = TAB + 1 AUX = 0 ENDIF IF TAB = 3 THEN TAB = 1 GOTO LOOP_1'BANNER_MOVENDO ELSE GOTO BANNER_PARADO ENDIF '------------------------------------------------------------------------------- '-------------------------------------------------------------------------------- RTC: ' Read RTC I2CRead SDApin,SCLpin,$D0,$00,[RTCSec,RTCMin,RTCHour,RTCWDay,RTCDay,RTCMonth,RTCYear,RTCCtrl] ' ' Display Time on Line 1 ' ' ---------------------- If RTCHour.6=1 then ' Work-Out 12 or 24 hour Display for Hours CounterA=(RTCHour>>4)&$01 else CounterA=(RTCHour>>4)&$03 endif CounterA=CounterA*10+(RTCHour&$0F) If RTCHour.6=1 then ' ' Display Hours appropriately for 12 or 24 hour Mode '' LCDOut #CounterA PAUSEUS 1 'NADA PIS VAI ESTAR SETADO P/ 24H else '' LCDOut #CounterA Dig 1,#CounterA Dig 0 UN_HORA = CounterA Dig 0 'eu é que coloquei pois counterA é usado depois e fode as coisas...colocando aqui e não é alterado mais!!!! DEZ_HORA = CounterA Dig 1 'eu é que coloquei..idem!!!! endif '' LCDOut ":",#(RTCMin>>4)&$0F,#RTCMin&$0F,":" '' LCDOut #(RTCSec>>4)&$0F,#RTCSec&$0F," " ' ' Display Date on Line 2 ' ' ---------------------- '' LCDOut " ",#(RTCDay>>4)&$0F,#RTCDay&$0F," " CounterB=((RTCMonth>>4)&$0F)*10+(RTCMonth&$0F) MES = CounterB 'ESSA AQUI É P/ PEGAR O MES ANTES DE TRANSFORMAR DE NOVO P/ BCD E BUSCAR AS LETRAS DO MES NA EEPROM INTERNA ...DEVE VARIAR DE 1 A 12, OU SEJA DOZE MESES '' LCDOut " 20",#(RTCYear>>4)&$0F,#RTCYear&$0F,$FE,$80 DEZ_SEG = (RTCSec>>4)&$0F 'aqui eu peguei os valores já em decimal de cada algarísmo do horário de alarme, os que nao estao aqui é pq eu já peguei lá em cima antes deles irem p/ qq subrotina que alterasse seu valor... UN_SEG = RTCSec&$0F UN_MIN = RTCMin&$0F DEZ_MIN = (RTCMin>>4)&$0F UN_DIA = RTCDay&$0F DEZ_DIA = (RTCDay>>4)&$0F UN_ANO = RTCYear&$0F DEZ_ANO = (RTCYear>>4)&$0F RETURN '---------------------------------------------------------------------------->>>>>>>>>>>>> '-------------------------------------------------------------- TESTA_HALL: ADCON0.2 = 1 'INICIA CONVERSÃO (bit-2 DO ADCON0 = "1") CONVERTENDO: If ADCON0.2 = 1 Then CONVERTENDO ' ESPERA bit-2 DO ADCON0 FICAR "0" VALOR_AD.highbyte = ADRESH 'MOVE BYTE ALTO DO RESULTADO P/ VALOR_AD VALOR_AD.lowbyte = ADRESL 'MOVE BYTE BAIXO DO RESULTADO P/ VALOR_AD 'AQUI JÁ TENHO O VALOR DA VARIÁVEL VALOR_AD RETURN '----------------------------------------------------------------- '=============================================================================== RETARDO: PAUSEUS DELAY RETURN End '------------------------------------------------------------------------------- ' LEDS LIGADOS NO PORTB DE B.0 ATÉ B.6 (A PARTE INFERIOR DO CARACTERE ESTÁ NO B.0, POIS MOTOR COM ROTAÇAO ANTI-HORÁRIA) 'SEMI-CICLO INFERIOR 'A = 063,072,072,072,063,000 'B = 127,073,073,073,054,000 'C = 062,065,065,065,034,000 'D = 127,065,065,034,028,000 'E = 127,073,073,073,065,000 'F = 127,072,072,072,064,000 'G = 062,065,073,073,047,000 'H = 127,008,008,008,127,000 'I = 000,065,127,065,000,000 'J = 002,001,065,126,064,000 'K = 127,008,020,034,065,000 'L = 127,001,001,001,001,000 'M = 127,032,024,032,127,000 'N = 127,016,008,004,127,000 'O = 062,065,065,065,062,000 'P = 127,072,072,072,048,000 'Q = 062,065,069,066,061,000 'R = 127,072,076,074,049,000 'S = 049,073,073,073,070,000 'T = 064,064,127,064,064,000 'U = 126,001,001,001,126,000 'V = 124,002,001,002,124,000 'W = 126,001,006,001,126,000 'X = 099,020,008,020,099,000 'Y = 112,008,007,008,112,000 'Z = 067,069,073,081,097,000 '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 '1 = 000,033,127,001,000,000 '2 = 033,067,069,073,049,000 '3 = 066,065,081,105,070,000 '4 = 012,020,036,127,004,000 '5 = 114,081,081,081,078,000 '6 = 030,041,073,073,006,000 '7 = 064,071,072,080,096,000 '8 = 054,073,073,073,054,000 '9 = 048,073,073,074,060,000 ', = 000,005,006,000,000,000 '* = 020,008,062,008,020,000 '! = 000,000,125,000,000,000 '? = 032,064,069,072,048,000 '% = 098,100,008,019,035,000 '& = 054,073,085,034,005,000 '$ = 018,042,127,042,036,000 '# = 020,127,020,127,020,000 '------------------------------------------------------------------------------- 'a = 002,021,021,021,015,000 'b = 127,005,009,009,006,000 'c = 014,017,017,017,002,000 'd = 014,017,017,009,127,000 'e = 014,021,021,021,012,000 'f = 008,063,072,064,032,000 'g = 012,021,021,021,030,000 'h = 127,008,016,016,015,000 'i = 000,017,095,001,000,000 'j = 002,001,017,094,016,000 'k = 127,004,010,017,000,000 'l = 000,065,127,001,000,000 'm = 031,016,031,016,015,000 'n = 031,008,016,016,015,000 'o = 014,017,017,017,014,000 'p = 031,020,020,020,008,000 'q = 008,020,020,012,031,000 'r = 031,008,016,016,008,000 's = 009,021,021,021,002,000 't = 016,126,017,001,002,000 'u = 030,001,001,002,031,000 'v = 028,002,001,002,028,000 'w = 030,001,006,001,030,000 'x = 017,010,004,010,017,000 'y = 024,005,005,005,030,000 'z = 017,019,021,025,017,000 '=============================================================================== 'SEMI-CICLO SUPERIOR 'br = 000,000,000,000,000,000 ok 'A = 126,009,009,009,126,000 ok 'B = 054,073,073,073,127,000 ok 'C = 034,065,065,065,062,000 ok 'D = 028,034,065,065,127,000 ok 'E = 065,073,073,073,127,000 ok 'F = 001,009,009,009,127,000 ok 'G = 122,073,073,065,062,000 ok 'H = 127,008,008,008,127,000 ok 'I = 000,065,127,065,000,000 ok 'J = 001,063,065,064,032,000 ok 'K = 065,034,020,008,127,000 ok 'L = 064,064,064,064,127,000 ok 'M = 127,002,012,002,127,000 ok 'N = 127,016,008,004,127,000 ok 'O = 062,065,065,065,062,000 ok 'P = 006,009,009,009,127,000 ok 'Q = 094,033,081,065,062,000 ok 'R = 070,041,025,009,127,000 ok 'S = 049,073,073,073,070,000 ok 'T = 001,001,127,001,001,000 ok 'U = 063,064,064,064,063,000 ok 'V = 031,032,064,032,031,000 ok 'W = 063,064,048,064,063,000 ok 'X = 099,020,008,020,099,000 ok 'Y = 007,008,112,008,007,000 ok 'Z = 067,069,073,081,097,000 ok '------------------------------------------------------------------------------- '0 = 062,069,073,081,062,000 ok '1 = 000,064,127,066,000,000 ok '2 = 070,073,081,097,066,000 ok '3 = 049,075,069,065,033,000 ok '4 = 016,127,018,020,024,000 ok '5 = 057,069,069,069,039,000 ok '6 = 048,073,073,074,060,000 ok '7 = 003,005,009,113,001,000 ok '8 = 054,073,073,073,054,000 ok '9 = 030,041,073,073,006,000 ok ', = 000,000,048,080,000,000 ok '* = 020,008,062,008,020,000 ok '! = 000,000,095,000,000,000 ok '? = 006,009,081,001,002,000 ok '% = 098,100,008,019,035,000 ok '& = 080,034,085,073,054,000 ok '$ = 018,042,127,042,036,000 ok '# = 020,127,020,127,020,000 ok '------------------------------------------------------------------------------- 'a = 0120,084,084,084,032,000 ok 'b = 048,072,072,080,124,000 ok 'c = 032,068,068,068,056,000 ok 'd = 127,072,068,068,056,000 ok 'e = 024,084,084,084,056,000 ok 'f = 002,001,009,126,008,000 ok 'g = 060,084,084,084,024,000 ok 'h = 120,004,004,008,127,000 ok 'i = 000,064,125,068,000,000 ok 'j = 004,061,068,064,032,000 ok 'k = 000,068,040,016,127,000 ok 'l = 000,064,127,065,000,000 ok 'm = 120,004,124,004,124,000 ok 'n = 120,004,004,008,124,000 ok 'o = 056,068,068,068,056,000 ok 'p = 008,020,020,020,124,000 ok 'q = 124,024,020,020,008,000 ok 'r = 008,004,004,008,0124,000 ok 's = 032,084,084,084,072,000 ok 't = 032,064,068,063,004,000 ok 'u = 124,032,064,064,060,000 ok 'v = 028,032,064,032,028,000 ok 'w = 060,064,048,064,060,000 ok 'x = 068,040,016,040,068,000 ok 'y = 060,080,080,080,012,000 ok 'z = 068,076,084,100,068,000 ok
Thank you
Pimentel
Re: K42 and Timer Interrupts
Thanks for the explanation.
Ioannis - 28th April 2025, 19:28I misinterpreted these paragraphs. My understanding was to have ASYNC cleared and use Fosc/4.
Ioannis