Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 12:52:44

Просьба не пинать под дых, а помочь понять в чём глюк у меня?
Занимаюсь PIC-ами только вторую неделю, и для начала написал простую программу (используя программу MPLAB X IDE v4.01) на языке ассемблер.(текст ниже)
Код:
LIST          P=PIC16F84A
_CONFIG          0x3FF1
STATUS       EQU       H0003
PORTB       EQU       H0006
TRISB       EQU       H0006
   
       org 0         ; Начало программы
; Подготовительные моменты
START       bsf       STATUS,5      ; переход в Банк 1
       clrf    TRISB
       bcf       STATUS,5      ; переход в Банк 0
; Установка сигналов на порту В
       movlw   b'01010101'
       movwf   PORTB
       goto    START
       end            ; Конец программы

Но после компиляции программы были показаны ошибки смысл которых я не могу понять.
1)Warning[205] E:\PIC MICROCONTROLLERS\MY_PROJECTS\PROJECTS_PIC_MICROKONTROLLERS\2017\LED_PORT_B\LED_PORT_B.X\LED_PORT_B.ASM 1 : Found directive in column 1. (LIST)
2)Error[122] E:\PIC MICROCONTROLLERS\MY_PROJECTS\PROJECTS_PIC_MICROKONTROLLERS\2017\LED_PORT_B\LED_PORT_B.X\LED_PORT_B.ASM 3 : Illegal opcode (H3FF1)
3)Error[113] E:\PIC MICROCONTROLLERS\MY_PROJECTS\PROJECTS_PIC_MICROKONTROLLERS\2017\LED_PORT_B\LED_PORT_B.X\LED_PORT_B.ASM 4 : Symbol not previously defined (H0003)
4)Error[113] E:\PIC MICROCONTROLLERS\MY_PROJECTS\PROJECTS_PIC_MICROKONTROLLERS\2017\LED_PORT_B\LED_PORT_B.X\LED_PORT_B.ASM 5 : Symbol not previously defined (H0006)
5)Error[113] E:\PIC MICROCONTROLLERS\MY_PROJECTS\PROJECTS_PIC_MICROKONTROLLERS\2017\LED_PORT_B\LED_PORT_B.X\LED_PORT_B.ASM 6 : Symbol not previously defined (H0006)
Помогите начинающему разобраться где и что не так я написал в программе. На простоту программы прошу не обращать внимания это был просто первый пробный вариант.

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 13:57:38

Ну он, как бы, сам вам говорит - Символ не определён. А в скобках пишет на что конкретно ругается.

PS: Вы 2 недели пытаетесь устранить эти ошибки ? :)

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 14:05:48

Вы 2 недели пытаетесь устранить эти ошибки ?

Нет программу я написал один день назад.

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 14:08:43

H0006 замените на более понятные евонному ассемблеру 0x06, H3FF1 - на 0x3FF1.
И т.д.

LIST тоже лечится просто - перед ним должен быть или пробел, или табуляция.
А еще у микрочипа есть огромная база подробнейшей документации, с примерами. В т.ч. и пособие по ассемблеру.

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 14:50:07

А в скобках пишет на что конкретно ругается.

Но в 3, 4 и 5 ошибках в скобках указано число, этим числом я задаю адрес регистров в шестнадцатиричном формате, и что-же тогда не нравится компилятору. Во второй ошибке в скобках указано число которое я присваиваю регистру CONFIG.

H0006 замените на более понятные евонному ассемблеру 0x06, H3FF1 - на 0x3FF1

Вообще то я уже пробовал вместо H3FF1 подставлять 0x3FF1, но компилятор все равно выдавал ошибку на символ (0), т.е. и в таком виде запись 16-го числа компилятор не принемает

Добавлено after 14 minutes 43 seconds:
Ну вот сейчас попробовал изменить значения H0003 и H0006 на 0x03 и 0x06 и ошибки которые касались этих чисел исчезли, а исправление H3FF1 на 0x3FF1 не помогло выходит следующее сообщение об ошибке: "Error[108] E:\PIC MICROCONTROLLERS\MY_PROJECTS\PROJECTS_PIC_MICROKONTROLLERS\2017\LED_PORT_B\LED_PORT_B.X\LED_PORT_B.ASM 3 : Illegal character (0)".

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 15:06:42

Все, что ДО org 0, удалите и впишите следующее:
Код:
; PIC16F84A Configuration Bit Settings

; Assembly source line config statements

#include "p16f84a.inc"

; CONFIG
; __config 0xFFFA
 __CONFIG _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _CP_OFF


#include "p16f84a.inc" содержит адреса регистров, которые вы пытались описать в трех строчках, а конфиг надо писать именно в таком раскрытом виде, чтобы было видно, что вы там активировали.
Открою страшный секрет: весь этот код писал не я! В меню выбираете Window - PIC Memory Views - Configuration Bits.
Там выбираете желаемые опции (описание в ДШ), жмете Generate... и копируете полученное в свой файл, в самое его начало.
Тип генератора в конфиге подберите под частоту кварца, или что там у вас планируется.

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 15:08:18

Ну или скачайте хоть один листинг с официального сайта и возьмите "шапку" оттуда
Перед CONFIG должно быть ДВА нижнего подчеркивания :
Код:
   __CONFIG 0x3FF1
Последний раз редактировалось abc Пт сен 29, 2017 15:09:41, всего редактировалось 1 раз.

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 15:09:34

