Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Часы на PIC16F628 (Нужно переделать на общий анод.)
Часы на PIC16F628
Matrix252005 Дата: Пт, 20.07.2012, 13:25  |                                                                                                                Сообщение # 151
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Quote (xaker-sss)
Не вьеду я все равно...

Правильно!!! Эта подпрограмка это и делает!!!! Она при первом вкл МК записывает это значение, потом используется только Kor_Clock...

Добавлено (20.07.2012, 13:25)
---------------------------------------------
Или Вы этот код взяли из Korr:??? Тогда тут немного другое!!!! Вы изменяете значение Kor_Clock, а потом записываете его в память МК и все!!!! При отключении питания, у Вас уже записано в нулевой области памяти единица!!!!, при вкл питания, МК считывает значения из этой обл!!!! и если там не единица, значит, либо это первое вкл, либо прошел сбой и нужно записать по адресу 1 значения 4000...

З.Ы. С меня объяснитель плохой sad ... Мне проще написать программу, чем объяснить как она работает...


THE TRUTH IS OUT THERE.

С уважением, Николай.
ЯНДЕКС Дата: 20.07.2012
xaker-sss Дата: Пт, 20.07.2012, 13:28  |                                                                                                                Сообщение # 152
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 208
Репутация: 6   ±
Замечания:   ±
На сайте с 26.04.2009

Статус: Offline

Но как же так, я вхожу в подпрограму у меня выполняется
Kor_Clock = 4000 присвоили
EWrite 1, [Kor_Clock] записали, записано 4000
а если там до этого уже производилась корректировка к примеру там было 3800 то мы его потеряли


ПРОТОН ЭТО ВЕЩЬ.
Matrix252005 Дата: Пт, 20.07.2012, 13:38  |                                                                                                                Сообщение # 153
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Без обид!!!!!!!!!!!!!!!! Вы можете читать код???

Добавлено (20.07.2012, 13:35)
---------------------------------------------
Программный код - как книга!!!! Ее (его - код) - нужно читать с начала, а не с того места, с которого захотелось Вам!!!! Если Вы обратили внимания (если мы говорим о начале программы!!!!) то там стоит условие!!! Если мы говорим о "Korr:", то там почти тоже самое!!! Вы изменяете переменную "Kor_Clock" и после этого записываете ее в память, а чтобы МК при вкл понял, что Вы записали значения и его нужно считать, есть нулевая часть EPROM-а. в которую мы записали единицу... cool

Добавлено (20.07.2012, 13:38)
---------------------------------------------
Я не знаю, может баг со шрифтами и у Вас вместо надписи "кракозяблы", то там должна быть эта надпись "' ' Kor_Clock = 4000 ' тут вместо 4000 записываете свое число", такое бывает...


THE TRUTH IS OUT THERE.

С уважением, Николай.
xaker-sss Дата: Пт, 20.07.2012, 13:44  |                                                                                                                Сообщение # 154
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 208
Репутация: 6   ±
Замечания:   ±
На сайте с 26.04.2009

Статус: Offline

Все разобрался сам, сделал так, в начале программы после MAIN:
Kor_Clock= LRead LABEL
а в самом конце кода
LABEL: LData 4000
Фу наконец-то.


ПРОТОН ЭТО ВЕЩЬ.
Matrix252005 Дата: Пт, 20.07.2012, 13:47  |                                                                                                                Сообщение # 155
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Зачем так??? У Вас в "LABEL: LData 4000" будет всегда 4000!!!! Чем Вас не устроил мой код??? Там все верно и 100% рабочий!!!!

THE TRUTH IS OUT THERE.

С уважением, Николай.
xaker-sss Дата: Пт, 20.07.2012, 14:35  |                                                                                                                Сообщение # 156
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 208
Репутация: 6   ±
Замечания:   ±
На сайте с 26.04.2009

Статус: Offline

Quote (Matrix252005)
Зачем так??? У Вас в "LABEL: LData 4000" будет всегда 4000!!!!

А что его изменить нельзя из программы.


ПРОТОН ЭТО ВЕЩЬ.
ivan_fd Дата: Пт, 20.07.2012, 14:45  |                                                                                                                Сообщение # 157
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Нет, Вы его не измените. Пишите в Еепром, как Вам и советовали.
xaker-sss Дата: Пт, 20.07.2012, 14:52  |                                                                                                                Сообщение # 158
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 208
Репутация: 6   ±
Замечания:   ±
На сайте с 26.04.2009

Статус: Offline

Quote (ivan_fd)
Пишите в Еепром, как Вам и советовали.

Но не пойму я как писать.


ПРОТОН ЭТО ВЕЩЬ.
Matrix252005 Дата: Пт, 20.07.2012, 14:59  |                                                                                                                Сообщение # 159
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Я же Вам уже все готовое скинул!!!!! Единственное, добавьте изменение Kor_Clock и все...

Добавлено (20.07.2012, 14:59)
---------------------------------------------
Как ВЫ собирались изменять "Kor_Clock"??? пропишите это в той процедуре и выложите тут, а я Вам допишу... Единственное условие, допишите в моем коде!!!!


THE TRUTH IS OUT THERE.

С уважением, Николай.
xaker-sss Дата: Пт, 20.07.2012, 15:13  |                                                                                                                Сообщение # 160
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 208
Репутация: 6   ±
Замечания:   ±
На сайте с 26.04.2009

Статус: Offline

Пимерно так, но пока не работает
Code
Korr:
   For A =0 To 6500
         If ButtMin=1 Then Inc Kor_Clock
         DelayMS 200
         If ButtHour =1 Then Dec Kor_Clock
         DelayMS 200
         If ButtSec =1 Then
         GoTo loop
         EndIf
         DigitDisp = Kor_Clock Dig 0
         PORTA = %00000001
         GoSub LOOK   

         DigitDisp = Kor_Clock Dig 1
         PORTA = %00000010
         GoSub LOOK   

         DigitDisp = Kor_Clock Dig 2
         PORTA = %00000100
         GoSub LOOK   

         DigitDisp = Kor_Clock Dig 3
         PORTA = %00001000
         GoSub LOOK   
   Next
GoTo loop


ПРОТОН ЭТО ВЕЩЬ.
Matrix252005 Дата: Пт, 20.07.2012, 15:17  |                                                                                                                Сообщение # 161
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Сейчас проверю!!!!

THE TRUTH IS OUT THERE.

С уважением, Николай.
ЯНДЕКС Дата: 20.07.2012
xaker-sss Дата: Пт, 20.07.2012, 15:30  |                                                                                                                Сообщение # 162
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 208
Репутация: 6   ±
Замечания:   ±
На сайте с 26.04.2009

Статус: Offline

И еще в вашей прошивке надо в процедуре Secund поставить код
Code
        If ButtMin = 1 Or ButtHour = 1 Then
         If SECOND>30 Then Inc MINUTES  
         SECONDS = 0

что-бы обнулять секунды
И желательно всю процедуру всунуть в FOR NEXT как у меня чтоб через минуту возвращалось к показанию времени.

Добавлено (20.07.2012, 15:30)
---------------------------------------------
Нет не FOR NEXT а лучше

While
.......................
Wend
просто она у меня не работала, в делфи она пишется
While
.......................
Until


ПРОТОН ЭТО ВЕЩЬ.
Matrix252005 Дата: Пт, 20.07.2012, 15:41  |                                                                                                                Сообщение # 163
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Я немного изменил Ваш код, теперь он работает!!! Пробуйте!!!


THE TRUTH IS OUT THERE.

С уважением, Николай.
xaker-sss Дата: Пт, 20.07.2012, 15:47  |                                                                                                                Сообщение # 164
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 208
Репутация: 6   ±
Замечания:   ±
На сайте с 26.04.2009

Статус: Offline

BIG2 WORD да

ПРОТОН ЭТО ВЕЩЬ.
Matrix252005 Дата: Пт, 20.07.2012, 15:50  |                                                                                                                Сообщение # 165
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Еще, проглядел, добавьте в конце For A = 0 To 6500 .... Next , букву "А". У Вас должно быть "Next А"

Добавлено (20.07.2012, 15:49)
---------------------------------------------
Вы смотрели мою программу??? http://www.picbasic.ru/forum/5-1183-11107-16-1342775106

Добавлено (20.07.2012, 15:50)
---------------------------------------------

Quote (xaker-sss)
BIG2 WORD да

Нет DWord. BIG2 = 1000000 + Kor_Clock


THE TRUTH IS OUT THERE.

С уважением, Николай.
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Часы на PIC16F628 (Нужно переделать на общий анод.)
Поиск: