реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> мплаб и пик
Евгений Германов...
сообщение Jul 18 2008, 13:48
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Столкнулся с весьма забавным явлением.

фрагмент программы

MOVF PCL,W,ACCESS ;загрузка pclatu,pclath
MOVLW 2

ADDWF PCL,F,ACCESS

RETLW 0x3f ;0
RETLW 0x06 ;1
RETLW 0x5b ;2
RETLW 0x4f ;3

И ТОЖЕ САМОЕ но
MOVF PCL,F,ACCESS

в мплабе оба варианта прекрасно работают,но на реальном железе PIC18F452 вариант с буквой F не работает 05.gif
Go to the top of the page
 
+Quote Post
vanner
сообщение Jul 21 2008, 06:08
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 23-10-05
Пользователь №: 10 016



Ничего забавного в этом явлении нет, такой вычисляемый goto работает только в пределах страницы, если переход может попадать на несколько страниц, нужно корректировать pclath.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 21 2008, 11:01
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 18 2008, 12:48) *
MOVF PCL,W,ACCESS ;загрузка pclatu,pclath
MOVLW 2
И ТОЖЕ САМОЕ но
MOVF PCL,F,ACCESS

Первая строчка вашего фрагмента не имеет смысла в обоих случаях, поскольку в первом варианте вы переписываете содержимое PCL в рабочий регистр, а затем второй строкой затираете это содержимое, а во втором варианте первая строчка просто-напросто эквивалентна команде перехода на следующую строчку.

С учётом сказанного, проверил фрагмент в железе, всё работает.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 21 2008, 12:33
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 21 2008, 14:01) *
Первая строчка вашего фрагмента не имеет смысла в обоих случаях, поскольку в первом варианте вы переписываете содержимое PCL в рабочий регистр, а затем второй строкой затираете это содержимое, а во втором варианте первая строчка просто-напросто эквивалентна команде перехода на следующую строчку.

С учётом сказанного, проверил фрагмент в железе, всё работает.

Не правда фрагмент не работает.
Насчет смысла -его нет.
Это тестовая программа и для избежания лишних вопросов WREG загружается константой.
Содержимое PCL в рабочий регистр -это побочный продукт при загрузке регистров PCLATU и PCLATH
MOVF PCL,W,ACCESS и MOVF PCL,F,ACCESS обе команды нужны только для загрузки вышеупомянутых регистров.И как вы это проверили?Вы получили в рег W число 06?
В мплабе оба варианта одинаковы. В W загружается 06.На железе не грузится ничего но программа продолжает выполняться без сбоев и как положено.

Цитата(vanner @ Jul 21 2008, 09:08) *
Ничего забавного в этом явлении нет, такой вычисляемый goto работает только в пределах страницы, если переход может попадать на несколько страниц, нужно корректировать pclath.

Все делалось корректно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 21 2008, 13:27
Сообщение #5


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Ещё раз, фрагмент работает, а первая строчка вашего фрагмента не имеет смысла.

Цитата(Евгений Германович @ Jul 21 2008, 11:33) *
Содержимое PCL в рабочий регистр -это побочный продукт при загрузке регистров PCLATU и PCLATH
MOVF PCL,W,ACCESS и MOVF PCL,F,ACCESS обе команды нужны только для загрузки вышеупомянутых регистров

Неправильно, читайте дейташит. Там написано, что "содержимое PCLATU и PCLATH переписывается в программный счётчик любой командой, которая записывает данные в регистр PCL" (с.48, pic18f45k20). Но сначала нужно ЗАПИСАТЬ в регистры PCLATU и PCLATH соответствующие ДАННЫЕ. Ваша команда MOVF PCL,W,ACCESS вообще ничего не переписывает в программный счётчик, вторая переписывает, но следующий адрес, это эквивалентно переходу на следующую строчку, если конечно содержимое PCLATU и PCLATH установлено правильно.

Цитата(Евгений Германович @ Jul 21 2008, 11:33) *
И как вы это проверили?Вы получили в рег W число 06?