И еще одно: ваш goto в конце ведет опять на инициализацию порта, а должно идти на "; Установка сигналов на порту В".

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 20:20:46

2ТС. изучать пики по кОРАБЕЛЬНИКОВУ - даже и не вздумай.

Re: Помогите начинающему в освоении программирования PIC-ов

Пт сен 29, 2017 21:04:06

В MPLAB всё есть ,чего не читали Корабельниковы.
Вот пример из MPLAB от производителя.

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 11:30:48

Сейчас у меня в том-же самом коде при компиляции появляется всего одна ошибка, смысл которой мне тоже не понятен.
Код:
LIST   p=16F84A
       #include "p16f84a.inc"

; CONFIG
; __config 0xFFF1
 __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _CP_OFF
STATUS       equ       03h
PORTB       equ       06h
TRISB       equ       06h
      
       org 0   ; Nachalo programmi
; Podgotovitelnie momenti
       bsf       STATUS,5  ; Perehod v Bank 1
       clrf    TRISB
       bcf       STATUS,5  ; Perehod nazad v Bank 0
; Ustanovka signalov na portu B
START       movlw   b'10101010'
       movwf   PORTB
       goto    START
       end   ; Konec programmi

А ошибка такая:"Error[115] E:\PIC MICROCONTROLLERS\MY_PROJECTS\PROJECTS_PIC_MICROKONTROLLERS\2017\16F84A\LED_ON\LED_ON.X\LED_ON_ASM.ASM 9 : Duplicate label ("TRISB" or redefining symbol that cannot be redefined)"
Что она означает?

Добавлено after 9 minutes 59 seconds:
И вообще по поводу ошибок, нет ли у кого-нибудь желательно наиболее полного описания возможных ошибок в MPLAB X, под номерами которыми они обозначаются после компиляции

Добавлено after 1 minute 52 seconds:
Под номерами например Error[115] ...

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 11:43:51

Зачем ты пишеш status portb trrisb ?
Выкинь это всё из программы, тебе уже писали об этом и смени учебник.
http://www.labkit.ru/

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 12:02:31

otest писал(а):И вообще по поводу ошибок, нет ли у кого-нибудь
У кого-нибудь, может и нет, но почему не обратиться к производителю? Странно, во времена интернета не сходить просто на микрочиповский сайт и скачать оттуда. Ответ на ваш вопрос лежит на странице 163, а конкретно про 115-ю ошибку - на 164-й странице.

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 12:07:27

Ошибку явно видно
PORTB equ 06h
TRISB equ 06h

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 12:12:48

Ну, может товарищь еще не понял, что он подцепил командой #include? Что все эти статусы, порты и трисы уже там определены. Это, возможно, дойдёт со временем.

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 12:25:48

Ежли б не упор на новый Х (который на моих компах дико "тормозит")...
Шаблон-заготовки в 8.92 микрочип в состав самой IDE включал
для стиля абсолютной адресации
C:\Program Files\Microchip\MPASM Suite\Template\Code\*.TEMP.asm (где * - имя применяемого МК)
и для стиля относительной адресации
C:\Program Files\Microchip\MPASM Suite\Template\Object\*.TMPO.asm (где * - имя применяемого МК)
надеюсь это правило в отношении преемственности должно соблюдаться.
Описание работы с компилятором (и список ошибок) также стандартно включаются в состав самой IDE
(у 8.92 это C:\Program Files\Microchip\MPASM Suite\hlpMPASMAsm.html)
или собственно на сайте
http://ww1.microchip.com/downloads/en/D ... 33014L.pdf
...
В принципе ежли использовать суперновые МК то Х штуа весьма ЖЕЛАТЕЛЬНАЯ...
НО... в случае с "типовыми" все же предпочтение старому-доброму 8.92
(http://www.microchip.com/development-to ... ds-archive
раздел
"MPLAB IDE Archives
16-bit Windows 32-bit Windows 32-bit Windows"
строчка
"MPLAB IDE v8.92"
Только на сегодня еще и предварительно зарегистрироваться на сайте надо...
:evil:
Касательно PIC16F84/84A - этот МК превосходно и "устаревшей" IDE обрабатывается.
А вот тут имеются учебники/даташиты на русском:
http://www.microchip.ru/lit/?mid=1x0
:beer:

И дополнительно...
Ассемблер очень жестко привязан к схемке - хочется услышать путевый ответ - прилагаем к исходнику конкретную схему и описание того, что хотим от той схемы получить - тогда возможно и вариант проекта исходника для образца получить удастся.
8)
Как возможный вариант учебно-прикладного проекта под PIC16F628A (pin-to-pin с 84-м)
download/file.php?id=289869
:roll:

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 13:28:48

Повторю еще раз:

Все, что ДО org 0, удалите...

#include "p16f84a.inc" содержит адреса регистров, которые вы пытались описать в трех строчках...

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 16:48:49

и смени учебник.
http://www.labkit.ru/


Чему отсебятина, выложенная на том г.ресурсе, может научить?

Re: Помогите начинающему в освоении программирования PIC-ов

Вс окт 01, 2017 22:31:06

Согласен, у корабельникова самоучитель лучше. Только хардовый ассемблер, неприкрытый дефайнами и иклюдами учит молодых где раки зимуют.

Re: Помогите начинающему в освоении программирования PIC-ов

Пн окт 02, 2017 10:06:12

А у топикстартера похоже совсем настроение к работе отбили...
:(
Ответить