Date post: | 19-Feb-2018 |
Category: |
Documents |
Upload: | jair-gomez |
View: | 219 times |
Download: | 0 times |
of 39
7/23/2019 Cdigo de Reloj a Tiempo Real
1/39
/*
* main implementation: use this 'C' sample to create your own application
*
*/
#include "derivative.h" /* include peripheral declarations */
//Ports
#define setPortB(! (P$B%P&$ ) ( ++ !!
#define clearPortB(! (P$B%P&$ ,) -( ++ !!
#define setPort&(! (P$&%P&$ ) ( ++ !!
#define clearPort&(! (P$&%P&$ ,) -( ++ !!
//C& i0nals
#define portC& P$C%P&$
#define output%(! if(!1P$B%P&$ ) (22222222!34else1P$B%P&$ ,)
(255555556!34
#define output%6na7le(! if(!1P$B%P&$ ) (222222228!34else1P$B%P&$ ,)
(25555555&!34
#define hi0h% (P$B%P&$ ) (22222222!!
#define low% (P$B%P&$ ,) (255555556!!
#define hi0h%6na7le (P$B%P&$ ) (222222228!!
#define low%6na7le (P$B%P&$ ,) (25555555&!!
#define nns 2
#define n&ata
#define readPortB(! ((P$&%P& ,) ( ++ !! 99 !
#define nButtonPressed 2
7/23/2019 Cdigo de Reloj a Tiempo Real
2/39
#define nButton5ree
#define 7tn
//eds
#define turn$neded clearPortB(;!
#define turn$ffeded setPortB(;!
#define turn$nreened clearPortB(
#define turn$ffreened setPortB(
#define turn$nBlueed clearPort&(!
#define turn$ffBlueed setPort&(!
#define turn$n=a0entaed (turn$neded ,, turn$nBlueed!
#define turn$ff=a0entaed (turn$ffeded ,, turn$ffBlueed!//>P>>
#define turn$n?ellowed (turn$neded ,, turn$nreened!
#define turn$ff?ellowed (turn$ffeded ,, turn$ffreened!//>P>>
#define turn$nCyaned (turn$nBlueed ,, turn$nreened!
#define turn$ffCyaned (turn$ffBlueed ,, turn$ffreened!//>P>>
#define turn$n@hiteed (turn$neded ,, turn$nreened ,, turn$nBlueed!
#define turn$ff@hiteed (turn$ffeded ,, turn$ffreened ,, turn$nBlueed!//>P>>
//Aime
#define nsec 222//8D222222// 822222)sEEEEEFG=6$ P>> C$FA$> 6
6$H
#define n8;msec D22222
#define n22msed 222222
#define nmsec 222
#define nI2usec 22
/*C$=P>>F&
$ J>>B6(GK &K G8K &8! C$F > L$> P$>=>&>*/
7/23/2019 Cdigo de Reloj a Tiempo Real
3/39
#define L$>6FC6F&&$
((&8))&8C$CM6FCN22!,,(G8))G8C$CM6FCN22!,,(&))&C$CM6FCN22!,
,(G))GC$CM6FCN22!!
#define L$>>P>>&$
((&8))&8C$CM>P>N22!,,(G8))G8C$CM>P>N22!,,(&))&C$CM>P>N22!,
,(G))GC$CM>P>N22!!
#define L$>6FC6F&&$8
((&8))&8C$CM6FC8N22!,,(G8))G8C$CM6FC8N22!,,(&))&C$CM6FC8N2
2!,,(G))GC$CM6FC8N22!!
#define L$>>P>>&$8
((&8))&8C$CM>P>8N22!,,(G8))G8C$CM>P>8N22!,,(&))&C$CM>P>8N22
!,,(G))GC$CM>P>8N22!!
//&eclare Prototypes
void cf0Ports(void!3
void delay(lon0 ltime!3
void initC&(void!3
void sendCode(int CodeK int &ata!3
void sendhour(int hourK int min!3
void eloO(void!3
void 6ncendidoPermanente(void!3
void =ensaOeLora (void!3
void =ensaOeuiere8hra(void!3
void =enu&efina(void!3
void =enu&efinaLora(void!3
void =enu&efina8Lora(void!3
void =ensaOe&efinirLora(void!3
void =ensaOePro0ramarLora(void!3
void =ensaOePro0ramarLora8(void!3
void =ensaOePro0ramarLora(void!3
void =ensaOePro0ramarLoraI(void!3
void =ensaOe>larma(void!3
7/23/2019 Cdigo de Reloj a Tiempo Real
4/39
void =ensaOe>larma8(void!3
//Cursor BlinQ $ff nitialiRation
const unsi0ned char nitialiReC&ST ) 12;K 2;K 2;K 22CK 2243
unsi0ned char G ) 2 N 223
unsi0ned char & ) 2 N 223
unsi0ned char PGFA$ ) 2 N 223
unsi0ned char G8 ) 2 N 223
unsi0ned char &8 ) 2 N 223
unsi0ned char GC$CM ) 23
unsi0ned char &C$CM ) 23
unsi0ned char G8C$CM ) 23
unsi0ned char &8C$CM ) 23
unsi0ned char GC$CM6FC ) 23
unsi0ned char &C$CM6FC ) 23
unsi0ned char G8C$CM6FC ) 23
unsi0ned char &8C$CM6FC ) 23
unsi0ned char GC$CM>P> ) 23
unsi0ned char &C$CM>P> ) 23
unsi0ned char G8C$CM>P> ) 23
unsi0ned char &8C$CM>P> ) 23
unsi0ned char GC$CM6FC8 ) 'E'3
unsi0ned char &C$CM6FC8 ) 'E'3
unsi0ned char G8C$CM6FC8 ) 'E'3
7/23/2019 Cdigo de Reloj a Tiempo Real
5/39
unsi0ned char &8C$CM6FC8 ) 'E'3
unsi0ned char GC$CM>P>8 ) 'E'3
unsi0ned char &C$CM>P>8 ) 'E'3
unsi0ned char G8C$CM>P>8 ) 'E'3
unsi0ned char &8C$CM>P>8 ) 'E'3
int P>6)23
int AGF$)23
int PA$)23
int 6FA>)23
unsi0ned char Ciclo ) 3
int main(void!
1
cf0Ports(!3//C$F5G>C$F &6 A$&$ $ PG6A$ &6 =C$
initC&(!3//C$F5G>C$F FC> &6 > C&
/*>P>>F&$ $ 6& */
//EEEEEEEEEEEEE//
turn$ffeded3
turn$ffreened3
turn$ffBlueed3
//EEEEEEEEEEEEE//
=ensaOe&efinirLora(!3//P=6 =6F>H6 : "&65F> > L$> "
/*6CB6F&$ 6F P>FA>> > L$> P$ &65>GA "22:22" */
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
sendCode(nnsK 2C
7/23/2019 Cdigo de Reloj a Tiempo Real
6/39
sendCode(n&ataK G!3//2
sendCode(nnsK 2C;!3
sendCode(n&ataK &!3//2
sendCode(nnsK 2C!3
sendCode(n&ataK PGFA$!3//:
sendCode(nnsK 2CD!3
sendCode(n&ataK G8!3//2
sendCode(nnsK 2C!3
sendCode(n&ataK &8!3//2
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
for(33!
1
eloO(!3//5GFC$F PFCP> &6 P$>=>K &6 >G 6 &6J>
P=6$ > > 5GFC$F "&65F> L$>"
4
4
void delay(lon0 ltime!
1
while (ltime 9 2!
1
ltimeEE3
4
4
void initC&(void!
1
int i3
7/23/2019 Cdigo de Reloj a Tiempo Real
7/39
delay(nmsec!3
/* end initialiRation instructions */
/* oop for sendin0 each character from the array */
for(i ) 23 i + 3 iNN!
1
sendCode(nnsK nitialiReC&SiT!3 /* end initialiRation instructions */
4
4
void sendCode(int CodeK int &ata!
1
//>ssi0n a value to pin
/*LFA: @hen is K then the C& receives a data
when is 2K then the C& receives an instruction */
// nitialiRe and 6na7le with 2
low%3
low%6na7le3
//>ssi0n the value we want to send to the C&
portC& ) &ata3
//@e maQe the al0orithm to esta7lish if its an instruction we start with 2 on valueK otherwise if
its a data command we start with as 3
if (Code )) nns!
1
low%3
hi0h%6na7le3
delay(nI2usec!3
low%6na7le3
low%3
4
7/23/2019 Cdigo de Reloj a Tiempo Real
8/39
else if (Code )) n&ata!
1
hi0h%3
hi0h%6na7le3
delay(nI2usec!3
low%6na7le3
low%3
4
4
void cf0Ports(void!
1
//A$&$ $ 6$H6 &6 $ PG6A$ 6UC6PA$ >
=%CC ) =%CC%P$AB%=>M3
=%CC ) =%CC%P$AC%=>M3
=%CC ) =%CC%P$A&%=>M3
=%CC ) =%CC%P$A6%=>M3
=%CCD)(++!3//&>C
/* et pins of P$AB as P$ */
//Connected to C& ; PF
P$AC%PC2 ) P$A%PC%=GU(!3
P$AC%PC ) P$A%PC%=GU(!3
P$AC%PC8 ) P$A%PC%=GU(!3
P$AC%PC ) P$A%PC%=GU(!3
P$AC%PCI ) P$A%PC%=GU(!3
P$AC%PC ) P$A%PC%=GU(!3
P$AC%PCD ) P$A%PC%=GU(!3
P$AC%PC ) P$A%PC%=GU(!3
//C&: and 6na7le
7/23/2019 Cdigo de Reloj a Tiempo Real
9/39
P$AB%PC2 ) P$A%PC%=GU(!3 /**/
P$AB%PC ) P$A%PC%=GU(!3
P$AB%PC ) P$A%PC%=GU(!3
P$AB%PC8 ) P$A%PC%=GU(!3
//6& FA6>&$
P$AB%PC; ) P$A%PC%=GU(!3//$H$
P$AB%PC< ) P$A%PC%=GU(!3//J6&6
P$A&%PC ) P$A%PC%=GU(!3//>VG
P$A6%PC2 ) P$A%PC%=GU(!3//B$A$F &66CL>
P$A6%PC ) P$A%PC%=GU(!3//B$A$F VG6&>
P$A6%PC ) P$A%PC%=GU(!3//6FCP $ 6FC6F&&$ P6=>F6FA6
P$A6%PC ) P$A%PC%=GU(!3//6FA6
P$A6%PC2 ) P$A%PC%=GU(2!3//PF &6 &>C
//Confi0ure all PortB as outputs
P$B%P&& ) 2555555553
/*PG6A$ B PF6 ? 8 C$=$ 6FA>&>*/
P$B%P&& ,) -(++!3
P$B%P&& ,) -(++8!3
//Confi0ure all Port& as outputs
P$C%P&& ) 2555555553
//Confi0ure all Port& as outputs
P$&%P&& ) 2555555553
7/23/2019 Cdigo de Reloj a Tiempo Real
10/39
//B$A$F6 &6 =6FG C$=$ 6FA>&>
P$6%P&& ,) -(++2!3//&6
P$6%P&& ,) -(++!3//V
P$6%P&& ,) -(++!3//6FC. P.
P$6%P&& ,) -(++!3//6FA6
/*C$F5G>C$F &6 &>C*/
&>C2%C2)(++!3 /*>ctiva el &>C*/
&>C2%C2)(++D!3 /*6l voltaOe de referencia es interno*/
4
void =enu&efina(void!//P=6 =6FG G6 6 =G6A> > FC>K 5GFC$F:
P$>=> > L$> &6 FC$ &6 6$H//
1
int P>6)23
while(P>6))2!
1
if((5P$6%P&,(++!!))2!//P6GFA> 6 B$A$F &6 6FA6 6
P6$F>&$K 6FA> 6F GF 6FC6F&&$ P6=>F6FA6//
1
6ncendidoPermanente(!3
4
/**** P=6> 6CC$F CG6FA> $ =FGA$ &6 2E< =F "22:UU"****/
//>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
if((5P$6%P&,(++!! W) 2!//P6GFA> 6 B$A$F &6 6FA6 6
P6$F>&$K =6FA> 6A6 F$ 6A6 P6$F>&$ F$ 6 C>=B>> &6 =6FG//
7/23/2019 Cdigo de Reloj a Tiempo Real
11/39
1
if((5P$6%P&,(++2!! )) 2!//P6GFA> 6 B$A$F &6 &66CL>
6 P6$F>&$K 6 G=>> > $ =FGA$ 6 &6C G(GF&>&6!//
1
/*CG6FA> P>> GF&>&6*/
//EEEEEEEEEEEEEEEEEEEEEE//
GC$CMNN3
if(GC$CMW)2!
1
sendCode(nnsK 2C
sendCode(n&ataK GC$CMN22!3
delay(n8;msec!3
4
//EEEEEEEEEEEEEEEEEEEEEE//
if(GC$CM ))(2!!/* > GF&>& 6 P>$ &6 V> J>>B6 &6 GF&>& > 2 ? G=> > &C$CM(&6C6F>! */
1
/*CG6FA> P>> &6C6F>*/
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
GC$CM ) 23
sendCode(nnsK 2C
sendCode(n&ataK GC$CMN22!3
&C$CMNN3
if(&C$CM W) (D!!//J6 P>> G6 F$ 6CB> 6F >
P>FA>> &C$CM 6> > //
1
sendCode(nnsK 2C;!3
7/23/2019 Cdigo de Reloj a Tiempo Real
12/39
sendCode(n&ataK &C$CMN22!3
delay(n8;msec!3
4
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
if(&C$CM )) (D!! /* > &6C6F> 6 P>$ &6 D
6FC>V> G ? &C$CM > 2 */
1
GC$CM)23
&C$CM)23
sendCode(nnsK 2C;!3
sendCode(n&ataK &C$CMN22!3
sendCode(n&ataK GC$CMN22!3
delay(n8;msec!3
4
4
4
//>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
/****6GF&> 6CC$F CG6FA> > L$> &6 2E8I "UU:22" ****/
//BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
if((5P$6%P& , (++!! )) 2!//P6GFA> P$ 6 B$A$F VG6&>K
6 G=> > G8C$CM(6GF&> GF&>&6!//
1
/*CG6FA> P>> GF&>&6 8 */
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
G8C$CMNN3
/*P6GFA> P$ > L$> 6>$F > 8I*/
if(&8C$CM )) (8!,,(G8C$CM))I!!
7/23/2019 Cdigo de Reloj a Tiempo Real
13/39
1
G8C$CM)23
&8C$CM)23
sendCode(nnsK 2C!3
sendCode(n&ataK &8C$CMN22!3
sendCode(n&ataK G8C$CMN22!3
4
if(G8C$CMW)2!
1
sendCode(nnsK 2CD!3
sendCode(n&ataK G8C$CMN22!3
delay(n8;msec!3
4
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
if(G8C$CM ))(2!!/* > GF&>& 6 P>$ &6 < 6FC>V>
G8 ? &8 C$CM > 2*/
1
/*CG6FA> P>> &6C6F> 8*/
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
G8C$CM ) 23
sendCode(nnsK 2CD!3
sendCode(n&ataK G8C$CMN22!3
&8C$CMNN3
sendCode(nnsK 2C!3
sendCode(n&ataK &8C$CMN22!3
delay(n8;msec!3
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
4
4
7/23/2019 Cdigo de Reloj a Tiempo Real
14/39
//BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
4
else// 6 B$A$F 6FA6 5G6 P6$F>&$ >GF> J6V 6>> > 6A6
66 C$F $ &>A$ &6 > J>>B6 6F > G6 6 L>?> =$&5C>&$//
1
P>6)3//P>> > &6 @L6//
initC&(!3
/*G>&>F&$ $ &>A$ $BA6F&$ &6 =6FG 6F > J>>B6
&6 FC$ &6 C$FA6$ &6 6$H*/
G)GNGC$CM3
&)&N&C$CM3
G8)G8NG8C$CM3
&8)&8N&8C$CM3
GC$CM ) 23
&C$CM ) 23
G8C$CM ) 23
&8C$CM ) 23
delay(22222!3
4
4
4
void =enu&efinaLora(void!//6GF&$ =6FG &6PG6 &6 L>B6 P6$F>&$
6FA6K 5GFC$F: P$>=> > L$> &6 6FC6F&&$ &6 J6FA>&$
1
=ensaOePro0ramarLora(!3//"P$>=6 > P=6> L$> &6 6FC"//
//L$> P$ &65>GA 22:22//
7/23/2019 Cdigo de Reloj a Tiempo Real
15/39
sendCode(nnsK 2C&!3
sendCode(n&ataK GC$CMN22!3
sendCode(nnsK 2CC!3
sendCode(n&ataK &C$CMN22!3
sendCode(nnsK 2CB!3
sendCode(n&ataK PGFA$!3
sendCode(nnsK 2C>!3
sendCode(n&ataK G8C$CMN22!3
sendCode(nnsK 2C
sendCode(n&ataK &8C$CMN22!3
//==$ =6FG G6 =6FG&65F> > 6UC6PC$F &6 66 &6
6FA6K5GFC$F: C>PAG> > L$> &6 6FC6F&&$ &6 J6FA>&$//
while(P>6W)I!
1
if((5P$6%P&,(++!! W) 2!//6FA6
1
if((5P$6%P&,(++2!! )) 2!//&66CL>
1
/*CG6FA> P>> GF&>&6*/
GC$CMNN3
if(GC$CMW)2!
1
sendCode(nnsK 2C&!3
sendCode(n&ataK GC$CMN22!3
delay(n8;msec!3
7/23/2019 Cdigo de Reloj a Tiempo Real
16/39
4
if(GC$CM ))(2!!/* > GF&>& 6 P>$ &6 < (2 N 2U2!*/
1
/*CG6FA> P>> &6C6F>*/
//JG6A>G ) JG6A>G N 3
GC$CM ) 23
sendCode(nnsK 2C&!3
sendCode(n&ataK GC$CMN22!3
&C$CMNN3
if(&C$CM W) (D!!
1
sendCode(nnsK 2CC!3
sendCode(n&ataK &C$CMN22!3
delay(n8;msec!3
4
if(&C$CM )) (D!! /* > &6C6F> 6 P>$ &6 D */
1
GC$CM)23
&C$CM)23
sendCode(nnsK 2CC!3
sendCode(n&ataK &C$CMN22!3
sendCode(n&ataK GC$CMN22!3
delay(n8;msec!3
7/23/2019 Cdigo de Reloj a Tiempo Real
17/39
4
4
4
if((5P$6%P& , (++!! )) 2!//VG6&>
1
/*CG6FA> P>> GF&>&6 8*/
G8C$CMNN3
if(&8C$CM )) (8!,,(G8C$CM))I!!
1
G8C$CM)23
&8C$CM)23
sendCode(nnsK 2C
sendCode(n&ataK &8C$CMN22!3
sendCode(n&ataK G8C$CMN22!3
4
if(G8C$CMW)2!
1
sendCode(nnsK 2C>!3
sendCode(n&ataK G8C$CMN22!3
delay(n8;msec!3
4
if(G8C$CM ))(2!!/* > GF&>& 6 P>$ &6 < (2 N 2U2!*/
7/23/2019 Cdigo de Reloj a Tiempo Real
18/39
1
/*CG6FA> P>> &6C6F>*/
//JG6A>G ) JG6A>G N 3
G8C$CM ) 23
sendCode(nnsK 2C>!3
sendCode(n&ataK G8C$CMN22!3
&8C$CMNN3
sendCode(nnsK 2C
sendCode(n&ataK &8C$CMN22!3
delay(n8;msec!3
4
4
4
else//6GF 6> P>6 6 G>&>> $ &>A$ $BA6F&$ &6
=6FGKP>6) ? 8 P>> G>&> L$> 6FC ? >P> ? ? I P>> 6FC8 ? >P>8//
1
P>6NN3
//6CC$F &6 5 F$ $&6F>&> >C6F&6FA6=6FA6//
if(P>6))!//6 G>&> > L$> &6 6FC6F&&$//
1
initC&(!3
=ensaOePro0ramarLora8(!3//"P$>=> > L$> &6 >P> "//
GC$CM6FC )GC$CM3
&C$CM6FC )&C$CM 3
G8C$CM6FC )G8C$CM 3
&8C$CM6FC ) &8C$CM3
7/23/2019 Cdigo de Reloj a Tiempo Real
19/39
4
if(P>6))!//6 G>&> > L$> &6 6FC8//
1
initC&(!3
=ensaOePro0ramarLoraI(!3//"P$>=> > L$> &6 6FC8"//
GC$CM6FC8 )GC$CM3
&C$CM6FC8 )&C$CM 3
G8C$CM6FC8 )G8C$CM 3
&8C$CM6FC8 ) &8C$CM3
4
if(P>6))I!//6 G>&> > L$> &6 >P>8//
1
GC$CM>P>8 ) GC$CM3
&C$CM>P>8 )&C$CM 3
G8C$CM>P>8 )G8C$CM 3
&8C$CM>P>8 )&8C$CM 3
4
if(P>6))8!//6 G>&> > L$> &6 >P>>&$//
1
initC&(!3
delay(22222!3
=ensaOeuiere8hra(!3//"&66> P$>=> GF> 8 L>K 6FA/ $
6FCP/F$X"K &6FA$ &6 6A> 5GFC$F 6 6FCG6FA>F 5Y//
delay(22222!3
if(AGF$))!
1
=ensaOePro0ramarLora(!3//"P$>=6 > L$> &6 6FC8"//
4
GC$CM>P> ) GC$CM3
7/23/2019 Cdigo de Reloj a Tiempo Real
20/39
&C$CM>P> )&C$CM 3
G8C$CM>P> )G8C$CM 3
&8C$CM>P> )&8C$CM 3
4
/*6FC>V> J>>B6*/
GC$CM ) 23
&C$CM ) 23
G8C$CM ) 23
&8C$CM ) 23
if(AGF$W)8!// F$ >C6PA$ P$>=> GF> 6GF&> L$> G6
F$ 6CB> > L$> &65>GA "22:22"//
1
sendCode(nnsK 2C&!3
sendCode(n&ataK GC$CMN22!3
sendCode(nnsK 2CC!3
sendCode(n&ataK &C$CMN22!3
sendCode(nnsK 2CB!3
sendCode(n&ataK PGFA$!3
sendCode(nnsK 2C>!3
sendCode(n&ataK G8C$CMN22!3
sendCode(nnsK 2C
sendCode(n&ataK &8C$CMN22!3
4
delay(22222!3
7/23/2019 Cdigo de Reloj a Tiempo Real
21/39
4
4
4
void eloO(void!//5GFC$F G6 CG6FA> &6 > 22:22 > > 8: 6CC$F 6
C$=P>> > J>>B6 C$F > L$> P$>=>&> L>C6F&$ G6 6
P6F&> $ 6 >P>G6 6 J6FA>&$//
1
=enu&efina(!3
=enu&efinaLora(!3
initC&(!3
=ensaOeLora(!3//"L$>:"//
sendCode(nnsK 2CI!3
sendCode(n&ataK G!3
sendCode(nnsK 2C!3
sendCode(n&ataK &!3
sendCode(nnsK 2C8!3
sendCode(n&ataK PGFA$!3
sendCode(nnsK 2C!3
sendCode(n&ataK G8!3
sendCode(nnsK 2C2!3
sendCode(n&ataK &8!3
=ensaOe>larma(!3//=6F>H6 6F &$F&6 6 =G6A>F >
L$> P$>=>&> =6FA> A>=B6F 6 =G6A> > L$>//
/* 6 5GFC$F>=6FA$ &6 G6FA6 C$&$ 6 G> G6
=6FG&65F> ? &65F>L$>K $$ G6 6F 6A6 6 HGFA>$F $ &$ 6
6C$=6F&> 6FA6F&6 6$ 8 P=6$ C$&$ >FA6 &6 6A6*/
7/23/2019 Cdigo de Reloj a Tiempo Real
22/39
while( Ciclo )) !
1
if((&8))(8N 22!!,,(G8))(IN22!!!//5 6F &$F&6 6
6FC>V>F > J>>B6 6 6> > 8I L//
1
G ) 2 N 223
& ) 2 N 223
PGFA$ ) 2 N 223
G8 ) 2 N 223
&8 ) 2 N 223
sendCode(nnsK 2CI!3
sendCode(n&ataK G!3
sendCode(nnsK 2C!3
sendCode(n&ataK &!3
sendCode(nnsK 2C8!3
sendCode(n&ataK PGFA$!3
sendCode(nnsK 2C!3
sendCode(n&ataK G8!3
sendCode(nnsK 2C2!3
sendCode(n&ataK &8!3
4
/*CG6FA> P>> GF&>&6*/
sendCode(nnsK 2CI!3
sendCode(n&ataK G!3
7/23/2019 Cdigo de Reloj a Tiempo Real
23/39
/*C$=P6H$ 5 &$F&6 6 C$=P>>F $ J>$6
G6 J> A6F6F&$ 6 6$H(GK & K G8 ? &8! C$FCG6&> C$F >GF> L$> &6
6FC6F&&$ $ >P>>&$*/
//>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE//
if((L$>6FC6F&&$!(L$>>P>>&$!
(L$>6FC6F&&$8!(L$>>P>>&$8!!//J6>6 $ =>C$ P>> =>
F5$=>C$F $B6 > L$> &6 6FC6F&&$/>P>>&$//
1
if(L$>6FC6F&&$!
1
if(L$>>P>>&$!
1
6FA>)3
turn$ffreened3
turn$neded3//>P>> J6FA
&>C2%&>A2L )(2299;!3//>P>>
J6FA>&$
//var)23
4
else
1
if(L$>6FC6F&&$8!
1
turn$ffreened3
turn$neded3//>P>> J6FA
&>C2%&>A2L
)(2299;!3//>P>> J6FA>&$
6FA>)3
4
else
7/23/2019 Cdigo de Reloj a Tiempo Real
24/39
1
turn$ffeded3
turn$nreened3
&>C2%&>A2L
)(I2D299;!3//P6F&6 J6FA
4
4
4
if(6FA>W)!
1
if(L$>>P>>&$!
1
if(L$>6FC6F&&$!
1
turn$ffeded3
turn$nreened3
&>C2%&>A2L
)(I2D299;!3//P6F&6 J6FA
4
else
1
turn$ffreened3
turn$neded3//>P>> J6FA
&>C2%&>A2L
)(2299;!3//>P>> J6FA>&$
PA$)3
4
4
4
if(L$>6FC6F&&$8!
1
7/23/2019 Cdigo de Reloj a Tiempo Real
25/39
if(L$>>P>>&$8!
1
6FA>)83
turn$ffreened3
turn$neded3//>P>> J6FA
&>C2%&>A2L )(2299;!3//>P>>
J6FA>&$
4
else
1
if((6FA>W)!,,(6FA>W)2!!
1
turn$ffeded3
turn$nreened3//P6F&6
&>C2%&>A2L
)(I2D299;!3//P6F&6 J6FA
4
else
1
if((6FA>))2!(6FA>))!!
1
turn$ffeded3
turn$nreened3//P6F&6
&>C2%&>A2L
)(I2D299;!3//P6F&6 J6FA
4
else
1
turn$ffreened3
turn$neded3//>P>>
J6FA
7/23/2019 Cdigo de Reloj a Tiempo Real
26/39
&>C2%&>A2L
)(2299;!3//>P>> J6FA>&$
4
4
4
4
if(6FA>W)8!
1
if(L$>>P>>&$8!
1
if(L$>6FC6F&&$8!
1
turn$ffeded3
turn$nreened3//P6F&6
&>C2%&>A2L
)(I2D299;!3//P6F&6 J6FA
4
else
1
turn$ffreened3
turn$neded3//>P>> J6FA
&>C2%&>A2L
)(2299;!3//>P>> J6FA>&$
4
4
4
if(PA$))!
1
turn$ffreened3
turn$neded3//>P>> J6FA
7/23/2019 Cdigo de Reloj a Tiempo Real
27/39
&>C2%&>A2L )(2299;!3//>P>>
J6FA>&$
4
4//if ppal
//>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE/
/
PA$)23
6FA>)23
delay(nsec!3
G ) G N 3
if(G ))(2 N 22!!/* > GF&>& 6 P>$ &6 < (2 N
2U2!*/
1
/*CG6FA> P>> &6C6F>*/
G ) 223
sendCode(nnsK 2CI!3
sendCode(n&ataK G!3
& ) & N 3
if(& W) (D N 22!!
1
sendCode(nnsK 2C!3
sendCode(n&ataK &!3
4
if(& )) (D N 22!! /* > &6C6F> 6 P>$ &6 D
*/
7/23/2019 Cdigo de Reloj a Tiempo Real
28/39
1
/*CG6FA> P>> G8*/
& ) 223
sendCode(nnsK 2C!3
sendCode(n&ataK &!3
G8 ) G8N3
if(G8 W) (2 N 22!!
1
sendCode(nnsK 2C!3
sendCode(n&ataK G8!3
if((&8))(8N 22!!,,(G8))(IN22!!!
1
G ) 2 N 223
& ) 2 N 223
PGFA$ ) 2 N 223
G8 ) 2 N 223
&8 ) 2 N 223
sendCode(nnsK 2CI!3
sendCode(n&ataK G!3
sendCode(nnsK 2C!3
sendCode(n&ataK &!3
sendCode(nnsK 2C8!3
sendCode(n&ataK PGFA$!3
sendCode(nnsK 2C!3
sendCode(n&ataK G8!3
7/23/2019 Cdigo de Reloj a Tiempo Real
29/39
sendCode(nnsK 2C2!3
sendCode(n&ataK &8!3
4
4
if(G8 )) (2 N 22!!
1
/*CG6FA> P>> &8*/
G8 ) 223
sendCode(nnsK 2C!3
sendCode(n&ataK G8!3
&8 ) &8 N 3
sendCode(nnsK 2C2!3
sendCode(n&ataK &8!3
4
4
4 //f 8I
4//@L6
4
/*EEEEEEEEEE5GFC$F6 P>> =$A> =6F>H6EEEEEEEEEEE*/
void =ensaOe&efinirLora(void!
7/23/2019 Cdigo de Reloj a Tiempo Real
30/39
1
sendCode(nnsK 2;2!3
sendCode(n&ataK '&' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK '5' !3
sendCode(n&ataK '' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK 'L' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ':' !3
4
void =ensaOePro0ramarLora(void!
1
initC&(!3
sendCode(nnsK 2;2!3
sendCode(n&ataK 'P' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
7/23/2019 Cdigo de Reloj a Tiempo Real
31/39
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK '=' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK 'L' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(nnsK 2C2!3
sendCode(n&ataK '&' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK 'C' !3
sendCode(n&ataK ':' !3
4
void =ensaOePro0ramarLora8(void!
1
initC&(!3
sendCode(nnsK 2;2!3
sendCode(n&ataK 'P' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
7/23/2019 Cdigo de Reloj a Tiempo Real
32/39
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK '=' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK 'L' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(nnsK 2C2!3
sendCode(n&ataK '&' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK 'P' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ':' !3
4
void =ensaOePro0ramarLora(void!
1
initC&(!3
sendCode(nnsK 2;2!3
sendCode(n&ataK 'P' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
7/23/2019 Cdigo de Reloj a Tiempo Real
33/39
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK '=' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK 'L' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(nnsK 2C2!3
sendCode(n&ataK '&' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK 'C' !3
sendCode(n&ataK '8' !3
sendCode(n&ataK ':' !3
4
void =ensaOePro0ramarLoraI(void!
1
initC&(!3
sendCode(nnsK 2;2!3
sendCode(n&ataK 'P' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '$' !3
7/23/2019 Cdigo de Reloj a Tiempo Real
34/39
sendCode(n&ataK '' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK '=' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK 'L' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(nnsK 2C2!3
sendCode(n&ataK '&' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK 'P' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK '8' !3
sendCode(n&ataK ':' !3
4
void =ensaOeLora(void!
1
//initC&(!3
sendCode(nnsK 2;2!3
sendCode(n&ataK 'L' !3
7/23/2019 Cdigo de Reloj a Tiempo Real
35/39
sendCode(n&ataK '$' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ':' !3
4
void =ensaOeuiere8hra(void!
1
initC&(!3
sendCode(nnsK 2;2!3
sendCode(n&ataK '&' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK 'G' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '8' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK 'L' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK 'X' !3
sendCode(nnsK 2C2!3
sendCode(n&ataK '6' !3
7/23/2019 Cdigo de Reloj a Tiempo Real
36/39
sendCode(n&ataK 'F' !3
sendCode(n&ataK 'A' !3
sendCode(n&ataK '/' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '$' !3
sendCode(n&ataK ' ' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK 'C' !3
sendCode(n&ataK 'P' !3
sendCode(n&ataK '/' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK '$' !3
/*6CC$F &$F&6 6 P6GFA> 6 &66> P$>=> GF> 6GF&>
L$>*/
while(AGF$))2!
1
if((5P$6%P&,(++!! )) 2!//6FA6/K 6 J$J6> >
6FA> 6F 6 @L6 &6 &65F>L$> $A> &$ J6C6 P>> C>PAG> >
L$>//
1
AGF$)3
4
if((5P$6%P&,(++!! )) 2!//6FCP/F$K 6 >&> &6 @L6
&6 &65F>L$> P>> P>> > 6=P6V> > C$FA> C$F 6 6$H//
1
P>6)I3
AGF$)83
initC&(!3
4
7/23/2019 Cdigo de Reloj a Tiempo Real
37/39
4
4
void =ensaOe>larma(void!
1
sendCode(nnsK 2;
sendCode(n&ataK '' !3
sendCode(n&ataK '.' !3
sendCode(n&ataK &8C$CM6FCN22!3
sendCode(n&ataK G8C$CM6FCN22!3
sendCode(n&ataK 'E' !3
sendCode(n&ataK &8C$CM>P>N22!3
sendCode(n&ataK G8C$CM>P>N22!3
sendCode(nnsK 2C
if(&8C$CM6FC8))'E'!
1
sendCode(n&ataK '8' !3
sendCode(n&ataK '.' !3
sendCode(n&ataK &8C$CM6FC8!3
sendCode(n&ataK G8C$CM6FC8!3
sendCode(n&ataK 'E' !3
sendCode(n&ataK &8C$CM>P>8!3
sendCode(n&ataK G8C$CM>P>8!3
4
else
1
sendCode(n&ataK '8' !3
sendCode(n&ataK '.' !3
sendCode(n&ataK &8C$CM6FC8N22!3
7/23/2019 Cdigo de Reloj a Tiempo Real
38/39
sendCode(n&ataK G8C$CM6FC8N22!3
sendCode(n&ataK 'E' !3
sendCode(n&ataK &8C$CM>P>8N22!3
sendCode(n&ataK G8C$CM>P>8N22!3
4
4
void 6ncendidoPermanente(void!
1
initC&(!3
sendCode(nnsK 2;2!3
sendCode(n&ataK '6' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK 'C' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK '&' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '&' !3
sendCode(n&ataK '$' !3
sendCode(nnsK 2C2!3
sendCode(n&ataK 'P' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK '' !3
sendCode(n&ataK '=' !3
sendCode(n&ataK '>' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK '6' !3
sendCode(n&ataK 'F' !3
sendCode(n&ataK 'A' !3
sendCode(n&ataK '6' !3
7/23/2019 Cdigo de Reloj a Tiempo Real
39/39
for(33!
1
turn$ffeded3
turn$nreened3//P6F&6
&>C2%&>A2L )(I2D299;!3//P6F&6 J6FA
4
4