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

 
 
> мплаб и пик
Евгений Германов...
сообщение 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
 
Start new topic
Ответов
=GM=
сообщение Jul 21 2008, 11:01
Сообщение #2


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
Сообщение #3


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

Группа: Свой
Сообщений: 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
Сообщение #4


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
Сообщение #5


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

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- Евгений Германович   мплаб и пик   Jul 18 2008, 13:48
- - vanner   Ничего забавного в этом явлении нет, такой вычисля...   Jul 21 2008, 06:08
|- - =GM=   Проверил все варианты: 0, 2, 4 и 6, полёт нормальн...   Jul 21 2008, 14:27
|- - Евгений Германович   Цитата(=GM= @ Jul 21 2008, 17:27) Провери...   Jul 21 2008, 15:10
|- - =GM=   pic18f45k20 штатная плата, pic18LF45j10 в макете и...   Jul 21 2008, 15:38
- - Евгений Германович   Здравствуйте.П 4.4 гласит "значение регистров...   Jul 22 2008, 12:12
|- - =GM=   Прошу пардону, я был неправ, на моём проце всё име...   Jul 22 2008, 14:55
|- - Евгений Германович   Цитата(=GM= @ Jul 22 2008, 17:55) Прошу п...   Jul 22 2008, 15:50
|- - =GM=   Цитата(Евгений Германович @ Jul 22 2008, 14...   Jul 23 2008, 10:01
|- - Евгений Германович   Цитата(=GM= @ Jul 23 2008, 13:01) Отличия...   Jul 23 2008, 12:41
|- - =GM=   Цитата(Евгений Германович @ Jul 23 2008, 11...   Jul 23 2008, 15:17
- - Евгений Германович   movlw HIGH table movwf PCLATH ;msb of...   Jul 23 2008, 16:17
- - =GM=   Похоже, здесь собака зарыта. Завтра проверю. Где в...   Jul 23 2008, 16:39
- - Евгений Германович   Цитата(=GM= @ Jul 23 2008, 19:39) Похоже,...   Jul 24 2008, 12:56
- - =GM=   Цитата(Евгений Германович @ Jul 24 2008, 11...   Jul 24 2008, 14:20
- - Евгений Германович   Цитата(=GM= @ Jul 24 2008, 17:20) Ваш код...   Jul 24 2008, 15:10
- - =GM=   Цитата(Евгений Германович @ Jul 24 2008, 14...   Jul 24 2008, 15:41
- - Евгений Германович   Цитата(=GM= @ Jul 24 2008, 18:41) Одно я ...   Jul 24 2008, 16:17
- - =GM=   Цитата(Евгений Германович @ Jul 24 2008, 15...   Jul 24 2008, 21:45
- - Евгений Германович   Цитата(=GM= @ Jul 25 2008, 00:45) проигра...   Jul 25 2008, 13:29
- - =GM=   Цитата(Евгений Германович @ Jul 25 2008, 12...   Jul 25 2008, 14:54
- - Евгений Германович   Цитата(=GM= @ Jul 25 2008, 17:54) Таких т...   Jul 25 2008, 16:00
- - =GM=   Цитата(Евгений Германович @ Jul 25 2008, 15...   Jul 25 2008, 23:21
- - Евгений Германович   Цитата(=GM= @ Jul 26 2008, 02:21) Не, вы ...   Jul 26 2008, 07:45
- - =GM=   Евгений Германович А зачем сначала класть в рег k,...   Jul 28 2008, 08:42
- - Евгений Германович   Цитата(=GM= @ Jul 28 2008, 11:42) Евгений...   Jul 28 2008, 10:30
- - =GM=   Цитата(Евгений Германович @ Jul 28 2008, 09...   Jul 28 2008, 11:16
- - Евгений Германович   Цитата(=GM= @ Jul 28 2008, 14:16) Ага, то...   Jul 28 2008, 11:40
- - =GM=   Цитата(Евгений Германович @ Jul 28 2008, 10...   Jul 28 2008, 14:52


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:01
Рейтинг@Mail.ru


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