ds1307

K

KSB

Guest
Я взаємодії з ds1307 16f877.Я зіткнувся з вірогідність отримання даних
/ / RTC програми
недійсним серійний ();
Int даних;
ssp_ack недійсними ();
непідписані символ отримувати (непідписані символ ел);
непідписані символ параметра [15], штат Техас;
transformm недійсними ();
вакуум основних ()
(/ / DS1307 INIT ПОЧИНАЄТЬСЯ

delay_ms (20);
STATUS.RP0 = 1;
/ / INTCON = 0xD0;
TRISC.F3 = 1 / / chng
TRISC.F4 = 1 / / chng
SSPSTAT = 0x80; / / CKE = 0 і SMP = 1; chng
SSPADD = 10;
STATUS.RP0 = 0;
SSPCON = 0x2E / / SSPEN ENABLE, MODE = 1000 (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Прохолодно" border="0" />

/ / Записати цикл починається
STATUS.RP1 = 0;
STATUS.RP0 = 0;
PIR1.SSPIF = 0;
STATUS.RP0 = 1;
SSPCON2.SEN = 1;
STATUS.RP0 = 0;
ssp_ack ();SSPBUF = 0xD0 / / CONTROLIN

ssp_ack ();
STATUS.RP0 = 0;
STATUS.RP1 = 0;
SSPBUF = 0x00; / / р-покажчик
ssp_ack ();
SSPBUF = 0x06; / / встановити секунд

ssp_ack ();
SSPBUF = 0x06; / / встановити хвилин

ssp_ack ();
SSPBUF = 0x06; / / установка годин
ssp_ack ();
SSPBUF = 0x06; / / встановити день

ssp_ack ();
SSPBUF = 0x06; / / встановити дату

ssp_ack ();
SSPBUF = 0x06;

ssp_ack ();
SSPBUF = 0x06;

ssp_ack ();
SSPCON2.PEN = 1; / / STOP біт передає

в той час як (! PIR1.SSPIF);
PIR1.SSPIF = 0;
delay_ms (20);
одержувати (0);
Параметр [0] = одержувати (0); / / сек
параметра [1] = одержувати (1); / / хв
параметра [2] = отримати (2); / / год
параметром [3] = одержувати (3); / / день
параметра [4] = одержувати (4) / / дата
параметра [5] = одержувати (5); / / місяць
параметра [6] = отримати (6) / / рік
SSPCON2.ACKDT = 1; / / Встановити значення Нак
SSPCON2.ACKEN = 1;
SSPCON2.RCEN = 1;
ssp_ack ();
delay_ms (20);
transformm ();
послідовний ();
)непідписані символ отримувати (непідписані символ ел)
(Підпис не працює символ х;
= 2;
Tx = 0;
STATUS.RP1 = 0;
STATUS.RP0 = 0;
PIR1.SSPIF = 0;
STATUS.RP0 = 1;
SSPCON2.RSEN = 1 / / стартовий біт передає
STATUS.RP0 = 0;
ssp_ack ();

SSPBUF = 0xD0 / / CONTROLIN

ssp_ack ();
STATUS.RP0 = 0;
STATUS.RP1 = 0;
SSPBUF = 0x00; / / р-покажчик
ssp_ack ();

STATUS.RP0 = 1;
SSPCON2.RSEN = 1 / / стартовий біт передає
STATUS.RP0 = 0;
ssp_ack ();

SSPBUF = 0xd1 / / CONTROLOUT
ssp_ack ();
STATUS.RP0 = 1;
SSPCON2.RCEN = 1;
ssp_ack ();
х = SSPBUF;
SSPCON2.PEN = 1; / / STOP біт передає

в той час як (! SSPIF);
PIR1.SSPIF = 0;
повернення (х);
)

ssp_ack недійсними ()
(
в той час як (! PIR1.SSPIF) / / CHNG
/ / Серіал ();
PIR1.SSPIF = 0;

)

/ / Серійний кому.
недійсним серійний ()
(INT = 0;
/ / TRISC = 0x80; / / SELECT TX (RC6), як введення і RX (RC7) на виході
для (я = 0; я <7; я )
(
SPBRG = 0x19 / / 25 DECIMAL НА 9600 Baud Rate
delay_ms (10);
TXSTA.F2 = 1 / / = 1 BRGH ВИСОКОШВІДКИСНИЙ
delay_ms (10);
TXSTA.F4 = 0; / / асинхронної передачі
delay_ms (10);
RCSTA.F7 = 1 / / Спен Serial Port ENABLE
delay_ms (10);
INTCON = 0x90; / / DISABLE ПЕРЕДАЧІ переривання
delay_ms (10);
TXSTA.F6 = 0; / / DISABLE 9BIT ПЕРЕДАЧ
delay_ms (10);
TXSTA.F5 = 1 / / ПЕРЕДАЧІ ENABLE
delay_ms (10);
TXSTA.F0 = 0 / / 9-біт ДАНИХ
delay_ms (10);
TXREG = параметр [р];
а (TXSTA.F1 == 0);
delay_ms (10);

)
)transformm недійсними ()
(Параметр [0] = ((параметр [0] i 0xf0)>> 4) * 10 (параметр [0] i 0x0F);
параметра [1] = ((параметр [1] і 0xf0)>> 4) * 10 (параметр [1] і 0x0F);
параметра [2] = ((параметр [2] і 0xf0)>> 4) * 10 (параметр [2] і 0x0F);
параметра [6] = (параметр [6] і 0xC0)>> 6;
параметром [3] = ((параметр [3] і 0x30)>> 4) * 10 (параметр [3] і 0x0F);
параметра [5] = ((параметр [5] і 0x10)>> 4) * 10 (параметр [5] і 0x0F);
)

 

Welcome to EDABoard.com

Sponsor

Back
Top