Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Rtmip писал(а):Через регистр-защелку, как внешнюю память к Р0.0 и Р0.1.
По поводу вашей программы ИК-приемника, вы в "кейле" пишете?
Зачем на два файла разделили? Помощь еще нужна или разобрались?

Самый простой (малоногий, дешевый) вариант этого регистра защелки, это 74HC573, или есть проще ?
Пишу в MCStudio, но подправлю (во всяком случае надеюсь, что смогу) под себя и кейловский код.
Разделил на 2 файла, потому что помимо приема ИК сигнала, планирую реализовать еще много чего, поэтому дроблю проект на мелкие файлы согласно задачам, на каждую задачу свой файл. Мне так потом легче проект под себя собрать, надо только ИК и управление реле, создал проект с 2 файлами и все. Надо добавить вывод на ЖК, добавил 3 файл, подправил мелкие моменты, скомпилировал и готово. Я так уже несколько раз делал, очень удобно. Уже есть свои "библиотечки" под ЖК HD44780, матричную клавиатуру, вывод и прием байта по UART, сенсорную клавиатуру. Благодаря вам, появилась и под воспроизведение мелодий))
Помощь нужна, пока нашел только ошибку, что после первого использования команды cjne изменяется содержиое АСС, и я опять не заносил содержимое TH0 в АСС. Подправил это, но проект продолжает быть не рабочим. При включении макета, на светодиоды выводится какое-то число и на команды с пульта не реагирует. В железе все точно правильно, потому что библиотека от Ридико (под RC-5) отлично работает. На данный момент библиотека выглядит вот так:
Спойлер

Код: Выделить всё

IR      equ     INT0               ; Выбираем INTO (INT1) ножку для подключения выхода TSOP
Frequency   equ     11059         ; Тактовая частота микроконтроллера в кГц, ввести нужное значение и скомпилировать, остальные значение расчитываются автоматически
StartBitLow   equ     50*Frequency/12000   ; 50 - старший байт таймера (в десятичной системе) для фиксации минимальной длинны старт бита (13 мс)
StartBitHigh   equ     54*Frequency/12000   ; 54 - старший байт таймера (в десятичной системе) для фиксации максимальной длинны старт бита (14 мс)
TimeBit      equ     6*Frequency/12000   ; 6 - старший байт таймера (в десятичной системе) для порогового значения бита данных (примерно 1600 мкс, все что меньше - 0, все что больше - 1)

dseg    at      7h
ShiftCounter:                                   ; Счетчик 8 бит (1 байта)
   ds      1
Symbol:                                         ; Здесь появляется байт посылки после каждого вызова попдрограммы Receive
        ds      1
ByteAdress:                ; Байт адреса устройства
   ds      1
InvByteAdress:               ; Инвертированнный байт адреса устройства
   ds      1
ByteCommand:                                    ; Байт принятой команды
   ds      1
InvByteCommand:                                 ; Инвертированнный байт принятой команды
   ds      1
Stack:                                          ; А дальше пойдет стек

cseg

   mov   ShiftCounter,#8                 ; Занесем значение в счетчик сдвига
   mov     Symbol,#0                       ; Обнулим переменную для храния байта посылки
   mov   TH0,#0                          ; Обнулим таймер, нам считать длинну байтов
   mov   TL0,#0

NEC:                                  ; Процедура обработки входящего сигнала, запускается по переходу уровня из 1 в 0 на ножке внешнего прерывания
   push    PSW
   push    Acc
   setb    TR1                   ; Запустим Timer0
   jb      TF0,Error                       ; При переполнении таймера выходим из цикла
   jnb     IR,$-3            ; Ждем конца низкого уровня старт-бита
                  ; Дождались смены уровня с низкого на высокий
   jb      TF0,Error                       ; При переполнении таймера выходим из цикла
   jb   IR,$-3            ; Ждем конца высокого уровня старт-бита
   clr     TR0                   ; Остановим Timer0
   mov     A,TH0            ; Загрузим старший байт счетного регистра Timer0 в Аккумулятор
   cjne    A,StartBitlow,Compare_1      ; Сравним с минимальным значением старт-бита (13 мс)
   jmp     Error                           ; Равно, значит неправильный старт-бит, значит это не посылка
