|
мплаб и пик |
|
|
|
Jul 18 2008, 13:48
|

Профессионал
    
Группа: Свой
Сообщений: 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 не работает
|
|
|
|
|
 |
Ответов
|
Jul 21 2008, 11:01
|

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 в рабочий регистр, а затем второй строкой затираете это содержимое, а во втором варианте первая строчка просто-напросто эквивалентна команде перехода на следующую строчку. С учётом сказанного, проверил фрагмент в железе, всё работает.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jul 21 2008, 12:33
|

Профессионал
    
Группа: Свой
Сообщений: 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. Все делалось корректно.
|
|
|
|
|
Jul 21 2008, 13:27
|

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 на каждом шаге.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jul 21 2008, 14:21
|

Профессионал
    
Группа: Свой
Сообщений: 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
|
|
|
|
Сообщений в этой теме
Евгений Германович мплаб и пик 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|