Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
04.11.2008, 12:59
|
|
Прописка
Регистрация: 07.10.2006
Сообщений: 108
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
День получить вроде просто :
Код:
|
lcd_puts(s);
rr[6] = rr[6]&0x3F;
sprintf(s,"Data %X:%X",rr[5],rr[6]); //отображаем дату
lcd_gotoxy(4,1);
lcd_puts(s); |
Прикрепленный файл: 6009109.zip
|
|
|
|
04.11.2008, 13:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от Vov123
|
В даташите на PCF8583 указано-регистр 05h биты 6 и 7 отвечают за год,бит 4 и 5 за десятки дней,бит 0-4 за единицы дней.Вот мой вопрос и был,как вы ответили-"воспользоваться библиотекой и преобразованиями".Это я и сам знаю,не знаю-КАК?
По поводу флага "mask" вообще интересная штука получается-при его включении часы не работают.Если не верите,попробуйте,ведь проект я к чему прикрепил.
|
Ясно. Тогда по порядку. Имеется переменная unsigned char x. В ней год и дата(день месяца) оптом. ![Валяюсь от смеха](images/smilies/icon_biggrin.gif) Есть еще две переменных такого же типа y и d, в них мы хотим получить год и день соответственно.
Код:
|
y = x ›› 6; // в y год
d = bcd2bin(x & 0x3F); // в d день |
Ну и в начале модуля должно быть #include ‹bcd.h›
|
|
|
|
04.11.2008, 13:20
|
|
Вид на жительство
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
|
За подсказку большое спасибо.
Принцип понятен и даже всё работает,только число надо 0x1F.
|
|
|
|
04.11.2008, 13:27
|
|
Вид на жительство
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
|
Может кому понадобится готовый рабочий макет,а проц. можно взять любой из ATMEGA
Прикрепленный файл: 9564785.rar
|
|
|
|
04.11.2008, 13:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от Vov123
|
За подсказку большое спасибо.
Принцип понятен и даже всё работает,только число надо 0x1F.
|
Если будет 0x1F то надо изменять мировые принципы исчесления даты. Потому что последним числом в любом месяце будет 19-ое
|
|
|
|
04.11.2008, 17:03
|
|
Частый гость
Регистрация: 20.07.2006
Сообщений: 37
Сказал спасибо: 2
Сказали Спасибо 7 раз(а) в 4 сообщении(ях)
|
Супер. Пока меня "не было" тут столько всего интересного появилось. to Vov123 спасибо за помощь, Вы мне помогли. Я тоже попробовал посмотреть Ваш проект, посмотрите в прикрепленном файле. Хотя, может быть я малость запоздал, здесь уже многие написали свои варианты.
Прикрепленный файл: 85404.rar
|
|
|
|
05.11.2008, 13:23
|
|
Частый гость
Регистрация: 20.07.2006
Сообщений: 37
Сказал спасибо: 2
Сказали Спасибо 7 раз(а) в 4 сообщении(ях)
|
Сообщение от sasareccer
|
Супер. Пока меня "не было" тут столько всего интересного появилось. to Vov123 спасибо за помощь, Вы мне помогли. Я тоже попробовал посмотреть Ваш проект, посмотрите в прикрепленном файле. Хотя, может быть я малость запоздал, здесь уже многие написали свои варианты.
|
Упс, ошибочка махонькая в моём предыдущем посте. Не учел, что у буржуев неделя начинается не с ПОНЕДЕЛЬНИКА, а с ВОСКРЕСЕНЬЯ, поэтому строку
Код:
|
unsigned char *w[7]={"понед","вторн","среда","четвг","пятнц","субот","воскр"}; |
надо написать вот так:
Код:
|
unsigned char *w[7]={"воскр","понед","вторн","среда","четвг","пятнц","субот"}; |
и тогда день недели будет правильно отображаться. Сорри за доставленные неудобства
Прикрепленный файл: 85404.rar
|
|
|
|
05.11.2008, 14:27
|
|
Вид на жительство
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
|
kison,опять моя невнимательность меня подвела,извините.0x1F-правильно,т.к.в регистре 05h не два последних бита-год,а три день недели.
Вам,sasareccer,моя благодарность,то что мне и было надо.
|
|
|
|
11.05.2009, 16:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
А разве нельзя в CVAVR использовать библиотеку:
Код:
|
// PCF8583 Real Time Clock functions
#include ‹pcf8583.h› |
и использовать готовые функции:
Код:
|
rtc_set_time(0, bin2bcd(hr), bin2bcd(mins), bin2bcd(sec), bin2bcd(msec)); //записать время
temp_Y = (int)Y;
bin2bcd(temp_Y);
rtc_set_date(0, bin2bcd(day), bin2bcd(M), temp_Y); //записать дату |
и
Код:
|
rtc_get_time(0, &hr, &mins, &sec, &msec); //считать время
hr=bcd2bin(hr);
mins=bcd2bin(mins);
sec=bcd2bin(sec);
rtc_get_date(0, &day, &M, &local_y); //считать дату |
|
|
|
|
07.09.2009, 10:50
|
|
Прохожий
Регистрация: 07.09.2009
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не пойму (DS1307+mega8+CodeVisionAVR)
Привет всем! Из всего этого у меня появился впрос - как редактировать время и дату в этой микрухе (DS1307)?
Последний раз редактировалось JOHN_PRESTEN; 07.09.2009 в 11:00.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:51.
|
|