Title: Watch speaks the hours Post by: o_cientista on May 15, 2012, 01:09:13 01:09 Good morning, friends!
I want to make a watch that speaks the hours with PIC and CCS C ISD25120 language, but one that is found in BASIC. I wanted to do in CCS C. because he wanted to adapt my usage. Can anyone turn this source code in CCS C? Thank you. Agui is the link of the project and the source code below: http://www.freewebs.com/glafebre/relojparlante.htm 'PIC a utilizar Device 16F871 'Frecuencia XTAL 4 'declaracion del LCD Declare LCD_TYPE 0 Declare LCD_DTPIN PORTC.4 Declare LCD_ENPIN PORTC.2 Declare LCD_RSPIN PORTC.3 Declare LCD_INTERFACE 4 Declare LCD_LINES 2 'teclado matricial Declare KEYPAD_PORT PORTD '---- DECLARACION DE LOS PINES DEL BUS I2C ------- SCL_PIN = PORTB.7 SDA_PIN = PORTB.6 'todos los puertos digitales ALL_DIGITAL true 'variables Dim tecla As Byte Dim cont As Byte Dim cont1 As Byte Dim var1 As Byte Dim segu As Byte Dim minu As Byte Dim hora As Byte Dim minu1 As Byte Dim minu2 As Byte Dim diaS As Byte Dim diaF As Byte Dim mes As Byte Dim anio As Byte Dim eeprom As Byte Dim control As Byte Dim aux As Byte Dim STRING1[10] As Byte Dim horario As Bit Symbol CE = PORTE.0 Symbol PD = PORTE.1 Symbol PR = PORTE.2 Symbol EOM = PORTC.0 TRISA = 0 DelayMS 500 cont=0 cont1=0 Cls PORTA = 0 High CE GoSub grabar_RTC 'Programa principal inicio: GoSub leer_RTC tecla = InKey Print At 1,12,DEC2 cont,"-" Print At 1,15,DEC2 cont1, Select Case tecla Case 0: 'para grabar GoSub antirebote 'antirebote de tecla GoSub grabar Case 1: 'para reproducir el msg seleccionado GoSub antirebote 'antirebote de tecla GoSub reproducir Case 2 cont1=cont1+1 GoSub antirebote 'antirebote de tecla Case 3 cont1=cont1-1 If cont1<0 Then cont1=0 EndIf GoSub antirebote 'antirebote de tecla Case 5 GoSub reproducir_HORA Case 6 cont=cont+1 GoSub antirebote Case 7 cont=cont-1 If cont<0 Then cont=0 EndIf GoSub antirebote Case 8 GoSub antirebote GoSub reproducir_HORA EndSelect GoTo inicio 'Subrutinas grabar: PORTA=cont High PD: DelayMS 10 Low PR:Low PD:High CE Print At 2,1, "LISTO " DelayMS 2000 Print At 2,1, "AHORA" Low CE DelayMS 1000 Print At 2,1, "FINALIZADO" High CE Return ' -------------------------------------------------------- reproducir: PORTA=cont1 Print At 2,1, "REPRODUCIR" High PR: Low PD: Low CE While EOM <> 0 'buble para esperar el bajo en EOM para saber Wend 'cuando ha finalizado el mensaje High CE Print At 2,1, " " Return ' -------------------------------------------------------- antirebote: While tecla<>16 'antirebote tecla=InKey Wend Return ' -------------------------------------------------------- grabar_RTC: BusOut %11010000,0,[$00] 'segundos DelayMS 50 BusOut %11010000,1,[$59] 'mitutos DelayMS 50 BusOut %11010000,2,[$10] 'horas DelayMS 50 BusOut %11010000,3,[$4] 'dia de la semana DelayMS 50 BusOut %11010000,4,[$19] 'dia del mes DelayMS 50 BusOut %11010000,5,[$07] 'mes DelayMS 50 BusOut %11010000,6,[$06] 'aņo DelayMS 50 BusOut %11010000,7,[$10] 'frec 1hz DelayMS 50 Return '--------------------------------------------------------- leer_RTC: BusIn %11010000,0,[segu] BusIn %11010000,1,[minu] BusIn %11010000,2,[hora] BusIn %11010000,3,[diaS] BusIn %11010000,4,[diaF] BusIn %11010000,5,[mes] BusIn %11010000,6,[anio] Print At 1,1, HEX2 hora,":",HEX2 minu,":",HEX2 segu," " If diaS=$1 Then Print At 2,1, "Dom." If diaS=$2 Then Print At 2,1, "Lun." If diaS=$3 Then Print At 2,1, "Mar." If diaS=$4 Then Print At 2,1, "Mie." If diaS=$5 Then Print At 2,1, "Jue." If diaS=$6 Then Print At 2,1, "Vie." If diaS=$7 Then Print At 2,1, "Sab." Print At 2,6,HEX2 diaF,"/" Print At 2,11," /20",HEX2 anio If mes=$1 Then Print At 2,9, "Ene" If mes=$2 Then Print At 2,9, "Feb" If mes=$3 Then Print At 2,9, "Mar" If mes=$4 Then Print At 2,9, "Abr" If mes=$5 Then Print At 2,9, "May" If mes=$6 Then Print At 2,9, "Jun" If mes=$7 Then Print At 2,9, "Jul" If mes=$8 Then Print At 2,9, "Ago" If mes=$9 Then Print At 2,9, "Sep" If mes=$10 Then Print At 2,9, "Oct" If mes=$11 Then Print At 2,9, "Nov" If mes=$12 Then Print At 2,9, "Dic" Return reproducir_HORA: GoSub leer_RTC '--------------- son cont1=21 GoSub reproducir DelayMS 100 '--------------- las cont1=22 GoSub reproducir DelayMS 100 '--------------- HORAS If hora>=10 And hora<32 Then hora=hora-6 EndIf If hora>=32 And hora<48 Then '20 hora=hora-12 EndIf If hora>12 Then hora=hora-12 horario=1 Else horario=0 EndIf cont1=hora GoSub reproducir DelayMS 100 '--------------- AM/PM If horario=1 Then cont1=24 Else cont1=23 EndIf GoSub reproducir DelayMS 100 '--------------- Y cont1=20 GoSub reproducir DelayMS 100 '--------------- MINUTOS If minu>=10 And minu<32 Then '10 minu=minu-6 EndIf If minu>=32 And minu<48 Then '20 minu=minu-12 EndIf If minu>=48 And minu<64 Then '30 minu=minu-18 EndIf If minu>=64 And minu<80 Then '40 minu=minu-24 EndIf If minu>=80 And minu<96 Then '50 minu=minu-30 EndIf Select Case minu Case 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 cont1=minu GoSub reproducir Case Else minu2=Dig minu, 1 minu2=minu2*10 cont1=minu2 Select Case cont1 Case 20 cont1=16 Case 30 cont1=17 Case 40 cont1=18 Case 50 cont1=19 EndSelect GoSub reproducir DelayMS 100 '------------------- If minu<>20 And minu<>30 And minu<>40 And minu<>50 Then cont1=20 GoSub reproducir DelayMS 100 '------------------- minu1=Dig minu, 0 cont1=minu1 GoSub reproducir EndIf EndSelect DelayMS 100 '--------------- MINUTOS (PALABRA) cont1=25 GoSub reproducir Return End Title: Re: Watch speaks the hours Post by: metal on May 19, 2012, 11:22:02 23:22 google is your friend (https://www.google.jo/search?q=ccs+ds1307&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a#hl=en&gs_nf=1&pq=ds1307%20pic%20css%20code&cp=15&gs_id=b&xhr=t&q=ds1307+pic+css&pf=p&safe=off&client=firefox-a&hs=NDt&rls=org.mozilla:en-US%3Aofficial&sclient=psy-ab&oq=ds1307+pic+css+&aq=f&aqi=&aql=&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=7241aaeb6c9dc2d2&biw=1440&bih=707)
|