Compare_1:
   jc      Error                           ; Меньше минимальной длинны, значит неправильный старт-бит, значит это не посылка
   mov     A,TH0                           ; Опять загрузим старший байт счетного регистра Timer0
   cjne    A,StartBitHigh,Compare_2   ; Сравним с максимальным значением старт-бита (14 мс)
        jmp     Error                           ; Равно, значит неправильный старт-бит, значит это не посылка
Compare_2:
   jnc   Error            ; Больше максимальной длинны, значит неправильный старт-бит, значит это не посылка                  ;

GoRecive:               ; Старт-бит правильный, начинаем прием посылки
   call    Receive
   mov     ByteAdress,Symbol                ; Первый байт - адрес устройства
   call    Receive
   mov     InvByteAdress,Symbol             ; Второй байт - инверсный байт адреса устройства
   call    Receive
   mov     ByteCommand,Symbol              ; Третий байт - байт команды
   call    Receive
   mov     InvByteCommand,Symbol           ; Четвертый байт - инверсный байт команды

Error:                                          ; Если мы пришли сюда джампом, значит была ошибка (переполнение таймера или еще какая-то фигня)
        mov   TH0,#0                          ; Обнулим таймер, нам заново считать длинну байтов
   mov   TL0,#0
if   IR=INT0                                 ; Очистим флаг внешнего прерывания,по которому попали в обработчик
   clr   IE0
else
   clr   IE1
endif
   clr     TF0                             ; Очистим флаг переполнения таймера, на всякий случай, может мы сюда из-за этого и попали
   pop     Acc
   pop     PSW
   reti
   
Receive:                                        ; Подпрограмма приема посылки (1 байта, 8 бит)
   mov   TH0,#0                          ; Обнулим таймер, нам заново считать длинну байтов
   mov   TL0,#0
   setb    TR0                   ; Запустим Timer0
   jb      TF0,Error                       ; При переполнении таймера выходим из цикла
   jnb     IR,$-3            ; Пока низкий уровень - ждем
                  ; Дождались смены уровня с низкого на высокий
   jb      TF0,Error                       ; При переполнении таймера выходим из цикл
        jb   IR,$-3            ; Ждем конца высокого уровня бита данных
   clr     TR0                   ; Остановим Timer0
   mov     A,TH0            ; Загрузим старший байт счетного регистра Timer0
   cjne    A,TimeBit,Compare_3      ; Проверим
   jmp     Error                           ; Пороговое значение, скорее всего ошибка
Compare_3:
   jc      Log_0                           ; Если был установлен флаг С, значит A меньше, чем TimeBit
log_1:                                          ; Флаг С не был установлен, значит А больше чем TimeBit
   setb    C                               ; Это лог. 1
   jmp     Sdvig                           ; Идем сдвигать
Log_0:
   clr     C                               ; Это лог. 0
Sdvig:
   mov     A,Symbol                        ; Закинем значение в А (в первый раз там будет 0, а после 8 сдвигов туда 8 раз задвинется состояние флага С, и мы на выходе получим наш байт)
   rrc     A                               ; Сдвинем вправо, потому что команды передаются младшим битом вперед
   mov   Symbol,A                        ; И закинем назад
   djnz    ShiftCounter,Receive            ; И валим принимать опять, пока не примем все 8 бит
   mov   ShiftCounter,#8         ; Приняли все 8 бит, заново занесем значение в счетчик сдвига
   ret
end


Файл основного цикла без изминений.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Rtmip писал(а):Судя по листингу программы из ссылки, порты Р1 и Р2 не подходят или я не понимаю, как это будет работать? :dont_know:

При обращении к полному адресному пространству (movx @dptr,a....) старший байт адреса фиксируется на линиях порта Р2 до следующего обращения или к Р2 или очередного цикла выборки ВПД/ВПП.
Регист младшего байта адреса в данном случае "упускаем" (фиксация адреса по ALE) и на момент присутствия активности /RD или /WR подбираем или выставляем данные на шину индикатора.
(комбинация управляющих сигналов есть содержимое старшего байта адреса в Р2).
Однако весьма неэкономно - Р2 использование ограничено и две линии Р3 "откусились".
Более актуально программное дополнение к байтовому порту из трех сигнальных линий управления или одного порта для работы в тетрадном режиме (4 бита данных, 3 управление и 1 "свободна").
8)
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Rtmip »

