CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

Watch speaks the hours

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
o cientista



Joined: 14 May 2012
Posts: 5

View user's profile Send private message

Watch speaks the hours
PostPosted: Mon May 14, 2012 6:38 pm     Reply with quote

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
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PostPosted: Sat May 19, 2012 3:27 am     Reply with quote

You've had no response after several days.

It's probably because there's too much effort required for no return.

The whole thing looks to be fairly standard.

I suggest you have a go yourself, and come back when you're stuck.

Mike
bkamen



Joined: 07 Jan 2004
Posts: 1615
Location: Central Illinois, USA

View user's profile Send private message

PostPosted: Sun May 20, 2012 5:43 pm     Reply with quote

Mike Walne wrote:
You've had no response after several days.

It's probably because there's too much effort required for no return.



yea....

I might also offer that it might be because this forum is intended to help people learning to program PIC's -- not do the work for them.

Cheers,

-ben
_________________
Dazed and confused? I don't think so. Just "plain lost" will do. :D
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group