Да, получил, в обоих вариантах. Прошёл по шагам в железе и посмотрел, что загружается в W и что в PCLATU, PCLATH и PCL на каждом шаге.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 21 2008, 14:21
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 21 2008, 16:27) *
Ещё раз, фрагмент работает, а первая строчка вашего фрагмента не имеет смысла.
Неправильно, читайте дейташит. Там написано, что "содержимое PCLATU и PCLATH переписывается в программный счётчик любой командой, которая записывает данные в регистр PCL" (с.48, pic18f45k20). Но сначала нужно ЗАПИСАТЬ в регистры PCLATU и PCLATH соответствующие ДАННЫЕ. Ваша команда MOVF PCL,W,ACCESS вообще ничего не переписывает в программный счётчик, вторая переписывает, но следующий адрес, это эквивалентно переходу на следующую строчку, если конечно содержимое PCLATU и PCLATH установлено правильно.
Да, получил, в обоих вариантах. Прошёл по шагам в железе и посмотрел, что загружается в W и что в PCLATU, PCLATH и PCL на каждом шаге.

Вы не правы прочтите п 4.4 описания(не могу скопировать)
То что загружается я не сомневаюсь,дождитесь результата выполнения RETLW
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 21 2008, 14:27
Сообщение #7


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Проверил все варианты: 0, 2, 4 и 6, полёт нормальный, возвращается то, что ожидается. Конечно, я жду выхода по RETLW. По-другому посмотреть, что возвращается, никак нельзя.

Что за п.4.4? Укажите документ полностью. В чём я неправ?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 21 2008, 15:10
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 21 2008, 17:27) *
Проверил все варианты: 0, 2, 4 и 6, полёт нормальный, возвращается то, что ожидается. Конечно, я жду выхода по RETLW. По-другому посмотреть, что возвращается, никак нельзя.

Что за п.4.4? Укажите документ полностью. В чём я неправ?

Давайте перенесём диспут smile.gif на завтра.Кстати а вы какое железо используете?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 21 2008, 15:38
Сообщение #9


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



pic18f45k20 штатная плата, pic18LF45j10 в макете и pic18f4520 в демоплате.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 22 2008, 12:12
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Здравствуйте.П 4.4 гласит "значение регистров PCH,PCU соответственно плмещаются в регистры
PCLATH и PCLATU при выполнении чтения регистра PCL,что может быть полезно при вычислении смещения счетчика команд PC."
Именно для этого используются команды MOVF PCL,W,ACCESS и MOVF PCL,F,ACCESS ,что весьма удобно.
можно затолкать все RETLW куда угодно ,регистры загрузятся сами.
По поводу железа у вас другой проц.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 22 2008, 14:55
Сообщение #11


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Прошу пардону, я был неправ, на моём проце всё именно так, как вы говорите. По чтению регистра PCL, содержимое PCH копируется в PCLATH, а содержимое PCU - в PCLATU. И наоборот, при записи в регистр PCL, содержимое PCLATH копируется в PCH, а содержимое PCLATU - в PCU. Про последний вариант я знал, а про первый - нет

Но в железе оба фрагмента железно работают.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 22 2008, 15:50
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 22 2008, 17:55) *
Прошу пардону, я был неправ, на моём проце всё именно так, как вы говорите. По чтению регистра PCL, содержимое PCH копируется в PCLATH, а содержимое PCU - в PCLATU. И наоборот, при записи в регистр PCL, содержимое PCLATH копируется в PCH, а содержимое PCLATU - в PCU. Про последний вариант я знал, а про первый - нет

Но в железе оба фрагмента железно работают.

А у меня железно нет sad.gif И на поиски этого нет я потратил много времени.Может отличие в железе?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 23 2008, 10:01
Сообщение #13


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 22 2008, 14:50) *
А у меня железно нет sad.gif И на поиски этого нет я потратил много времени. Может отличие в железе?

Отличия в железе нет, не обольщайтесь. Ошибка у вас, и похоже что-то не так в вызове программы. Как вы её вызываете? Приведите весь фрагмент целиком.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 23 2008, 12:41
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 23 2008, 13:01) *
Отличия в железе нет, не обольщайтесь. Ошибка у вас, и похоже что-то не так в вызове программы. Как вы её вызываете? Приведите весь фрагмент целиком.