BOB51, в том то и дело, что старший байт выводится через Р2, а судя по листингу они имеют ввиду младший байт:

Код: Выделить всё

WRC_LC   EQU ХХХ0H   
RDC_LC   EQU ХХХ1H
WRD_LC   EQU ХХХ2H
RDD_LC   EQU ХХХ3H
или я чего не так понял из листинга? :dont_know:
Пока_без_кота, я не знаком с MCStudio :facepalm: и не очень понимаю как она там ассемблирует...
Но вот путаница возникает при переводе к "родному" ассемблеру, по поводу 2х файлов.
Похоже она предупреждения не показывает. Но эт ладно, это мелочи.
Вам готовую программу загрузить или рассказать какие ошибки допустили, как лучше будет? :)
Кстати, ваш второй вариант мне еще меньше понравился...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Значится там Сусанина след имеется - для байтового вывода короткой команды (movx @Ri,a.....) вполне достаточно, да и Р2 портить не будет.
8)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Rtmip писал(а):... как лучше будет? :)
Кстати, ваш второй вариант мне еще меньше понравился...

Для самообразования лучше будет рассказать про ошибки :)
И чем хуже второй вариант ?

И предупреждение по поводу нескольких файлов MCStidio выдает. Причем количество предупреждений коррелирует с числом файлов в проекте. Просто как мне обьяснили, ассемблер там однопроходной, поэтому я всегда компилирую по 2 раза, первый раз оно выдает столько варнингов, сколько сегментов накладывается друг на друга, а при второй компиляции, когда уже знает что куда накладывается, сшивает их один за другим и получается цельный файл, в котором нет наложений, и все последующие компиляции проходят без варнингов. Но стот поменять хотя бы 1 символ (даже в комментариях), и даже если вернуть все назад (Ctrl+Z), опять будут варнинги, и придется компилировать 2 раза. Но я считаю, что нажать 2 раза на кнопку компиляции - небольшая плата за удобство написания кода :))) Главное, только в 1 файле явно задавать начальный адрес сегмента, а во всех остальных этого не делать, и инклудники пропысывать после адреса org 30h этого файла, и тогда все получается (пока макимум дробил проект на 4 файла, но проекты у меня мелкие - учебные).
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Rtmip »

BOB51, согласен с вами :beer:
Пока_без_кота, посмотрел внимательнее ваш второй вариант, вы там уже нашли и исправили часть ошибок.
Не нравится он мне тем, что программа не работает, а вы вместо упрощения для быстрого нахождения ошибок,
усложняете ее, применяя выбор различных прерываний или так: "jb IR,$-3". Но по меткам легче разбираться.
Ну и в результате у вас там:

Код: Выделить всё

   mov   TH0,#0                          ; Обнулим таймер, нам считать длинну байтов
   mov   TL0,#0
.....
   setb    TR1                   ; Запустим Timer0
   jb      TF0,Error                       ; При переполнении таймера выходим из цикла
обнуляете один таймер, запускаете другой, сами положили грабли, сами ходите :))
По первому варианту, по-порядку, сначала пожелания:
Вы пишите длинные комментарии, это хорошо, но напишите чуть подробнее, например не просто
задаем число 50 = 13 мс, а почему именно это значение. Также и для остальных констант.
Пройдет несколько месяцев, и сами будете разбираться, а почему именно 13,8 мс верхняя граница?
Кстати, мне кажется, что границы надо сделать шире.
13,5 мс это ожидаемая длина в идеале, а в реале может быть и 14мс, тогда будет неуверенное декодирование.
«dseg at 7h» - тут вы не учли, что переменные у вас начнутся с R7, а в дальнейшем может
понадобиться нулевой банк регистров, а целиком он недоступен. Будете ломать голову, в чем ошибка.
Размер стека лучше задать явно, опять же, для будущих модернизаций.
Ошибки:
Сразу по метке «NEC:» надо обнулить таймер, иначе, счет для старт-бита будет неверен. Это уже поправили во втором.
Не знаю, как у вас студия обрабатывает сравнение: «cjne A,(StartBitlow),Compare_1»
но в обычном ассемблере это выражение будет означать сравнить с ячейкой памяти
по адресу (StartBitlow), а там у вас нули, поэтому все принятые данные мимо.
Надо так записать: «cjne A,#(StartBitlow),Compare_1». Тоже самое во всех остальных «сравнениях».
Далее, перед каждым вызовом П/П «Receive», вы забываете очистить переменную «Symbol» - это важно.
После всех этих исправлений и объединения двух файлов в один ваша программа у меня
заработала правильно, декодирует точно, правда в протеусе. Нет у меня пультов с NEC протоколом.
Проверьте сами в железе и отпишитесь.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

