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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: demanik, ivan_fd  
переход со страницы на страницу в PIC16FXXX
dimitriy-bc Дата: Вт, 22.05.2012, 12:20  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

Всем доброго времени суток. У меня не получается листать страницы PIC16F874A в ПРОТОНЕ. В программе пробовал команды
BranchL
BranchL KEY_NN, [ N, whor__l, layer, position, init__job, velocity__L ] '
и GoTo
If KEY_N = 10 Then GoTo N
If KEY_N = 11 Then GoTo whor__l
If KEY_N = 12 Then GoTo layer
If KEY_N = 13 Then GoTo position
If KEY_N = 14 Then GoTo init__job
If KEY_N = 15 Then GoTo velocity__L
Участки программы, написанные по меткам N, whor__l, layer, position находятся на нулевой странице, а init__job, velocity__L на первой странице. В результате первые четыре участка программы отрабатывают нормально, а два последних…
Смотрел сгенерированный asm. код в MPLAB. Третий и четвертый биты регистра PCLATH устанавливаются в ноль Bсf PCLATH,3 и Bсf PCLATH,4 хотя PCLATH,3 должен быть установлен в единицу. Пробовал программно устанавливать PCLATH,3 в единицу с командами GoTo и On GoTo. не работает.
Подскажите, пожалуйста, как правильно переходить со страницы на страницу. Ну, совсем не хочется в asm. возвращаться.

Сообщение отредактировал dimitriy-bc - Вт, 22.05.2012, 12:31
ЯНДЕКС Дата: 22.05.2012
retas Дата: Вт, 22.05.2012, 20:33  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Если охота листать, то вам к асемблеру, а если програмировать - то к Бейсику (он сам за вас полистает) - МНЕ ТАК КАААТСА!!!
mikhail09p Дата: Ср, 23.05.2012, 16:26  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Да, давно пользуюсь этими командами, всё работает!
Единственное, если не работает Branch , то пишем BranchL и всё ок!
dimitriy-bc Дата: Вс, 27.05.2012, 11:57  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

Всем доброго времени суток. retas и mikhail09p, спасибо за сообщения. Действительно Бейсик листает страницы самостоятельно. Как я теперь понимаю у меня проблема с записью в EEPROM или со считыванием из EEPROM. В начале у меня выводилось ошибочное значение velocity_L
при добавлении строки
If number_XX = 6 Then whorl_nominal = ERead 1:layer_nominal = ERead 3:position_start = ERead 5:init_job = ERead 7: velocity_L = ERead 9

Также при добавлении этой строки, программа по объему захватывала как нулевую страницу, так и первую. Это меня и толкнуло на мысль о проблеме страничного перехода.
Теперь, когда я дописал недостающие строки записи и считывания, видно, что страничный переход отрабатывает нормально, а вот запись или считывание последнего четырехбайтного слова происходит с ошибкой.
Подскажите, что я делаю не так? И еще вопрос. Как лучше организовать подсветку или мигание изменяемой цифры? Заранее благодарен.
Прикрепления: PACKER-TOOL.rar (121.5 Kb)

Сообщение отредактировал dimitriy-bc - Вс, 27.05.2012, 17:44
mikhail09p Дата: Вс, 27.05.2012, 17:05  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Почитайте: http://terrarus.ucoz.ru/proton_plus_ide/index.html
Сообщение отредактировал mikhail09p - Вс, 27.05.2012, 17:08
dimitriy-bc Дата: Вт, 29.05.2012, 21:09  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