Вынужден не согласиться,если будет время всё завтра проверю и вышлю.
Однако напутать с вызовом программы, я считаю,нереально smile.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 23 2008, 15:17
Сообщение #15


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 23 2008, 11:41) *
Вынужден не согласиться, если будет время всё завтра проверю и вышлю.
Однако напутать с вызовом программы, я считаю, нереально smile.gif

Проверял на таком коде
Код
      org    0x0100
test
      call   german
      bra    test
german
      movlw  HIGH table
      movwf  PCLATH      ;msb of table
      movf   PCL,f,ACCESS;table address
      movlw  2
      addwf  PCL,f,ACCESS
table
      retlw 0x3f
      retlw 0x06
      retlw 0x5b
      retlw 0x4f


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 23 2008, 16:17
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



movlw HIGH table
movwf PCLATH ;msb of table
Зачем эти строки??????
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 23 2008, 16:39
Сообщение #17


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Похоже, здесь собака зарыта. Завтра проверю. Где ваш код?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 24 2008, 12:56
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 23 2008, 19:39) *
Похоже, здесь собака зарыта. Завтра проверю. Где ваш код?

Нет не здесь.
Я пргнал ваш текст,все прекрасно и с W и F однако я не останрвился на этом и продолжил.

org 0x0100
test
call german
bra test


ORG 600H
german

movf PCL,f,ACCESS;table address и тоже самое но с W!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
movlw 2
addwf PCL,f,ACCESS
table
retlw 0x3f
retlw 0x06
retlw 0x5b
retlw 0x4f
и всё враз стало нехорошо.
Если у вас не получится придется использовать мой текст.
Но если я не ошибся это не мелкий недочет мплаба,а очередной глюк контроллера. smile.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 24 2008, 14:20
Сообщение #19


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 24 2008, 11:56) *
Но если я не ошибся это не мелкий недочет мплаба,а очередной глюк контроллера.


Ваш код работает в железе с W, и не работает с F. Похоже, это глюк разработчика (:-). Судите сами, переход осуществляется на адрес 0х0008 сразу после выполнения команды movf PCL,f,ACCESS. Вы неправомочно используете movf PCL,f,ACCESS, поскольку регистр PCL несколько раз модифицируется в теле самой команды за время выполнения этой команды, и контроллеру не понятно, какую модификацию загружать в PCL(:-).

Похожие глюки были в аврках, там нельзя было использовать загрузку в косвенный регистр, используя косвенную адресацию этого регистра. Типа LD YL,Y+. Также и здесь, но там написали об этом, а здесь ещё нет, или написали, но мелкими буковками, и в таком месте, что концов не найдёшь.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 24 2008, 15:10
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 24 2008, 17:20) *
Ваш код работает в железе с W, и не работает с F. Похоже, это глюк разработчика (:-). Судите сами, переход осуществляется на адрес 0х0008 сразу после выполнения команды movf PCL,f,ACCESS. Вы неправомочно используете movf PCL,f,ACCESS, поскольку регистр PCL несколько раз модифицируется в теле самой команды за время выполнения этой команды, и контроллеру не понятно, какую модификацию загружать в PCL(:-).

Похожие глюки были в аврках, там нельзя было использовать загрузку в косвенный регистр, используя косвенную адресацию этого регистра. Типа LD YL,Y+. Также и здесь, но там написали об этом, а здесь ещё нет, или написали, но мелкими буковками, и в таком месте, что концов не найдёшь.

По поводу неправомочности я с вами полностью согласен,однако вызывает недоумение следующий момент и не один:
1 в мплабе всё прекрасно,что очень плохо и ,что является явным глюком
2 при некоторых условиях все работает,а это ещё хуже,чем если бы всё не работало.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 24 2008, 15:41
Сообщение #21


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 24 2008, 14:10) *
По поводу неправомочности я с вами полностью согласен, однако вызывает недоумение следующий момент и не один:
1 в мплабе всё прекрасно, что очень плохо и что является явным глюком
2 при некоторых условиях все работает.

Одно я знаю, а ещё при каких условиях работает?

Вот здесь Вычисляемый GOTO на pic18f45j10 есть пара вариантов, как помочь горю.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 24 2008, 16:17
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 24 2008, 18:41) *
Одно я знаю, а ещё при каких условиях работает?

Вот здесь Вычисляемый GOTO на pic18f45j10 есть пара вариантов, как помочь горю.

