Đ NG H TH I Gian TH C DS1307

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 16

c  

 
 



@ trúc AVR.

1. @  DS1307. ŒnAVR.

2. AVR và DS1307. @ c o AVR.


£ t L@D
Download ví dө
ÿao t £Œ2@

- ! 

DS1307 là c  đӗng ӗ t  gan t c (R£@ : R alt clock), k  n


 t 
gan t c ӣ đây đưӧc dùng vӟ ý ng a t  gan ty
t đӕ à con ngư đang sӱ
dөng, tìn bҵng gây,  út, g DS1307 là  t sҧn   cӫa Dallas
S condctor ( t công ty t  c Ma nt grat d Prodcts). @  này có 7
t an g  8bt c a t  gan là: gây,  út, g, t  (trong tn), ngày, t ng,
nă. Ngoà ra DS1307 còn có 1 t an g  đ k n ngõ ra  ө và 56 t an g 
trӕng có t  dùng n ư RAM. DS1307 đưӧc đӑc và g  t ông qa gao d
n nӕ t
2@ (£Œ cӫa AVR) nên c tҥo bên ngoà rt đơn gҧn. DS1307 t 
n ӣ 2 gó
SO@ và DP có 8 c ân n ư trong ìn 1.

Hìn 1. Ha gó c tҥo c  DS1307.


@ c c ân cӫa DS1307 đưӧc ô tҧ n ư sa:
  và : là 2 ngõ kt nӕ vӟ 1 t ҥc an 32.768KHz là ngӗn tҥo dao
đ ng c o c .
 : cc dương cӫa  t ngӗn n 3V nô c .
  : c ân ass c ng c o cҧ n 3V và Vcc.
 

: ngӗn c o gao d
n 2@, t ưng là 5V và dùng c ng vӟ v đ
k n. @ ú ý là n Vcc k ông đưӧc c ngӗn n ưng VBA£ đưӧc c t ì
DS1307 vүn đang oҥt đ ng (n ưng k ông g  và đӑc đưӧc).
 "#$%&:  t ngõ  ө tҥo ng vông (Sqar Œav / Ott Drv r),
tn sӕ cӫa ng đưӧc tҥo có t  đưӧc lұ trìn . N ư vұy c ân này  n ư k ông
lên qan đn c c năng cӫa DS1307 là đӗng ӗ t  gan t c, c úng ta sӁ bӓ
trӕng c ân này k  nӕ ҥc .
 '( là 2 đưng gao ng n  và dӳ l
 cӫa gao d
n 2@ à
c úng ta đã tì  trong bà £Œ cӫa AVR.
@ó t  kt nӕ DS1307 bҵng  t ҥc đ
n đơn gҧn n ư trong ìn 2.

Hìn 2. Mҥc ng dөng đơn gҧn cӫa DS1307.


@ tҥo bên trong DS1307 bao gӗ  t sӕ t àn  n n ư ҥc ngӗn, ҥc
dao đ ng, ҥc đ k n logc, ҥc gao đ
n 2@, con trӓ đa c  và c c t an
g  ( ay RAM). Do đa sӕ c c t àn  n bên trong DS1307 là t àn  n ³cng´
nên c úng ta k ông có q n  v
c k  sӱ dөng DS1307. Sӱ dөng DS1307 c ӫ
y là g  và đӑc c c t an g  cӫa c  này. Vì t  cn  rõ 2 vn đ cơ bҧn đó
là c trúc c c t an g  và c c try t c c t an g  này t ông qa gao d
n
2@. P n này c úng ta tì  c trúc c c t an g  trưӟc và c c try t
c úng sӁ tì  trong  n 2, đ k n DS1307 bҵng AVR.
N ư tô đã trìn bày, b n ӟ DS1307 có tt cҧ 64 t an g  8bt đưӧc đ n
đa c  tӯ 0 đn 63 (tӯ 000 đn 03F t o
ad cal). £y n ên, t c c t
c  có 8 t an g  đ là dùng c o c c năng ³đӗng ӗ´ (tô sӁ gӑ là R£@) còn lҥ
56 t an g  bӓ trông có t  đưӧc dùng c a bn tҥ n ư RAM n ӕn. Bҧy
t an g  đ tên c a t ông tn v t  gan cӫa đӗng ӗ bao gӗ: gây
(SE@ONDS),  út (MNUE£S), g (HOURS), t  (DAY), ngày (DA£E), t ng
(MON£H) và nă (YEAR). V
c g  g tr vào 7 t an g  này tương đương vӟ
v
c ³cà đһt´ t  gan k ӣ đ ng c o R£@. V
c đӑc g tӯ 7 t an g  là đӑc t 
gan t c à c  tҥo ra. Ví dө, lúc k ӣ đ ng c ương trìn , c úng ta g  vào
t an g  ³gây´ g tr 42, sa đó 12s c úng ta đӑc t an g  này, c úng ta t 
đưӧc g tr 54. £ an g  t  8 (@ON£ROL) là t an g  đ k n ng ngõ ra
SQŒ/OU£ (c ân 6). £y n ên, do c úng ta k ông dùng c ân SQŒ/OU£ nên có
t  bӓ qa t an g  t  8. £ c c b n ӟ cӫa DS1307 đưӧc trìn bày trong ìn
3.

Hìn 3. £ c c b n ӟ cӫa DS1307.


Vì 7 t an g  đ tên là qan trӑng n t trong oҥt đ ng cӫa DS1307, c úng
ta sӁ k ҧo s t c c t an g  này  t c c c  tt. £rưӟc t ãy qan s t t c c
t o tӯng bt cӫa c c t an g  này n ư trong ìn 4.

Hìn 4. £ c c c c t an g  t  gan.
Đ đ tên cn c ú ý là g tr t  gan lư trong c c t an g  t o dҥng
B@D. B@D là vt tҳt cӫa cө tӯ Bnary@od d D cal, tҥ dc là c c sӕ t ұ
 ân t o ã n   ân. Ví dө bҥn ӕn cà đһt c o t an g  MNU£ES g tr
42. N qy đ 42 sang ã t ұ lөc  ân t ì c úng ta t  đưӧc 42=02A. £ o
c c  t ông t ưng c úng ta c  cn g n MNU£ES=42 oһc
MNU£ES=02A, ty n ên vì c c t an g  này c a g tr B@D nên ӑ
c y
n sӁ k c, tô sӁ dn gҧ bҵng ìn 5.

Hìn 5. Sӕ B@D.
Vӟ sӕ 42, trưӟc t nó đưӧc t c t àn 2 c ӳ sӕ (dgt) 4 và 2. Mӛ c ӳ sӕ sa
đó đưӧc đ sang ã n   ân 4bt. @ ӳ sӕ 4 đưӧc đ sang ã n   ân 4bt là
0100 trong k  2 đưӧc đ t àn 0010. ÿ  ã n   ân cӫa 2 c ӳ sӕ lҥ c úng ta
t  đưӧc ӕt sӕ 8 bt, đó là sӕ B@D. Vӟ trưng ӧ này, sӕ B@D t  đưӧc là
01000010 (n   ân) = 66. N ư vұy, đ đһt sӕ  út 42 c o DS1307 c úng ta cn
g  vào t an g  MNU£ES g tr 66 (ã B@D cӫa 42). £t cҧ c c  n  lұ
trìn ay t an g  cӫa c  đ k n đ sӱ dөng ã n   ân t ông t ưng,
k ông  ҧ ã B@D, do đó c úng ta cn vt c c c ương trìn con đ qy đ tӯ sӕ
t ұ n   ân ( oһc t ұ  ân t ưng) sang B@D,  n này sӁ đưӧc trìn bày
trong lúc lұ trìn gao t vӟ DS1307. £ oҥt n ìn, ӑ ngư đ c o rҵng sӕ
B@D c  là vn đn t ê rҳc rӕ, ty n ên sӕ B@D rt có ư đ trong v
c
n t  n t là k  n t  tӯng c ӳ sӕ n ư n t  bҵng LED 7 đoҥn c ng ҥn.
Qay lҥ ví dө 42  út, gҧ sӱ c úng ta dùng 2 LED 7đoҥn đ 
n t  2 c ӳ sӕ
cӫa sӕ  út. K  đӑc t an g  MNU£ES c úng ta t  đưӧc g tr 66 (ã B@D
cӫa 42), do 66=01000010 (n   ân), đ n t  c úng ta c  cn dùng  ương
  t c bt t ông t ưng đ t c sӕ 01000010 t àn 2 n ó 0100 và 0010 (t c
bҵng to n tӱ s t ³>>´ cӫa @ oһc nstrcton LSL, LSR trong as) và t trc
t 2 n ó này ra LED vì 0100 = 4 và 0010 =2, rt n an c óng. £ ұ c í, n
c úng ta nӕ 2 LED 7đoҥn trong cùng 1 POR£, v
c t c ra tӯng dgt là k ông
cn t t, đ n t  cҧ sӕ, c  cn t trc t ra POR£. N ư vұy, vӟ sӕ B@D,
v
c t c và n t  dgt đưӧc t c 
n rt d dàng, k ông cn t c 
n  
c a (rt tӕn t  gan t c t ) c o cơ sӕ 10, 100, 1000 n ư trong trưng ӧ sӕ
t ұ  ân.
)*+ ,% -: t an g  này là t an g  đ tên trong b n ӟ
cӫa DS1307, đa c  cӫa nó là 000. Bӕn bt t  cӫa t an g  này c a ã B@D
4bt cӫa c ӳ sӕ àng đơn v cӫa g tr gây. Do g tr cao n t cӫa c ӳ sӕ àng
c өc là 5 (k ông có gây 60 !) nên c  cn 3 bt (c c bt SE@ONDS6:4) là có t 
ã óa đưӧc (sӕ 5 =101, 3 bt). Bt cao n t, bt 7, trong t an g  này là 1 đ
k n có tên @H (@lock alt ± tr o đӗng ӗ), n bt này đưӧc s t bҵng 1 b dao
đ ng trong c  b vô 
 óa, đӗng ӗ k ông oҥt đ ng. Vì vұy, n t t t  ҧ
r s t bt này ӕng 0 ngay tӯ đ.
!.+/-&, -: có đa c  001, c a g tr  út cӫa đӗng ӗ.
£ương t t an g  SE@ONDS, c  có 7 bt cӫa t an g  này đưӧc dùng lư ã
B@D cӫa  út, bt 7 lôn lôn bҵng 0.
+0%&1 -: có t  nó đây là t an g   c tҥ n t trong
DS1307. £ an g  này có đa c  002. £rưӟc t 4bts t  cӫa t an g  này
đưӧc dùng c o c ӳ sӕ àng đơn v cӫa g. Do DS1307 ӛ trӧ 2 loҥ
t ӕng n
t  g (gӑ là od ) là 12 (1 đn 12 ) và 24 (1 đn 24 ) g, bt6 (à gr n
trong ìn 4)  c lұ
t ӕng g. N bt6=0 t ì
t ӕng 24 đưӧc c ӑn, k  đó
2 bt cao 5 và 4 dùng ã óa c ӳ sӕ àng c өc cӫa g tr g. Do g tr lӟn n t
cӫa c ӳ sӕ àng c өc trong trưng ӧ này là 2 (=10, n   ân) nên 2 bt 5 và 4 là
đӫ đ ã óa. N bt6=1 t ì
t ӕng 12 đưӧc c ӑn, vӟ trưng ӧ này c  có
bt 4 dùng ã óa c ӳ sӕ àng c өc cӫa g, bt 5 (à orang trong ìn 4) c 
b trong ngày, AM oһc PM. Bt5 =0 là AM và bt5=1 là PM. Bt 7 lôn bҵng 0.
(t t k này ơ dӣ, n d n 2 bt od và AP sang 2 bt 7 và 6 t ì sӁ đơn
gҧn ơn).
2+ 3*-: nҵ ӣ đa c 003. £ an g 
DAY c  ang g tr tӯ 1 đn 7 tương ng tӯ @ ӫ n ұt đn t  7 trong 1 tn. Vì
t , c  có 3 bt t  trong t an g  này có ng a.
@ c t an g  còn lҥ có c trúc tương t, , c a ngày trong t ng (1 đn
31), /%0c a t ng (1 đn 12) và ,1 c a nă (00 đn 99). @ ú ý,
DS1307 c  dùng c o 100 nă, nên g tr nă c  có 2 c ӳ sӕ,  n đ cӫa nă
do ngư dùng t t ê vào (ví dө 20).
Ngoà c c t an g  trong b n ӟ, DS1307 còn có  t t an g  k c nҵ
rêng gӑ là
456
7*56
7(Addr ss R gst r). ÿ tr cӫa
t an g  này là đa c  cӫa t an g  trong b n ӟ à ngư dùng ӕn try cұ.
ÿ tr cӫa t an g  đa c  (tc đa c  cӫa b n ӟ) đưӧc s t trong l
n Œrt à
c úng ta sӁ k ҧo s t trong  n t t o, AVR và DS1307. £ an g  đa c 
đưӧc tô tô đӓ trong ìn 6, c trúc DS1307.
Hìn 6. @ trúc DS1307.
-- 1( 
P n này tô ưӟng dүn lұ trìn đ k n và gao t vӟ DS1307 bҵng
AVR, dùng ŒnAVR. Do DS1307 oҥt đ ng n ư  t Slav 2@, bҥn n t t t
 ҧ đӑc lҥ ³Bà 8  ÿao t £Œ2@´, n t là là 2 c  đ Mast r (S nd và
R v v ). £ô sӁ k ông đ cұ lҥ toàn b gao d
n 2@ n ưng tó tҳt c c t c

n vӟ AVR n ư sa: đ t c 
n c c gӑ ӣ c  đ Mast r, AVR sӁ gӣ đ
k
n S£AR£, t t o là 7 bt đa c  Slav (SLA) +1 bt Œrt /R ad, k đn là
q trìn đӑc ay g  dӳ l
 gӳa Mast r và Slav bҵng c c byt dӳ l
 8 bt (có
t  c  1 byt oһc 1 dãy byt s), c sa ӛ byt sӁ có 1 bt A@K oһc NO£ A@K.
@ c gӑ kt t úc vӟ v
c Mast r  t đ k
n S£OP. @ ӛ  t q trìn , sӁ
có 1 ³cod ´ đưӧc sn ra trong t an g  trҥng t  £ŒSR, k tra g tr cod
này đ bt q trìn gao t có t àn công k ông. Bҥn cn n ơ dãy cod t àn
công k  Mast r tryn dӳ l
 là: 008 > 018 > 028 > >028. Và dãy cod
t àn công k  Mast r tryn dӳ l
 là 008  > 040  > 050 > >050 >
058. Nҳ đưӧc c c g  và đӑc cӫa AVR Mast r là bҥn đã nҳ đưӧc 50% c c
gao t vӟ DS1307, 50% còn lҥ c úng ta  ҧ  c c bӕ trí dãy dӳ l
 cӫa
rêng DS1307. Hãy t o dõ  n t t o..
Vì DS1307 là  t Slav 2@ nên c  có 2 od (c  đ ) oҥt đ ng gao t
vӟ c  này. Ha od cӫa DS1307 bao gӗ Data Œrt (tӯ AVR đn DS14307)
và Data R ad (tӯ DS1307 vào AVR). Mod Data Œrt đưӧc dùng k   c lұ g
tr ban đ c o c c t an g  t  gan oһc dùng đ can c n t  gan. £rong
c  đ này, AVR là 1 Mast r tryn dӳ l
 đn DS1307 (Slav n ұn dӳ l
).
Mod Data R ad đưӧc sӱ dөng k  đӑc t  gan tӯ đӗng ӗ DS1307 vào AVR đ
n t  oһc so s n .£rong c  đ này, AVR là Mast r n ұn dӳ l
 và DS1307
là Slav tryn dӳ l
. Hìn 7 ô tҧ c trúc dӳ l
 trong c  đ Data Œrt .

Hìn 7. @  đ Data Œrt .


£rưӟc t ãy nó v đa c  Slav Addr ss (SLA) cӫa DS1307 trong ҥng 2@.
N ư c úng ta đ bt, trên ҥng 2@ ӛ t t b sӁ có  t đa c  rêng gӑ là
SLA. SLA là con sӕ 7 bt, n ư t  t o lý t yt sӁ có tӕ đa 128 t t b trong 1
ҥng 2@. @  DS1307 là  t 2@ Slav nên cũng có  t đa c  SLA, g tr
này đưӧc s t cӕ đn là 1101000 n   ân, ay 068 t ұ lөc  ân. Do SLA cӫa
DS1307 cӕ đn nên trong 1 ҥng 2@ sӁ k ông t  tӗn tҥ cùng lúc 2 c  này
(đ này t c s k ông cn t t) n ưng có t  tӗn tҥ c c t t b 2@ k c oһc
tӗn tҥ n  Mast r AVR. Qan s t ìn 7, sa k  đ k
n S£AR£ đưӧc gӣ bӣ
Mast r (AVR) sӁ là 7 bt đa c  SLA cӫa DS1307 (1101000). Do c  đ này là
Data Œrt nên bt Œ (0) sӁ đưӧc gӣ kè sa SLA. Bt A@K (A) đưӧc DS1307
trҧ v c o Mast r sa ӛ q trìn gao t. £ t o sa đa c  SLA sӁ là 1
byt c a đa c  cӫa t an g  cn try cұ (tҥ gӑ là Addr_R g). @n  ân b
t
đa c  t an g  cn try cұ và đa c  SLA. N ư tô đã đ cұ trên, đa c  cӫa
t an g  cn ty cұ sӁ đưӧc lư trong t an g  đa c  ( ay con trӓ đa c ), vì
vұy byt dӳ l
 đ tên sӁ đưӧc c a trong t an g  đa c  cӫa DS1307. Sa
byt đa c  t an g  là  t dãy c c byt dӳ l
 đưӧc g  vào b n ӟ cӫa
DS1307. Byt dӳ l
 đ tên sӁ đưӧc g  vào t an g  có đa c  đưӧc c  đn
bӣ Addr_R g, sa k  g  1 byt , Addr_R g đưӧc t đ ng tăng nên c c byt t
t o sӁ đưӧc g  lên t vào c c t an g  k sa. Sӕ lưӧng byt s dӳ l
 cn g 
do Mast r qyt đn và k ông đưӧc vưӧt q dng lương b n ӟ cӫa DS1307. Ví
dө sa k  gӣ SLA+Œ, Mast r gӣ 8 byt s gӗ 1 byt đ 000 và 7 byt s k c
t ì con trӓ đa c  sӁ trӓ đn t an g  đ tên (000 ± t an g  SE@ONDS) và
g  lên t 7 byt s vào 7 t an g  t  gan cӫa SD1307. Đây là c c à c úng
ta sӁ t c 
n trong  n lұ trìn gao t (   c ương trìn con
£Œ_DS1307_wblock  ía sa). Q trìn g  kt t úc k  Mast r  t ra đ
k
n S£OP.
@ ú ý, n sa k  gӣ byt Addr_R g, Mast r k ông gӣ c c byt s dӳ l
 à
gӣ ln đ k
n S£OP t ì k ông có t an g  nào đưӧc g . £rưng ӧ này
đưӧc dùng đ s t đa c  Addr_R g  өc vө c o q trìn đӑc. £ t o, c úng ta
k ҧo s t c c sҳ  dӳ l
 trong c  đ Data R ad,   ìn 8.

Hìn 8. @  đ Data R ad.


£rong c  đ Data R ad, bt R (1) đưӧc gӣ kè sa 7 bt SLA. Sa đó là lên
t c c byt dӳ l
 đưӧc tryn tӯ DS1307 đn AVR. Đ k c b
t trong c c
bӕ trí dӳ l
 cӫa c  đ này so vӟ c  đ Data Œrt là k ông có byt đa c 
t an g  dӳ l
 đưӧc gӣ đn. £t cҧ c c byt s t o sa SLA+R đ là dӳ l

đӑc tӯ b n ӟ cӫa DS1307. Vұy t ì dӳ l
 đưӧc đӑc bҳt đ tӯ t an nào? @â
trҧ l đó là t an g  đưӧc c  đn bӣ con trӓ đa c , g tr này đưӧc lư lҥ
trong c c ln t ao t c trưӟc đo. N ư vұy, ӕn đӑc c ín  c dӳ l
 tӯ  t đa
nào đó, c úng ta cn t c 
n q trìn g  g tr c o con trӓ đa c  trưӟc. Đ
g  g tr vào con trӓ đa c  c úng ta sӁ gӑ c ương trìn Data Œrt vӟ c  1
byt đưӧc g  sa SLA+Œ n ư  n c ú ý ӣ trên.
@ úng ta đã c n b đy đӫ đ gao t vӟ DS1307. P n t t o tô sӁ
trìn bày c ương trìn và ô  ӓng gao t gӳa AVR và DS1307. Hãy vӁ  t
ҥc đ
n bҵng Prot s n ư trong ìn 9. £rong ví dө này, ban đ c úng ta sӁ cà
đһt t  gan c o DS1307, sa đó tn àn đӑc t  gan tӯ c  đӗng ӗ này và
n t  lên 1 £ t L@D.

Hìn 9. Ví dө gao t AVR ± DS1307.


£ô sӁ c a c ương trìn t àn 2  n,  n gao t vӟ DS1307 t ông qa
2@ đưӧc vt trong l yDS1307R£@. và  n ví dө g đӑc, n t  đưӧc
vt trong l DS1307R£@_£ st.c.
Lst 1. yDS1307R£@. .
@ c  n đn ng a trưӟc dòng 35 đưӧc tríc tӯ bà £Œ nên tô k ông gҧ
t íc lҥ. @ úng ta bҳt đ tӯ dòng 36. @ó 3 c ương trìn con đưӧc vt đ gao
t gӳa AVR vӟ DS1307 đó là: g  1 dãy dӳ l
 vào DS1307 tc c ương trìn
con #- 
8
+9  : 9  ;<: 9  8=-, c ương
trìn này đưӧc vt t o c c sҳ  dӳ l
 cӫa c  đ Data Œrt trìn bày ӣ
trên. @ ương trìn con đӑc dӳ l
 tӯ DS1307 là #-  8
+9 
;<: 9 8=- và  t c ương trìn con dùng đ s t đa c  t an g  cn
try cұ có tên #- 
+9  -.
@ ương trìn con #- 
8
+9  : 9  ;<:
9 8=- nҵ tӯ dòng 54 đn dòng 77. £rong c ương trìn con này, t a sӕ
Addr là đa c  t an g  cn try cұ, Data[] là ҧng dӳ l
 sӁ g  vào DS1307
và l n là sӕ byt dӳ l
 sӁ g  (k ông tín byt Addr). Dòng 55, AVR  t ra đ
k
n S£AR£ đ bҳt 1 c c gӑ 2@, sa đó c úng ta c  c o bt £ŒN£ đưӧc s t
lên 1 ӣ dòng 56 (£ŒN£ = 1, công v
c đã đưӧc t c 
n). Dòng 57 k tra n
đ k
n S£AR£ đã gӣ t àn công ay k ông bҵng c c so s n t an g  trҥng
t  £ŒSR vӟ ³cod ´ tương ng (  lҥ ìn 2 trong bà gao t £Œ). Sa k 
S£AR£ đưӧc gӣ, dòng 59 c úng ta g n đa c  SLA+Œ c o t an g  dӳ l

£ŒDR đ  t ra trên 2@, £ŒDR=(DS1307_SLA<<1)+£Œ_Œ. £rong dòng
này, bn DS1307_SLA là SLA cӫa DS1307 đã đưӧc đn ng a trưӟc ӣ dòng 15
trong k  £Œ_Œ là bt Œ (=0) đưӧc đn ng a ӣ dòng 20. Q trìn  t 2@ c 
bҳt đ k  bt £ŒN£ đưӧc óa, dòng 60 t c 
n v
c này, sa đó  ҧ c  bt
£ŒN£ đưӧc s t lên 1 c ng tӓ q trìn  t SLA kt t úc (dòng 61). @ӕ cùng
là k tra cod trong t an g  £ŒSR đ   q trìn  t SLA có t an công,
  dòng 62 và ìn 2 trong bà gao t £Œ. @ úng ta sӁ lôn t o cơ c  này
k  là v
c vӟ £Œ cӫa AVR, do đó trong c c  n t t o tô c  gҧ t íc
n  dng trynn ұn, k ông gҧ t íc lҥ cơ c . Sa k   t SLA+Œ, c c dòng
64 đn 65  t đa c  t an g  cn try cұ (bn Addr) và sa đó  t ҧng dӳ
l
 lên t trong c c dòng 69 đn 74. @ӕ cùng là  t đ
n k
n S£OP đ kt
t úc c c gӑ.
£rong c ương trìn con g  DS1307 trìn bày ӣ trên, n t a sӕ l n=0 t ì c c
dòng 69 đn 74 k ông đưӧc t c 
n, ng a là c  có đa c  Addr đưӧc  t à
k ông có dӳ l
 nào kè t o. @ úng ta có t  dùng đһc đ này đ s t t an
g  c o q trìn đӑc. £ô đã t c ra và vt t àn 1 c ương trìn con tên
#- 
+9  - trong c c dòng tӯ 36 đn 52 dùng đ t c

n v
c s t đa c  này.
@ ương trìn con đӑc #-  8
+9  ;<:9 
8= - đưӧc trìn bày trong c c dòng tӯ 79 đn 99. £rong đó, t a sӕ Data[] là
ҧng c a dӳ l
 đӑc v, l n là sӕ byt s đӑc v, đһc b
t k ông có t a sӕ đa c 
t an g  vì đa c  này sӁ đưӧc s t rêng trưӟc k  gӑ c ương trìn con đӑc
DS1307. Dòng 84  t l
n  t SLA+£Œ_R đưӧc t c 
n, vӟ bt £Œ_R=1
(  đn ng a ӣ dòng 21), AVR đang b o c o DS1307 rҵng nó ӕn đӑc dӳ l

tӯ DS1307. Q trìn đӑc đưӧc c a t àn 2  n, trong  n 1 c úng ta đӑc l n1
byt s đ tên (  c c dòng cod tӯ 88 đn 92) và  n 2 đӑc byt cӕ cùng
(dòng 94 đn 96). @ úng ta cn t c v
c đӑc byt cӕ ra vì n n ìn lҥ c  đ
đӑc trìn bày trong ìn 8, sa ӛ byt đưӧc đӑc, Mast r  ҧ gӣ 1 bt A@K đn
DS1307, rêng byt cӕ cùng Mast r  ҧ gӣ bt NO£ A@K đ b o DS1307 rҵng
Mast r k ông ӕn đӑc t ê (so s n 2 dòng 89 và 94). @ӕ cùng, Mast r gӣ
đ k
n S£OP đ kt t úc c c gӑ.
Đ k tra c c à gao t DS1307, ãy tҥo 1 Proj ct bҵng ŒnAVR vӟ
tên gӑ DS1307R£@_£ st, tҥo l DS1307R£@_£ st và vt cod n ư trong lst 2.
Lst 2. DS1307R£@_£ st.c.
@ ương trìn d o DS1307 dùng c c à trong l DS1307R£@. trưӟc đó,
bҥn cn coy l này vào cùng t ư өc vӟ c ương trìn d o này. Đӗng t ,
c  cҧ l yL@D. vì ví dө này có n t  L@D. @ơ c  cӫa c ương trìn
d o n ư sa: trong  n t ân c ương trìn c ín , ban đ c úng ta g  c c t ông
sӕ t  gan k ӣ tҥo c o DS1307, tô c ӑn t  đ g  vào là 11 :59:55s cӫa
ngày 31, t ng 12 nă 09 (2009) c o өc đíc k tra. Vӟ t  đ này, sa
k  c ҥy c ương trìn đưӧc 5s bҥn sӁ t y c c t an t  gan trong DS1307 t
đ ng c yn sang 0 :0:0s ngày 1 t ng 1 nă 10. @ ú ý là ngӗn clock c o c 
trong ví dө này là 8MHz, £ô dùng £ r0 đ tҥo ra 1 k oҧng t  gan d lay
k oҧng 32.7s, c 10 ln ngҳt £ r0 (tc k oҧng 327s) tô sӁ đӑc DS1307 và
cұ n ұt kt qҧ lên L@D. @ c bn  ө S cond, Mnt , Hor, Day, Dat , Mont ,
Y ar đưӧc k a b o ӣ dòng 8 và 9 c a t  gan (sӕ t ұ  ân bìn t ưng). Bn
Mod c ӑn
t ӕng g, Mod =0 là
t ӕng 24 và Mod =1 là
t ӕng 12 .
Bn AP c a b trong Mod 12 , AP=0 là b s ng (AM), AP=1 là b c 
(PM). Mҧng tData[7] có 7  n tӱ trong dòng 14 c a 7 byt s tҥ tương ng vӟ 7
t an g  t  gan đ g  vào DS1307 oһc đӑc ra tӯ c  này. @ c dòng tӯ 17 đn
28 là 2 c ương trìn con đ tӯ sӕ B@D sang t ұ  ân và ngưӧc lҥ.
@ úng ta bҳt đ vӟ c ương trìn con Dslay (vod), n t  kt qҧ c a
trong ҧng tData[7] lên L@D (dòng 30 đn 64). @ c dòng tӯ 31 đn 37 dùng đӑc
g tr trong ҧng tData[7] ra c c bn đ n t , vì tData[7] c a g tr đӑc v
tӯ c c t an g  t  gan cӫa DS1307 nên nó là c c sӕ B@D, c úng ta cn dùng
à B@D2D c đ đ sang sӕ t ұ  ân trưӟc k  g n c o c c bn n ư S cond,
Mnt n t  lên L@D. Rêng vӟ t an g  HOURS (tương ng vӟ sData[2])
c úng ta cn k tra
t ӕng g, n là
t ӕng 12 t ì c  ly 5 bt đ cӫa
t an g  này g n c o bn Hor (  lҥ  n t c c c c t an g  t  gan ӣ
ìn 4), n là
t ӕng 24 t ì sӁ ly 6 bt (  2 dòng 33 và 34). @ c dòng tӯ 39
đn 64 n c c bn t  gan lên L@D. Dòng đ tên cӫa L@D dùng n g út
gây, dòng t  2 n năt ngngày. P n bӕ trí v trí c c g tr n ngư đӑc t lý
gҧ.
@ ương trìn c ín an bҳt đ tӯ dòng 66 và kt t úc ӣ dòng 106. @ c công
v
c t c 
n trong an bao gӗ k ӣ đ ng £ t L@D, k ӣ đ ng £ r0 ӣ c 
đ t ưng, Pr scal r=1024 và c o   ngҳt tràn (c c dòng tӯ 77 đn 79). Vӟ
=8MHz, g tr đn t ì ӛ ln tràn £ r0 là : (1024(Pr scal r)/8 ())*256
(MAX)=32768 s =32.7s. @ c dòng tӯ 83 đn 90 g n g tr c c bn t  gan
vào ҧng tData đ c n b g  vào DS1307. £rưӟc k  g n c c bn này c o
tData, c úng ta cn đ g tr t ұ  ân cӫa c úng t àn B@D vӟ à D c2B@D.
Dòng 91 k ӣ đ ng 2@ và dòng 92 g  7  n tӱ cӫa ҧng tData vào DS1307 vӟ
à £Œ_DS1307_wblock à c úng ta đã đn ng a trong l DS1307R£@. .
@ ú ý là đa c  bҳt đ g  là 000, vì t  7 byt s cӫa ҧng tData sӁ đưӧc g 
c ín  c vào 7 t an g  t  gan cӫa DS1307. Sa k  g  dӳ l
, cn 1 k oҧng
t  gan n ӓ đ DS1307 ӱ lí, _d lay_s(1) là đӫ. @ c dòng tӯ 97 đn 100 tn
àn đӑc t  gan tӯ DS1307 v và n t  lên L@D. Dòng 97
£Œ_DS1307_wadr(000) dùng đ s t đa c  t an g  cn try cұ trưӟc k 
đӑc, c úng ta ӕn đӑc t 7 t an g  t  gan nên sӁ s t đa c  v 0 (t an g 
SE@ONDS). P ҧ d lay 1 k oҧng n ӓ trưӟc k  t tөc đӑc DS1307 (dòng 98).
Dòng 99 c úng ta đӑc 7 t an g  t  gan vào ҧng tData và n t  lên L@D ӣ
dòng 100. @ ương trìn c ín kt t úc ӣ đây, v
c còn lҥ c o trìn  өc vө ngҳt
t c 
n.
£rong trìn  өc vө ngҳt tràn cӫa £ r0 (tӯ dòng 107 đn 125), c úng ta tăng
1 bn tҥ tên là £ _cont, đn k  nào 10 ngҳt ҧy ra (k oҧng 327s) t ì ӟ
tn àn đӑc DS1307  t ln (c c dòng tӯ 111 đn 113). Do c ӛ 327s c úng
ta đӑc DS1307 1 ln nên sӁ có trưng ӧ 2 ln đӑc cùng 1 g tr, c úng ta c 
t c 
n v
c cұ n ұt kt qҧ k  1 gây đã qa. Dòng 115 so s n kt qҧ đӑc v
vӟ bn S cond, tc là so s n kt qҧ ӟ vӟ kt qҧ cũ, n c úng k c n a sӁ
cұ n ұt g tr gây trên L@D (c c dòng tӯ 116 đn 119). @ úng ta đ bt v
c
g  lên L@D sӁ tӕn k n  t  gan, vì vұy c  nên cұ n ұt kt qҧ k  nào có
s t ay đ. Mһt k c, k  sӕ gây t ay đ t ì c c bn t  gan k c t ay đ rt
c ұ,  t c c tӕt đ tr n v
c óa và g  L@D n  ln là c 60s ãy t c 
n
à Dslay (trong à này có cҧ óa và g  c c bn t  gan). Dòng 120 gú
t c 
n ý tưӣng này, c  k  nào bn S cond v 0 (đã qa 60s) ӟ gӑ à
Dslay().
Đn đây, toàn b v
c try cұ DS1307 bҵng AVR đã oàn tt. @ c ý tưӣng ӣ
r ng ng dөng n ư t ê c c nút c n t  gan, cà đһt b o g n n ưng lҥ
c o bҥn đӑc t  t trn.

You might also like