06 अप्रैल 2009 15:58 त्रुटि

G

GrandAlf

Guest
अगर कोई मेरे लिए निम्नलिखित बाहर की जाँच कर सकते हैं मैं बहुत बहुत आभारी होंगे.यह जगह ही नहीं कर सकते."" DS1302GetAll, बहुत अधिक वास्तविक मापदंडों को भूल जाओ, जब समय बुला.बहुत धन्यवाद.

////////////////////////////////////////////////// ///////////////////////////////////////
शून्य टाइम ()
(
अहस्ताक्षरित चार दूसरा, मिनट, घंटा, तिथि, महीना, सप्ताह, वर्ष;

DS1302Init ();
lcd_init ();

lcd_puts ( '\ च');

DS1302GetAll (दूसरा, मिनट, घंटा, तिथि, महीना, सप्ताह, वर्ष);

printf (lcd_puts, "% 02u /% 02u /% 02u% 02u:% 02u", तिथि, महीना, वर्ष, घंटा, मिनट);
printf ( "दिनांक% 02u /% 02u /% 02u \ n \ n rTime% 02u:% 02u
है \ n \ r", तिथि, महीना, वर्ष, घंटा, मिनट);
DelayMs (250);
)
////////////////////////////////////////////////// //////////////////////////////////////

/ / DS1302.h

# ifndef DS1302_H
DS1302_H परिभाषित #

# <AT89S8253.h> शामिल
# शामिल <intrins.h>

sbit DS1302Sclk = P0 ^ 0;
sbit DS1302Io = P0 ^ 1;
sbit DS1302Ce = P0 ^ 2;

sbit ACC0 = एसीसी ^ 0;
sbit ACC7 = एसीसी ^ 7;

typedef __SYSTEMTIME__
struct(
अहस्ताक्षरित चार दूसरा;
अहस्ताक्षरित चार मिनट;
अहस्ताक्षरित चार घंटे;
अहस्ताक्षरित चार दिनांक;
अहस्ताक्षरित चार माह;
अहस्ताक्षरित चार सप्ताह;
अहस्ताक्षरित चार वर्ष;
)
SYSTEMTIME;/ / पंजीकरण पते को पढ़ने के लिए और समष्टि की परिभाषा लिख
0x80 SEC_WRITE परिभाषित #
SEC_READ 0x81 परिभाषित #
0x82 MIN_WRITE परिभाषित #
MIN_READ 0x83 परिभाषित #
0x84 HOUR_WRITE परिभाषित #
HOUR_READ 0x85 परिभाषित #
0x86 DATE_WRITE परिभाषित #
DATE_READ 0x87 परिभाषित #
0x88 MONTH_WRITE परिभाषित #
MONTH_READ 0x89 परिभाषित #
0x8a WEEK_WRITE परिभाषित #
WEEK_READ 0x8b परिभाषित #
0x8c YEAR_WRITE परिभाषित #
YEAR_READ 0x8d परिभाषित #
0x8e WP_WRITE परिभाषित #
WP_READ 0x8f परिभाषित #
0x90 TCS_WRITE परिभाषित #
TCS_READ 0x91 परिभाषित #
/ / राम पढ़ने और स्थूल परिभाषा का पता लिखने, इस पते टैग initialization की रक्षा करने के लिए इस्तेमाल किया.
0xc0 SET_FLAG_WRITE परिभाषित #
SET_FLAG_READ 0xc1 परिभाषित #
/ / राम फट मोड में आदेश को पढ़ने के लिए और शब्द लिखना
0xfe RAM_BURST_WRITE परिभाषित #
RAM_BURST_READ 0xff परिभाषित #
/ / फट मोड रजिस्टर कमांड को पढ़ने के लिए और शब्द लिखना
0xbe CLOCK_BURST_WRITE परिभाषित #
CLOCK_BURST_READ 0xbf परिभाषित #
/ / लिखें-सेटिंग की रक्षा
WP_ON 0x80 परिभाषित #
WP_OFF 0x00 परिभाषित #
/ / स्थूल परिभाषा: DS1302 initialized किया
गया है.
IS_SET 0xAA परिभाषित #
NOT_SET 0x00 परिभाषित #
ऐसा करने के प्रयोजन के स्थूल परिभाषा के
CE / / है, IO, SCLK लाइन आपरेशन अन्य सुविधा के लिए भविष्य के स्थानांतरण के लिए
एक मंच है, लेकिन, जब हैं
/ / डिजाइन समय का पिन नंबर, उसे यह करने के लिए ले जा सकते हैं?
# SETB_DS1302_CE
परिभाषित (); DS1302Ce = 1;
# CLR_DS1302_CE
परिभाषित (); DS1302Ce = 0;
# SETB_DS1302_SCLK
परिभाषित (); DS1302Sclk = 1;
# CLR_DS1302_SCLK
परिभाषित (); DS1302Sclk = 0;
# PUT_DS1302_IO (); DS1302Io = ACC0
को परिभाषित;
# GET_DS1302_IO (); ACC7 = DS1302Io
को परिभाषित;

/ / समारोह परिभाषा
extern शून्य DS1302Init (शून्य);
extern शून्य DS1302WriteByte (अहस्ताक्षरित चार डेटा);
extern अहस्ताक्षरित चार DS1302ReadByte (शून्य);
extern शून्य DS1302SetWP (अहस्ताक्षरित चार फ्लैग);
extern शून्य DS1302GetAll (SYSTEMTIME * समय);
extern शून्य DS1302SetAll (SYSTEMTIME * समय);
# endif/ / DS1302.c

# "" DS1302.h शामिल

शून्य DS1302Init (शून्य)
(
अहस्ताक्षरित चार फ्लैग;
SYSTEMTIME TimeInit;

SETB_DS1302_CE ();
DS1302SetWP (WP_OFF);
DS1302WriteByte (SET_FLAG_READ);
फ्लैग = DS1302ReadByte ();

अगर (फ्लैग! = IS_SET)
(
DS1302WriteByte (SET_FLAG_WRITE); / / राम 0xaa, DS1302WriteByte (SET_FLAG_WRITE); पहली बाइट में राम / / में है, कि initialized किया गया है 0xaa लिखें.
DS1302WriteByte (IS_SET);
TimeInit.Second = 0x00; / / TimeInit.Second = 0x00; / / initialization समय.
TimeInit.Minute = 0x00;
TimeInit.Hour = 0x00;
TimeInit.Date = 0x12;
TimeInit.Month = 0x03;
TimeInit.Week = 0x06;
TimeInit.Year = 0x09;
DS1302SetAll (& TimeInit);
)
DS1302SetWP (WP_ON); / / DS1302SetWP (WP_ON); / / एक लिख-संरक्षित खोलो.
CLR_DS1302_CE (); / / CE?, DS1302 CLR_DS1302_CE (); / / रिलीज CE लाइन, ताकि DS1302 के misoperation से बचने के लिए.
)

शून्य DS1302SetWP (अहस्ताक्षरित चार फ्लैग)
(
DS1302WriteByte (WP_WRITE); / / DS1302WriteByte (WP_WRITE); / / शब्द आदेश लिखें.
DS1302WriteByte (फ्लैग); / / DS1302WriteByte (फ्लैग); / / रजिस्टरों की सामग्री लिखें.
)

शून्य DS1302WriteByte (अहस्ताक्षरित चार डाटा)
(
अहस्ताक्षरित चार i;
एसीसी = डाटा;
(i = 8, मैं> 0, मैं -) / / एसीसी, SCLK, एसीसी (i = 8, मैं> 0, मैं -) / /
के लिए प्रत्येक
है, और एसीसी के एक न्यूनतम लिखना तो
एक SCLK पर भेजा जाता है स्पंदित, एसीसी सही करने के लिए हर एक के लिए स्थानांतरित कर.
(
CLR_DS1302_SCLK ();
PUT_DS1302_IO ();
SETB_DS1302_SCLK ();
एसीसी = एसीसी>> 1;
)
CLR_DS1302_SCLK (); / /, CLR_DS1302_SCLK (); / / नकारात्मक क्रम में अगले बाइट तैयार करने के लिए पढ़ रहे हैं hopping, और
/ / पता नहीं क्यों, अगर कितना सही नहीं पर बयान अगले समारोह में पढ़ा,.
)

अहस्ताक्षरित चार DS1302ReadByte (शून्य)
(
अहस्ताक्षरित चार i;
(i = 8, मैं> 0, मैं -) / / IOACC, एसीसी
के लिए??के बाद
प्रत्येक IO,
तो एक नकारात्मक कूद भेजने, सर्वोच्च एसीसी को पढ़ने के लिए पढ़ें (i = 8, मैं> 0, मैं -) के लिए / / जोड़ें अगले, प्रत्येक एसीसी भी है
/ / एक सही करने के लिए स्थानांतरित कर.
(
एसीसी = एसीसी>> 1;
GET_DS1302_IO ();
SETB_DS1302_SCLK ();
CLR_DS1302_SCLK ();
)
वापसी (एसीसी);
)

शून्य DS1302SetAll (SYSTEMTIME * टाइम)
(
SETB_DS1302_CE (); / / CE, DS1302 SETB_DS1302_CE (); / / उठाता CE रेखा है, DS1302 संचालित करने के लिए तैयार है.
DS1302SetWP (WP_OFF); / / DS1302SetWP (WP_OFF); / / बंद लिखने-संरक्षित बारी.
CLR_DS1302_CE (); / / CE, DS1302 CLR_DS1302_CE (); / / रिलीज CE लाइन, ताकि DS1302 के misoperation से बचने के लिए.

SETB_DS1302_CE (); / / CE, DS1302 SETB_DS1302_CE (); / / उठाता CE रेखा है, DS1302 संचालित करने के लिए तैयार है.
DS1302WriteByte (CLOCK_BURST_WRITE); / / फट मोड लिखें DS1302WriteByte (CLOCK_BURST_WRITE); / / फट मोड लिखें दर्ज करें.
DS1302WriteByte (टाइम-> द्वितीय);
DS1302WriteByte (टाइम-> मिनट);
DS1302WriteByte (टाइम-> Hour);
DS1302WriteByte (टाइम-> दिनांक);
DS1302WriteByte (टाइम-> महीना);
DS1302WriteByte (टाइम-> सप्ताह);
DS1302WriteByte (टाइम-> वर्ष);
DS1302SetWP (WP_ON); / / DS1302SetWP (WP_ON); / / एक लिख-संरक्षित खोलो.
CLR_DS1302_CE (); / / CE, DS1302????CLR_DS1302_CE (); / / रिलीज CE लाइन, ताकि DS1302 के misoperation से बचने के लिए.
)

शून्य DS1302GetAll (SYSTEMTIME * टाइम)
(
SETB_DS1302_CE (); / / CE, DS1302 SETB_DS1302_CE (); / / उठाता CE रेखा है, DS1302 संचालित करने के लिए तैयार है.
DS1302WriteByte (CLOCK_BURST_READ); / / फट मोड पढ़ें?DS1302WriteByte (CLOCK_BURST_READ); / / फट मोड पढ़ें
दर्ज करें.
समय> द्वितीय = DS1302ReadByte ();
समय> Minute = DS1302ReadByte ();
समय> घंटा = DS1302ReadByte ();
समय> दिनांक = DS1302ReadByte ();
समय> महीना = DS1302ReadByte ();
समय> सप्ताह = DS1302ReadByte ();
समय> वर्ष = DS1302ReadByte ();
CLR_DS1302_CE (); / / CE?, DS1302 CLR_DS1302_CE (); / / रिलीज CE लाइन, ताकि DS1302 के misoperation से बचने के लिए.
)

 
Jak co miesiąc NetMarketShare prezentuje raport popularności systemów operacyjnych oraz przeglądarek. Od dłuższego czasu nic się nie zmienia - na czele Windows7 oraz Internet Explorer. Marzec nie przyniósł wielkich zmian.

Read more...
 

Welcome to EDABoard.com

Sponsor

Back
Top