Я тоже одно и второе искать не хочу,из за этих 2 глюков я несколько раз проиграл в шашки. и потратил много времени на поиск.Однако,согласитесь,что выражение MOVF PCL,F,ACCESS весьма изящно но не работает biggrin.gif

movff PCL,любой свободный регистр; и вот оно счастье smile.gif
так ещё компактнее и безопасно.
И всеPCLAT ЗАГРУЖЕНЫ

ADDWF WREG,W,ACCESS ; W*2
так удваивать W компактнее
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 24 2008, 21:45
Сообщение #23


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 24 2008, 15:17) *
Я тоже одно и второе искать не хочу, из за этих 2 глюков я несколько раз проиграл в шашки и потратил много времени на поиск. Однако, согласитесь, что выражение MOVF PCL,F,ACCESS весьма изящно, но не работает

проиграли вы потому, что противник был сильнее, а глюк был ваш собственный, не нужно было модифицировать PCL, это закон. Изящество было бы, если бы работало.
Цитата(Евгений Германович @ Jul 24 2008, 15:17) *
movff PCL,любой свободный регистр; и вот оно счастье

Германыч, это куда надо прикладывать? Вы б сразу писали поконкретнее, а то возникают непонятки и приходится переспрашивать.
Цитата(Евгений Германович @ Jul 24 2008, 15:17) *
ADDWF WREG,W,ACCESS ; W*2 так удваивать W компактнее

Не пойму, зачем вы тут про удвоение говорите, куда с ним?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 25 2008, 13:29
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 25 2008, 00:45) *
проиграли вы потому, что противник был сильнее, а глюк был ваш собственный, не нужно было модифицировать PCL, это закон. Изящество было бы, если бы работало.

Германыч, это куда надо прикладывать? Вы б сразу писали поконкретнее, а то возникают непонятки и приходится переспрашивать.

Не пойму, зачем вы тут про удвоение говорите, куда с ним?

Но сегодня я выиграл и с разгромным счетом 6:0.Глюк не мой -Если предоставляется возможность творить подобную команду то надо и контролировать её.А мплаб молчал.
Про приложение


ADDWF WREG,W,ACCESS ; W*2 именно сюда
MOVFF PCL,любой свободный регистр
ADDWF PCL,F,ACCESS




RETLW 0x3f ;0
RETLW 0x06 ;1

или
BRA ......
BRA .......
так компактнее



это по результатам просмотра вашей ссылки.


movlw HIGH table
movwf PCLATH ;msb of table
это ваш код.Вопрос а как быть с PCLATU вы его не грузите???
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 25 2008, 14:54
Сообщение #25


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 25 2008, 12:29) *
Но сегодня я выиграл и с разгромным счетом 6:0. Глюк не мой. Если предоставляется возможность творить подобную команду то надо и контролировать её. А мплаб молчал

Таких творцов мульёны. Мало ли кто что сотворит, индусы не могут всего предусмотреть. А вы должны понимать, что творите...Следующий раз проиграете, скажете, жена не дала, я ни при чём, так что ли?
Цитата(Евгений Германович @ Jul 25 2008, 12:29) *
Про приложение
ADDWF WREG,W,ACCESS ; W*2 именно сюда
MOVFF PCL,любой свободный регистр
ADDWF PCL,F,ACCESS
или
BRA ......
BRA .......
так компактнее это по результатам просмотра вашей ссылки

А у меня вроде нет такого, в смысле удвоения WREG. А следующая команда "MOVFF PCL,любой свободный регистр" мне вообще противопоказана, поскольку изменятся значения в PCLATH, которые я перед этим установил, и я не попаду на таблицу BRA BRA BRA, которая у меня находится на другой странице.
Цитата(Евгений Германович @ Jul 25 2008, 12:29) *
movlw HIGH table
movwf PCLATH ;msb of table
это ваш код. Вопрос а как быть с PCLATU вы его не грузите?

А смысл? В процессоре флеши 32КБ, так что PCLATU всё время 0.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 25 2008, 16:00
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 25 2008, 17:54) *
Таких творцов мульёны. Мало ли кто что сотворит, индусы не могут всего предусмотреть. А вы должны понимать, что творите...Следующий раз проиграете, скажете, жена не дала, я ни при чём, так что ли?

А у меня вроде нет такого, в смысле удвоения WREG. А следующая команда "MOVFF PCL,любой свободный регистр" мне вообще противопоказана, поскольку изменятся значения в PCLATH, которые я перед этим установил, и я не попаду на таблицу BRA BRA BRA, которая у меня находится на другой странице.

А смысл? В процессоре флеши 32КБ, так что PCLATU всё время 0.

movf k,w
addwf k,w
Это с вашей ссылки 2 команды эквивалентны одной моей ADDWF WREG,W,ACCESS,
делают то же самое.
Без удвоения ничего не получиться ибо младший бит счетчика команд всегда равен 0 то все нечетные W
превратятся в четные smile.gif и сама BRA имеет длину 2 байта
Если бы творцы схемотехники приложили немного мозга,то всё было бы нормально.Ведь в вашем варианте все работало.Этот глюк элементарное расп......ство и больше ничего.Кстати если его использовать,то можно создавать немодифицируемую программу.Прикиньте незначительное перемещение кода приводит к катастрофическим последствиям.
Хотя вынужден признать и мне повезло,если бы я уложил всё рядом а потом переместил....

Психологическая подготовка в шашках весьма важна.

А смысл? В процессоре флеши 32КБ, так что PCLATU всё время 0.

Не боитесь???А вдруг ещё гадость вылезет или будете переносить программу на проц с немерянной памятью smile.gif

А следующая команда "MOVFF PCL,любой свободный регистр" мне вообще противопоказана, поскольку изменятся значения в PCLATH, которые я перед этим установил, и я не попаду на таблицу BRA BRA BRA, которая у меня находится на другой странице.
Применение MOVFF PCL,любой свободный регистр позволяет отказаться от ручной установки PCLATH иPCLATU и куда бы вы не двинули подобнй фрагмент загрузка регистров выполнится корректно и компактно.
Я бы на вашем месте не расслаблялся -памяти 32Кб но счетчик команд адресует все мегабайты,прикиньте что будет если случайно в PCLATU окажется 1.Вот вам и второй Чернобыль.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 25 2008, 23:21
Сообщение #27


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 25 2008, 15:00) *
movf k,w
addwf k,w
Это с вашей ссылки 2 команды эквивалентны одной моей ADDWF WREG,W,ACCESS,
делают то же самое

Не, вы не прониклись, как мои две команды работают. Первая у меня посылает содержимое регистра k в w, не меняя значения k, а вторая удваивает значение. Если использовать вашу команду, то надо сначала заслать содержимое регистра k в w, а потом удваивать, в результате будет две команды, так что ваш вариант ничем не лучше моего.
Цитата(Евгений Германович @ Jul 25 2008, 15:00) *
Психологическая подготовка в шашках весьма важна

Кто б спорил. По мне так лучше играть в шахматы, шашки всё-таки примитивная игра. Хотя 100-клеточные ничего так себе.
Цитата(Евгений Германович @ Jul 25 2008, 15:00) *
Не боитесь? А вдруг ещё гадость вылезет или будете переносить программу на проц с немерянной памятью. Я бы на вашем месте не расслаблялся - памяти 32Кб, но счетчик команд адресует все мегабайты, прикиньте что будет если случайно в PCLATU окажется 1. Вот вам и второй Чернобыль.

Я не боюсь, я пишу только безглючные программы. Как в PCLATU может оказаться 1, если я не использую команды с PCLATU?
Цитата(Евгений Германович @ Jul 25 2008, 15:00) *
Применение MOVFF PCL,любой свободный регистр позволяет отказаться от ручной установки PCLATH и PCLATU и куда бы вы не двинули подобный фрагмент загрузка регистров выполнится корректно и компактно

Вы невнимательно смотрели мой фрагмент. Мне надо на одной странице установить в PCLATH номер другой страницы, так что ваша команда MOVFF PCL,ххх мне всё испортит.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 26 2008, 07:45
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 26 2008, 02:21) *
Не, вы не прониклись, как мои две команды работают. Первая у меня посылает содержимое регистра k в w, не меняя значения k, а вторая удваивает значение. Если использовать вашу команду, то надо сначала заслать содержимое регистра k в w, а потом удваивать, в результате будет две команды, так что ваш вариант ничем не лучше моего.

Кто б спорил. По мне так лучше играть в шахматы, шашки всё-таки примитивная игра. Хотя 100-клеточные ничего так себе.

Я не боюсь, я пишу только безглючные программы. Как в PCLATU может оказаться 1, если я не использую команды с PCLATU?

Вы невнимательно смотрели мой фрагмент. Мне надо на одной странице установить в PCLATH номер другой страницы, так что ваша команда MOVFF PCL,ххх мне всё испортит.

А зачем сначала класть в рег к а затем тащить в W это расточительство.
Не понимаю шахматы,там нельзя рубить по 6 штук.
Как в PCLATU может оказаться 1, если я не использую команды с PCLATU?


От вас это может не зависить.У меня был случай самопроизвольной записи(под дейсствием помехи) в память.

Я не боюсь, я пишу только безглючные программы.
Этого нам знать не дано.
Я смотрел внимательно и не заметил того о чем вы говорите.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 28 2008, 08:42
Сообщение #29


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Евгений Германович А зачем сначала класть в рег k, а затем тащить в W, это расточительство.
Нет, это необходимость, называется Вычисляемый GOTO, в регистре k находится не константа, а переменная, которая вычисляется в нескольких местах, и показывает, куда скакнуть в следующий раз. Таких таблиц у меня пока 3, длиной 120, 72 и 72, так что на одну страницу они не входят. И я решил разместить каждую таблицу на отдельной странице. Ну а раз на отдельной странице, значит будут разные PCH, соответственно PCLATH.

Евгений Германович От вас это может не зависить.
Ну запись-то в PCL идёт регулярно, значит регулярно обновляется 0 в PCLATU. А помехи внутри МК нельзя побороть программно, помочь может только разумное резервирование.

Евгений Германович Этого нам знать не дано.
За 20 лет ни одной рекламации. А индусы просто используют мой код без какой-либо модификации, доверяют...

Евгений Германович Я смотрел внимательно и не заметил того, о чем вы говорите.
Ну почитайте ещё, там всё написано.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 28 2008, 10:30
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 28 2008, 11:42) *
Евгений Германович А зачем сначала класть в рег k, а затем тащить в W, это расточительство.
Нет, это необходимость, называется Вычисляемый GOTO, в регистре k находится не константа, а переменная, которая вычисляется в нескольких местах, и показывает, куда скакнуть в следующий раз. Таких таблиц у меня пока 3, длиной 120, 72 и 72, так что на одну страницу они не входят. И я решил разместить каждую таблицу на отдельной странице. Ну а раз на отдельной странице, значит будут разные PCH, соответственно PCLATH.

Евгений Германович От вас это может не зависить.
Ну запись-то в PCL идёт регулярно, значит регулярно обновляется 0 в PCLATU. А помехи внутри МК нельзя побороть программно, помочь может только разумное резервирование.

Евгений Германович Этого нам знать не дано.
За 20 лет ни одной рекламации. А индусы просто используют мой код без какой-либо модификации, доверяют...

Евгений Германович Я смотрел внимательно и не заметил того, о чем вы говорите.
Ну почитайте ещё, там всё написано.

Не буду,я хоть не индус,но решил поверить вам на слово. smile.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 28 2008, 11:16
Сообщение #31


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 28 2008, 09:30) *
Не буду, я хоть не индус, но решил поверить вам на слово

Ага, то есть будете использовать мой код(:-)? Вот тут есть две программки деления 24/24=24 и 32/32=32. Тоже можете использовать.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 28 2008, 11:40
Сообщение #32


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(=GM= @ Jul 28 2008, 14:16) *
Ага, то есть будете использовать мой код(:-)? Вот тут есть две программки деления 24/24=24 и 32/32=32. Тоже можете использовать.

Почему бы и нет,но свой код мне нравиться больше.За деление спасибо,БОЛЬШОЕ.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 28 2008, 14:52
Сообщение #33


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Евгений Германович @ Jul 28 2008, 10:40) *
Почему бы и нет, но свой код мне нравится больше. За деление спасибо, БОЛЬШОЕ

На здоровье.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 03:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.03316 секунд с 7
ELECTRONIX ©2004-2016