mikhail09p, так вроде я это учел. Запись и считывание организована так
'
'________________СЧИТЫВАНИЕ ДАННЫХ EEPROM______________
If PORTA.0 = 0 Then
If number_XX = 6 Then whorl_nominal = ERead 1:layer_nominal = ERead 3:position_start = ERead 5:init_job = ERead 7:
velocity_L = ERead 9
If number_XX = 9 Then whorl_nominal = ERead 13:layer_nominal = ERead 15:position_start = ERead 17:init_job = ERead 19:
velocity_L = ERead 21
If number_XX = 12 Then whorl_nominal = ERead 25:layer_nominal = ERead 27:position_start = ERead 29:init_job = ERead 31:
velocity_L = ERead 33
If number_XX = 14 Then whorl_nominal = ERead 37:layer_nominal = ERead 39:position_start = ERead 41:init_job = ERead 43:
velocity_L = ERead 45
If number_XX = 16 Then whorl_nominal = ERead 49:layer_nominal = ERead 51:position_start = ERead 53:init_job = ERead 55:
velocity_L = ERead 57
If number_XX = 18 Then whorl_nominal = ERead 61:layer_nominal = ERead 63:position_start = ERead 65:init_job = ERead 67:
velocity_L = ERead 69
If number_XX = 20 Then whorl_nominal = ERead 73:layer_nominal = ERead 75:position_start = ERead 77:init_job = ERead 79:
velocity_L = ERead 81
If number_XX = 25 Then whorl_nominal = ERead 85:layer_nominal = ERead 87:position_start = ERead 89:init_job = ERead 91:
velocity_L = ERead 93
If number_XX = 32 Then whorl_nominal = ERead 97:layer_nominal = ERead 99:position_start = ERead 101:init_job = ERead 103:
velocity_L = ERead 105
EndIf
'
...
'_________________________ЗАПИСЬ ДАННЫХ В EEPROM__________________
If KEY = 15 Then
If number_XX = 6 Then EWrite 1, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
If number_XX = 9 Then EWrite 13, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
If number_XX = 12 Then EWrite 25, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
If number_XX = 14 Then EWrite 37, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
If number_XX = 16 Then EWrite 49, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
If number_XX = 18 Then EWrite 61, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
If number_XX = 20 Then EWrite 73, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
If number_XX = 25 Then EWrite 85, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
If number_XX = 32 Then EWrite 97, [ whorl_nominal, layer_nominal, position_start, init_job, velocity_L ]
EndIf

первыми идут слова 16 бит, последним 32 бит.

Добавлено (29.05.2012, 21:09)
---------------------------------------------
Всем доброго времени суток. Со своими непонятками разобрался. Всем спасибо.

Сообщение отредактировал dimitriy-bc - Вс, 27.05.2012, 23:33
evlis-s Дата: Пт, 07.06.2013, 14:22  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Новенький
Сообщений: 9
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2013

Статус: Offline

Всем доброго времени суток! Возникла аналогичная проблема. Программа написана на PIC16f877A как только количество программных слов перевалило за 2048 (переход на другую страницу) у меня перестала работать команда goto (на второй станице). Вопрос: как заставить программу прыгать по всем страницам. в PBP таких проблем у меня не было.
P. S. 

строки:
If f_izm_t = 0 And key = 0 Then GoTo main
If f_izm_t = 1 Then GoSub TERMO_izmer
просто заменить на on gotol нельзя.
shaman Дата: Пт, 07.06.2013, 14:52  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 178
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

День добрый , (evlis-s ) экстрасенсов здесь на форуме нет что бы не видя код сказать в чем проблема, приведите пример кода с файлом протеуса, если не хотите приводить и это такая секретная информация , тогда ищите сами ответ на свой вопрос.

PS: У меня есть машина белая такая , до скольки км/ч она разгонится за 10 сек.
      Пишу прогу по фотографии... Снимаю баги в коде по кофейной гуще... 

Удачи Вам.

Сообщение отредактировал shaman - Пт, 07.06.2013, 15:21
evlis-s Дата: Пт, 07.06.2013, 15:36  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Новенький
Сообщений: 9
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2013

Статус: Offline