2 Rtmip
... обнуляете один таймер, запускаете другой, сами положили грабли, сами ходите :)) - Чистой воды опечатка, там и младенцу понятно что это бессмыслено, запускать один таймер, а останавливать другой. Ума не приложу как я все время этого не замечал :oops:
... почему именно 13,8 мс верхняя граница?... - Потому что в описании протокола написано, что в идеале должно быть 13,5мс. Верхнюю границу я взял чуть больше, нижнюю - чуть меньше. Думаю тут проблем не будет.
... границы надо сделать шире... - Немного расширил, спасибо
...«dseg at 7h» - тут вы не учли, что переменные у вас начнутся с R7... - Вот тут непоняточка. Сперва я так как Вы говорите везде и писал, но потом вычитал, что по умолчанию там хранится значение 7h, а также вычитал, что при push сперва значение счетчика увеличивается на 1, а потом в ячейку памяти записывается информация. При pop наоборот. Получается, что значение 7h увеличится на 1 (станет 8h, то есть R0 1 банка) и потом по этому адресу запишется байт. Поэтому начал писать так. Получается я неправильно понял :oops:
Ошибки:
...Не знаю, как у вас студия обрабатывает сравнение: «cjne A,(StartBitlow),Compare_1»... - Мой косяк, начинал с ассемблера под AVR, и все никак не переучусь. Это собственно и есть главная ошибка, из-за которой все не работало :beer:
Далее, перед каждым вызовом П/П «Receive», вы забываете очистить переменную «Symbol» - это важно... - Незнаю, мне казалось без разницы что там находится, после того как туда 8 раз задвинется состояние флага С, там будет мой байт, и это для меня главное. Что там было до этого - меня не волнует. Компилировал без этого замечания, и все работает нормально. Спасибо Вам огромное, надеюсь это не отняло у Вас много времени.
Для меня самое главное, что в общем я сумел правильно реализовать алгоритм. Правда из 4 пультов, на которые я надеялся, что они работают в этом протоколе, действительно работающими в нем оказалось лишь 2. Остальные 2 скорее всего Extended NEC. Они кстатии пагубно влият на собранную систему - после того как с их помощью послать посылку, микроконтроллер на несколько секунд как бы подвисает и ни на что не реагирует.
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Rtmip »

А чем Extended NEC отличается?
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Rtmip писал(а):А чем Extended NEC отличается?

Ну основное это то, что теперь не передается инверсный байт адреса, а вместо этого адрес теперь состоит из слова (2 байт, старшего и младшего). Это позволяет адресовать больше устройств. Может что-то еще изменили, я дальше не вникал, времени, да и потребности не было.
Теперь хотелось бы разобратся с дисплеем на внешней шине. Прочитал все, но так и не понял к чему вы с BOB51 пришли. В приведенном примере подключения дисплея к внешней шине ошибка ("след Сусанина") ?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Не столько ошибка, сколько излишнее расходование или ресурса выводов МК или внешних микросхем обвязки.
Имеем при байтовом обмене 8 линий данных и 3 линии управления.
Метод использования movx достаточно быстр...
НО...
вместо 3 линий управления задействовано или 10 (movx dptr) так как теряем весь Р2, или дополнительно в схеме должны появиться парралельный регистр для младшего байта адреса и микруха 2И (1/4 от всей микрухи).
В обеих случаях аппаратный геморой с дополнительными детальками и трассировкой печатки обеспечен... :facepalm:
Есть третий вариант - гнать байтом через Р0 данные, а линии управления задать в области Р2 или Р1 с программной генерацией циклов чтения/записи. (см. t9.asm в download/file.php?id=199128 )
Есть и четвертый вариант - использовать тетрадный режим обмена с дисплеем - тогда полностью все фыводы Р0 и еще один лишний останется, но это чисто программный обмен должен быть.
8)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

BOB51 писал(а):...Есть третий вариант - гнать байтом через Р0 данные, а линии управления задать в области Р2 или Р1 с программной генерацией циклов чтения/записи.
Есть и четвертый вариант - использовать тетрадный режим обмена с дисплеем - тогда полностью все фыводы Р0 и еще один лишний останется, но это чисто программный обмен должен быть.8)

Четвертый вариант, это я так понял чистый "ногодрыг" без использования Р0 в режиме работы с памятью ?
А третий, это "полуногодрыг" ? (данные в дисплей гоним по шине, а режим задаем ногодрыгом).
И програмно работа с дисплеем усложнится, по сравнению с исходной ссылкой ?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

И третий и четвертый в идеале программный ногодрыг при свободе выбора управляющих лапок.
Ничего в том сложного особо нету - заводится отдельным блоком в виде комплекта подпрограмм с длинным вызовом. (А пример в T9).
8)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Ну, то что сложного ничего в ногодрыге нету, это я знаю, свою маленькую библиотечку под HD44780 с произвольным выбором порта данных и ножек управления, я уже написал. Но мне заявили, что так управлять дисплеем с помощью MCS-51, это моветон, и дали ссылку которую я уже приводил ранее. Вот, захотелось освоить и этот способ. Вариант с полной потерей Р2 меня не устраивает, получается только вариант с тригером-защелкой и 2И-НЕ.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Без триггера, но повнимательнее присмотреться к сигналам управления и с опорой на Р1 (дополнительные линии).
Управление как внешней ОЗУ диапазона адресов 0-255 в "полном" варианте потянет лишние внешние деталюшки с проблематичной разводкой (двухслойный вариант печатки). Применяется только в ранних разработках или как побочный эфект при использовании УВВ отображенных на ВПД.
Выбор решения однозначно за автором конкретной самоделки.
:beer:
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Доброго времени суток. Учусь использовать макросы. Описываю его вот так:

Код: Выделить всё

Delay_3_Cycles  macro
      nop
      nop
      nop
      endm

Не могу понять как его "вставить" в нужном мне месте.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Синтаксис макроса зависит от компилятора.
В тексте программы встраивается как "псевдокоманда" по заданному при объявлении имени.
....
.....
Delay_3_Cycles
....
....
:)
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Ser60 »

Пока_без_кота писал(а):библиотечку под HD44780

Жалко ног МК под дисплей - сегодня имеется прорва доступных символьных и графических дисплеев с I2C интерфейсом.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

BOB51 писал(а):... :)

Вот я сперва так и объявлял - компилятор ругается((
Обратил внимание, что в Интеловской аппноте при вызове макроса перед ним пишут #*. Подумал что и в моей ИДЕ надо что-то подобное писать, но именно эта комбинация не проходит, накидайте еще, какие вам встречались по памяти, может мне какая-то подойдет. Файл документации по своей ИДЕ прочитал, там про это ни слова.
2 Ser60
Ну 6 линий мне пока не очень жалко на это дело. К тому же I2C еще не освоил.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Да вроде все одинаковы ...
Макрос "без параметров" - отступаем минимум пробел-два пробела от начала строки и вводим название макроса... Так и у 51-й и у АВРок и у ПИКов...
:dont_know:
Описание читать надо...гляну, мож где в самиздате валяется - я ту среду рассматривал - хороший симулятор-отладчик, но синтаксис... мнеу весьма не понравился (полностью свои исходники подгонять/редактировать заколебался) - оттого и не пользуюсь.
8)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

BOB51 писал(а):Да вроде все одинаковы ... 8)

Вы правы, это я как всегда отмочил. Описал макрос в сегменте кода, да еще в самом конце (перед end). Переместил в самое начало, до директивы cseg и все отлично скопилировалось. Хотя вот только что проверил, можно чтобы он был и в сегменте кода, главное чтобы он был описан до первого "упоминания" в сегменте кода.
А среду менять, когда есть уже куча наработок, конечно нелегко, тем более, если нет насущной необходимости. Легче писать там, где получаеться, ведь нам, любителям, важен не только результат, но и удовольствие от самого процеса.
Ответить

Вернуться в «Разные вопросы по МК»