smile
Проект домашнего назначения. у меня есть оконный кондиционер(китаец) молотит круглые сутки, так как не тянет. Цель проекта заменить механическое управление на электронное с отслеживанием температуры (с помощью DS18B20) на входе в кондиционер(фактическая) и на выходе (так для себя хочу знать на сколько он охладил). в заменяемости какая температура соответствено компресор включается и выключается. также выбор скорости вентилятора и таймер работы, таймер отдыха, таймер отключения (ночной режим). Вся информация выводится на КЖ 8х2.
Прикрепления: 1349581.dsn (104.5 Kb) · 2-877A-.bas (11.2 Kb)
shaman Дата: Пт, 07.06.2013, 15:51  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 178
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

Я конечно все могу понять , но как это понять не понимаю . Программа для 877 камня , а схема для 628 А...??????????????????????
А это как я понял КЖ 8х2 (  LCD8x2 ) , а в схеме LCD 16х2. И как Вы собираетесь вмещать все это на LCD 8x2 , Вы просто ради интереса посчитайте сколько символов у Вас на экран выходит (Print At 1, 1, "tf-", Dec1 T_FAKT, 8, " ", Dec5 Analog )  ??????????????????????

Сообщение отредактировал shaman - Пт, 07.06.2013, 16:06
mikhail09p Дата: Пт, 07.06.2013, 20:39  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Да уж...   Device = 16F877A                       '  16F628A

Цитата (evlis-s)
как только количество программных слов перевалило за 2048 (переход на другую страницу) у меня перестала работать команда goto

И не удивительно...
ЯНДЕКС Дата: 07.06.2013
evlis-s Дата: Пн, 10.06.2013, 16:12  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Новенький
Сообщений: 9
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2013

Статус: Offline

Цитата (shaman)
Я конечно все могу понять , но как это понять не понимаю . Программа для 877 камня , а схема для 628 А...?????????????????????? А это как я понял КЖ 8х2 (  LCD8x2 ) , а в схеме LCD 16х2. И как Вы собираетесь вмещать все это на LCD 8x2 , Вы просто ради интереса посчитайте сколько символов у Вас на экран выходит ( )  ??????????????????????

Изначально программа писалась под камень 628 - в пятницу торопился на работе домой поэтому и ошибся выложил не тот файл. а на счет LCD 8x2 все правильно в проекте используются только первые 8 символов а запись (Print At 1, 1, "tf-", Dec1 T_FAKT, 8, " ", Dec5 Analog ) тестовая точнее ее часть (, " ", Dec5 Analog) по задумке выводить аналоговое значение на ЖК не нужно.

Добавлено (10.06.2013, 16:12)
---------------------------------------------
Да! Охаяли, а помочь не помогли. sad

Прикрепления: 5278934.bas (11.2 Kb) · 2-877A-.dsn (116.7 Kb)
Matrix252005 Дата: Пн, 10.06.2013, 16:36  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток!!!

Цитата (evlis-s)
Да! Охаяли, а помочь не помогли.

А что Вы хотите??? Ничего не написали и чего то ждете... Или Вы думаете что мы тут все:

Цитата (shaman)
Пишу прогу по фотографии... Снимаю баги в коде по кофейной гуще...

Экстрасенсы... Так нет... 

Ваша программа норм компилится... Не считая мелких багов, прога работает!!! Так что, я не знаю что Вы хотите...


THE TRUTH IS OUT THERE.

С уважением, Николай.
mikhail09p Дата: Пн, 10.06.2013, 22:01  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Команда On GoToL - предназначена для использования с микроконтроллерами, которые имеют больше чем одна страница памяти (у
которых память больше чем 2048 кбайт)

Страницы тут не при чём, думается мне. Ошибка где-то иначе.
А прога Ваша в таком виде, как есть, работает.
evlis-s Дата: Вт, 11.06.2013, 12:29  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Новенький
Сообщений: 9
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2013

Статус: Offline

У меня не работают прерывания. (точнее нет отсчета времени по которому производится измерение температуры - 1 раз в секунду). Команда on gotol не удобна при выполнении сложных условий. например: If f_izm_t = 0 And key = 0 Then GoTo main.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: