Например TDA7294

Форум РадиоКот • Просмотр темы - Котуинко
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт фев 24, 2026 08:36:46

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2383 ]     ... , , , 47, , , ...  
Автор Сообщение
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт мар 24, 2020 11:16:14 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Я ж и с тем, что есть вполне необходимый результат получаю

а разве не интересно получить результат, используя более продвинутые современные средства. Усилий потребуется совсем мало, а удовольствия будет много (человеку свойственно новое изучать - это одно из сильнейших удовольствий). Да и форуму значительная польза.


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт мар 24, 2020 13:57:50 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Классика - это уже имеющийся проверенный рабочий инструмент.
Довести до максимальной отдачи гораздо полезнее.
А изучение дополнительного материала так уже такого, который позволит чуток дальше пройти.
Та же аадуринья к примеру.
Хоть и не в абсолюте - но таки С++ там имеется, да и некая универсальность - один и тот же набор функционала для разных семейств пригоден - от АВРок до АРМ и ESP.
А там по мере переваривания можно и поглубже влезть.
Да добавить комбинированные проекты на разных кристаллах под ассемблером ("периферия с мозгами").
Другие варианты подхода и без меня в достаточном количестве рассматриваются на форуме.
:beer:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт мар 24, 2020 16:06:55 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
А там по мере переваривания можно и поглубже влезть.


А не получится...


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт мар 24, 2020 17:47:36 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Классика - это уже имеющийся проверенный рабочий инструмент.

ну так GCC - это уже имеющийся отличный проверенный рабочий инструмент, классическая классика, класичней не бывает - им для Линукс ядра и программы собирают. Для AVR WinAVR чуть ли не сначала века существует - как разработчику можно было такое пропустить. Arm-none-eabi-GCC может компилировать от CortexM0 до Raspberry-PI. Для ESP на родном сайте для загрузки есть SDK с GCC. Если б кто на форуме освоил разработку ESP+GCC - памятник ему нерукотворный :)


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт мар 24, 2020 18:58:55 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
А мне, dosikus, спешить некуда.
Когда-то уже попытки "пинаться" были...
Но по нынешним временам-штука бесполезная.
:sleep:
Насчёт классики я имел ввиду комплект компиляторов ассемблера от атмел и мпасм .
Вполне достаточно для комфортной работы с прикладными самоделоками.
Лезть в глубины Си пока без особой надобности.
Да и необходимость в том больше для тех, кто профессиональной разработкой занимается.
8)
Насчёт ESP...
Трудно сказать чего там в адуринке под эту платформу понапихали... Говорил же, что разбираться в том профи надо.
Судя по матюкам при замене версии платформы там не только GCC используется... Чего-то ещё впихнули... Версия старше 2.5.0 только под семеркой/десятков устанавливается.
Но то "к сведению". Пока еспшки меня особо не увлекают - лежит "для коллекции".
:sleep:

Дополнительный плюсик oleg110592 за дискус относительно места расширений asm/txt в проектах под ассемблером!
:beer:
Появился повод пройтись еще разок по нюансам компилятора ассемблера примененного в ST visual develop для STM8.
:write:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт мар 26, 2020 23:49:08 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Новая версия PICPgm
http://picpgm.picprojects.net
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 07, 2020 17:40:48 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Новый релиз симулятора ардуиноUNO
2.7.1
https://www.sites.google.com/site/unoardusim/
:hunger:
Весьма интересный контроллер клавиатуры/дисплея:
http://img.radiokot.ru/files/20529/26a31lzchb.jpg
и даташитки к нему
Вложение:
AN3890.pdf [186.53 KiB]
Скачиваний: 129

Вложение:
AN3892.pdf [246.95 KiB]
Скачиваний: 140

Вложение:
AN3893.pdf [202.38 KiB]
Скачиваний: 129

Вложение:
AN3894.pdf [192.5 KiB]
Скачиваний: 141

Вложение:
MPR121_NXP.pdf [379.91 KiB]
Скачиваний: 151

:hunger:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср апр 08, 2020 06:34:00 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Добавлю последние две даташитки для MPR121 (за один раз не все влезло - их таки всего7 штук)
Вложение:
AN3889.pdf [357.72 KiB]
Скачиваний: 134

это самая первая из аппноток (но не самая интересная - потому и оставил на добавку)
и второй вариант даташита от freescale
Вложение:
MPR121_freescale.pdf [1.08 MiB]
Скачиваний: 134

ибо там чуток отличается от NXP...
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср апр 15, 2020 09:18:52 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
К вопросам многофайловиков и сегментов...
Вроде наметился обходной финт с применением директив условного ассемблирования...
Пока "в стадии размышления"...
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вс апр 19, 2020 04:55:31 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
немножко подредактированная сводка по директивам
Вложение:

и шаблончик дефайна АВРок, с учетом будущих поползновений:
Спойлер
Код:
;
;         "defname_proto.txt"  файл объявленных имен, бит и констант (шаблон)
;
;----------
; variable definitions
;(таблица обьявленных имен)
;_____
;
; в случае многофайлового проекта раскомментировать данную строку
; при однофайловом или иногофайловом с единственным определением hsi
; определение disposit не требуется
 #ifndef disposit
 #define disposit
 #endif
;----------
;
;таблица обьявленных имен - пользовательские константы
;

;_____
;таблица обьявленных имен - переназначение регистров РОН
;
;             принята базовая модель: AVR
; область ограниченного функционала
 .def mfr0 = r0 ; (математика и обмен с ПЗУ/самопрограммирование)
 .def mfr1 = r1 ; (математика и обмен с ПЗУ/самопрограммирование)
 .def ssreg = r2 ; зеркало SREG (ограниченный функционал)
 .def sspl = r3  ; зеркало SPL (ограниченный функционал)
; .def ssph = r4  ; зеркало SPH (ограниченный функционал)
 .def smartf0 = r5  ; оперативные флаги (ограниченный функционал)
; .def smartf1 = r6  ; оперативные флаги (ограниченный функционал)
; .def  = r7 ;(ограниченный функционал)
; .def  = r8 ;(ограниченный функционал)
; .def  = r9 ;(ограниченный функционал)
; .def  = r10 ;(ограниченный функционал)
; .def  = r11 ;(ограниченный функционал)
; .def  = r12 ;(ограниченный функционал)
; .def  = r13 ;(ограниченный функционал)
; .def  = r14 ;(ограниченный функционал)
; .def  = r15 ;(ограниченный функционал)
; область полного функционала
 .def tmpr0 = r16 ; рабочий регистр (полный функционал)
 .def tmpr1 = r17 ; рабочий регистр (полный функционал)
 .def tmpr2 = r18 ; рабочий регистр (полный функционал)
 .def tmpr3 = r19 ; рабочий регистр (полный функционал)
 .def tmpr4 = r20 ; рабочий регистр (полный функционал)
 .def tmpr5 = r21 ; рабочий регистр (полный функционал)
 .def tmpr6 = r22 ; рабочий регистр (полный функционал)
 .def tmpr7 = r23 ; рабочий регистр (полный функционал)
 .def bpl = r24 ; "указатель базы" (полный функционал)
 .def bph = r25 ; "указатель базы" (полный функционал)
;     Xl = r26 ; адрес сегмента Х (полный функционал)
;     Xh = r27 ; адрес сегмента Х (полный функционал)
;     Yl = r28 ; адрес сегмента Y (полный функционал)
;     Yh = r29 ; адрес сегмента Y (полный функционал)
;     Zl = r30 ; адрес сегмента Z (полный функционал ПЗУ/самопрограммирование)
;     Zh = r31 ; адрес сегмента Z (полный функционал ПЗУ/самопрограммирование)
; регистры Xh:Xl, Yh:Yl, Zh:Zl определены в дефайне изготовителя и в системе команд
; изменение их имени хотя и возможно, но нежелательно -
; возникает путаница с интегрированной абревиатурой системы команд
; регистры имеют также отображение в пространстве ОЗУ 0х0000 - 0х001F

;_____
;таблица обьявленных имен - секция флагов пользователя
;

;_____
;таблица обьявленных имен - секция определенных данных (ОЗУ)
;
; следует помнить, что блок регистр-аккумуляторов занимает область
; 0х0000 - 0х001F (R0 - R31)
; а блок РСФ со смещением +0x20 отображен с адреса 0х0020
; по SRAM_START -1 (имя_регистра_РСФ + 0х20)
;
  .dseg
; .org SRAM_START ; может не выставлться - по умолчанию равен SRAM_START
;
; блок из 16 ячеек общего пользования с вероятностью взаимозатирания
; в модулях имена могут переопределяться как
; #define new_name tmpdN
;
 tmpd0: .byte 1
 tmpd1: .byte 1
 tmpd2: .byte 1
 tmpd3: .byte 1
 tmpd4: .byte 1
 tmpd5: .byte 1
 tmpd6: .byte 1
 tmpd7: .byte 1
 tmpd8: .byte 1
 tmpd9: .byte 1
 tmpd10: .byte 1
 tmpd11: .byte 1
 tmpd12: .byte 1
 tmpd13: .byte 1
 tmpd14: .byte 1
 tmpd15: .byte 1

;_____
;таблица обьявленных имен - секция определенных данных (EEPROM)
;
  .eseg
;_____

В принципе для обобщенных "сегментов" в разных файлах проекта предполагается не автоперенос, а автодобавка RET во фрагментах "сбиваемых в единый сегмент".
При автономной отладке этот спецучасток работает как обычный фрагмент программы, а при "сборном" - как вызываемая из необходимого места главного проекта подпрограмма...
Остальное пока в работе/проверке...
:write:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пн апр 27, 2020 09:11:45 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
".def tmpr0 = r16 ; рабочий регистр (полный функционал)..."
зачем так называть хорошие рабочие регистры, вот, имхо, хороший японский шаблончик
Код:
.def   AL   = r16
.def   AH   = r17
.def   BL   = r18
.def   BH   = r19
.def   CL   = r20
.def   CH   = r21
.def   DL   = r22
.def   DH   = r23
.def   EL   = r24
.def   EH   = r25

хорошее дополнение к XL XH YL YH ZL...
вполне наглядно в коде (практически как 16-и битный типа i8088):
Код:
   ldiw   A, 4      ;Merge lower 12 bits and higer 24 bits
   lsr   CL      ;
   rorw   B   ;
   ror   AH      ;
   dec   AL      ;
..................
.macro   ldiw
   ldi   @0L,low(@1)
   ldi   @0H,high(@1)
.endm

.macro   rorw
   ror   @0H
   ror   @0L
.endm

з.ы. в шаблончике строку "; variable definitions" изменить на "; метка definitions" :)))


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пн апр 27, 2020 19:42:08 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Затем, чтобы потом можно было использовать конструкцию типа
#define AL tmp0
#define AH tmp1
в одном модуле и затем, к примеру,
#define copi_0 tmp0
#define cnt_2 tmp1
в другом.
При условии, что оба модуля являются составной частью проекта через
.include .......
а базовое объявление делается однократно в основном файле проекта
или как в моем сленге в виде подключаемого к главному проекту
.include defname_proto.txt
делается для уменьшения текстовой нагрузки на главный файл проекта.
8)
Кстати... такой подход действует одинаково для всех трех "базовых" компиляторов
C51asm, avrasm2 и mpasm для mplabIDE v8.92...
:wink:

Там в заголовке тогда уже :
table definitions names
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 28, 2020 08:03:21 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Какой такой одинаковый подход, если отец производитель Microchip показывает в многочисленных документах как надо писать для mpasm (см например документ TB094 Dimming AC Incandescent Lamps Using A PIC10F200):

Код:
   #include p10f206.inc

   __CONFIG _MCLRE_OFF & _CP_OFF & _WDT_ON & _IntRC_OSC

   ERRORLEVEL -306            ; Get rid of banking messages...

;******************************************************************************
;***** VARIABLE DEFINITIONS

   cblock 0x08            ; Define all user varables starting at location 0x7
      system_status         ; byte that holds system flags
      intensity         ; 3 bit number for current intensity setting
      dead_count         ; counts dead cycle to zero intensity
      counter:3         ; used for 4hr timer
      delay            ; used for triac drive
      ir_counter         ; counts time IR input is low
      dark_counter         ; counts time IR input is high
      ir_minimum         ; holds IR low min time for decode
      count:2            ; holds time delay for triac startup
      hold            ; temperary variable
   endc

;******************************************************************************
;***** CONSTANT DEFINITIONS

#define rx_ena   GPIO,0            ; enables IR receiver
#define rx_dat   GPIO,1            ; carries IR receiver data input
#define   triac   GPIO,2            ; active low triac drive
#define z_cross   GPIO,3            ; zero crossing input for Reset on Change

#define dunflg   system_status,7         ; interlock to prevent repeat of commands
#define phase   system_status,0         ; used to determined if zerocross or IR data change
.....

для так называемых "table definitions names" тут четко используется cblock адрес...endc, а для констант #define, хотя директива cblock это определение блока констант.
В pic10f206 начиная с адреса 0x08 находятся General Purpose Registers
з.ы. в заголовке таки VARIABLE DEFINITIONS :)))


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 28, 2020 09:02:22 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
А как насчет работы с МК, имеющими только область udata_shr?
:wink:
Я ж про подобную ситуацию в отношении микрощиповских среднемладших подробненько в
"Вариации на тему трактования ассемблерописания.doc"
чуток повыше разжевал.
И не путайте абсолютную адресацию (cblock) у микрощипа с относительной!
У микрощипа ДВА несовместимых варианта(стиля) написания программ - для перемещаемого кода (относительная адресация) и для фиксированных адресов (абсолютная).
Там в заготовках два вида шаблонов указываются
C:\Program Files\Microchip\MPASM Suite\Template\Code - заготовки для абсолютной адресации
и
C:\Program Files\Microchip\MPASM Suite\Template\Object - заготовки для относительной.
В этом отношении мпасм весьма коварен (у c51asm и avrasm2 в едином тексте допускается применение директив для обеих видов адресации - то уж на усмотрение программиста).
Я же рассматриваю систему исключительно для работы с перемещаемым кодом (относительная адресация)
В мпасме это директивы разметки
udata
udata_ovr
udata_shr
и для 18-х
udata_acs
применение cblock для констант в данном случае некорректно и вполне спокойненько заменяется на общеприменяемое equ.
Отдельного рассмотрения требует idata поскольку резервирует косвенную адресацию, а у c51asm такой механизм блокирует доступ для обычной адресации. Вобщем... лучше без надобности idata не трогать.
8)
Вот, к примеру, для ранее приведенного в этой ветке проекта "кухонного таймера "KTP"" на PIC16F628 файлик разметки:
Спойлер
Код:
;
;         "def_ktp.txt"  файл объявленных имен, бит и констант (шаблон)
;
;----------
; variable definitions
;(таблица обьявленных имен)
;_____
;таблица обьявленных имен - пользовательские константы
;  /equ, set/
zero     equ 0
mrak     equ 0xFF

tmm_m60  equ .60 ; модуль секунд и минут
tmm_m24  equ .24 ; модуль часов
;
; константы управления
;    для подпрограммы дисплея KD
;
bblok       equ 56 ; количество бит в блоке (2 блока в пакете)
L_INH       equ 3 ; позиционный номер линии /INH (RA3)
L_DN        equ 0 ; позиционный номер линии DN (RA0)
L_SCL       equ 1 ; позиционный номер линии SCL (RA1)
L_CE        equ 2 ; позиционный номер линии CE (RA2)
s_ter0      equ b'00110000' ; служебная тетрада битового блока 0
;        0b00110000 for ks0035p, 0b00010000 for nju6432bf
; однако 0b00110000 применимо и для ks0035p и для nju6432bf
s_ter1      equ b'10010000' ; служебная тетрада битового блока 1
s_mask      equ 0x0F ; маска для обслуживания/загрузки служебных тетрад
;  размещено в kd_flags
c_tmp       equ 0 ; рвх содержимого для передачи в блок1
ksdd_w      equ 1 ; триггер-переключатель обслуживания вывода/обработки данных
ksdd_sf     equ 2 ; семафор запроса готовности данных для загрузки дисплея/
mark        equ 3 ; повторитель таймер-маркера
; определения имен сегментов
s_A    equ 1
s_B    equ 7
s_C    equ 5
s_D    equ 4
s_E    equ 2
s_F    equ 0
s_G    equ 3
s_H    equ 6

;---------- ---------- ----------
;
; ---------- константы termo.txt ----------
;  для подпрограммы обработчика данных MT
;
mt_e4  equ 0x2710 ; 10000 десять тысяч
mt_e3  equ 0x3E8  ;  1000 тысяча
mt_e2  equ 0x64   ;   100 сто
mt_e1  equ 0x0A   ;    10 десять
mt_sz  equ 0      ; сегментный код пробела
mt_smi equ (1<<s_G) ; сегментный код знака минус
;
;  размещено в mt_flags
;
ZFI       equ 0 ; несовпадение с предыдущими данными
mins      equ 1 ; статус отрицательной температуры
fobl      equ 2 ; статус обработчика лидирующих незначащих нулей
shot      equ 3 ; сокращенная форма (только от сотен)
shot_ck   equ 4 ; сокращенная форма для часов/таймеров (только десятки)
;
;---------- ---------- ----------
;
;   размещено в tmm_flags
tmm_apdnf   equ 0 ; флаг направления счёта 0=вверх, 1=вниз
tmm_tmoff   equ 1 ; отсчет окончен
tmm_dissn   equ 2 ; запрет исполнения дополнительных кнопок
               ; управления при счете времени
tmm_zud     equ 3 ; флаг использования счетчика длительности
               ; cnt_zum+2 для остановки исполнения зуммера
tmm_ino     equ 4 ; запрет сброса счетчиков TMR1H:TMR1L
     ; при повторно-многокартных пусках/остановах счета времени
;
;---------- ---------- ----------
; общее определение выводов
ZUM0        equ 6 ; вывод пушпула зуммера 0 (RA6)
ZUM1        equ 7 ; вывод пушпула зуммера 1 (RA7)
EXT_ln0     equ 4 ; линия "внешнего интерфейса" разъём EXT_MODE:7
                  ; порт RA4
EXT_ln1     equ 1 ; линия "внешнего интерфейса" разъём EXT_MODE:5
                  ; порт RB1/RxD
EXT_ln2     equ 2 ; линия "внешнего интерфейса" разъём EXT_MODE:3
                  ; порт RB2/TxD
EXT_ln3     equ 3 ; линия "внешнего интерфейса" разъём EXT_MODE:1
                  ; порт RB3/CCP1
L_Sn1       equ 4 ; ЛВК кнопки S1 (GREEN) порт RB4
L_Sn2       equ 5 ; ЛВК кнопки S2 (RED) порт RB5
L_Sn3       equ 0 ; ЛВК кнопки S3 (GREY) порт RB0


;_____
;
;
;---------- ---------- ----------
TEMPO     udata_ovr 0x20
tmp_0 res 1
tmp_1 res 1
tmp_2 res 1
tmp_3 res 1
tmp_4 res 1
tmp_5 res 1
tmp_6 res 1
tmp_7 res 1
tmp_8 res 1
tmp_9 res 1
tmp_a res 1
tmp_b res 1
tmp_c res 1
tmp_d res 1
tmp_e res 1
tmp_f res 1
;----------
TEMPO    udata_ovr  0x20 ; kd_tmp буферобработчика вывода на дисплей
d_blok0     res 6 ; битовый блок 0 из 6 байт
ub_bl0      res 1 ; служебная тетрада битового блока 0 из 1 байта
d_blok1     res 6 ; битовый блок 1 из 6 байт
ub_bl1      res 1 ; служебная тетрада битового блока 1 из 1 байта
gape_0      res 1 ; резерв для совместимости
;----------
TEMPO    udata_ovr  0x20 ; vid_ram буфер строки сегментного кода для вывода на дисплей
kd_pos1     res 1 ; буфер сегментного кода для позиции 1
kd_pos2     res 1 ; буфер сегментного кода для позиции 2
kd_pos3     res 1 ; буфер сегментного кода для позиции 3
kd_pos4     res 1 ; буфер сегментного кода для позиции 4
kd_pos5     res 1 ; буфер сегментного кода для позиции 5
kd_pos6     res 1 ; буфер сегментного кода для позиции 6
kd_pos7     res 1 ; буфер сегментного кода для позиции 7
kd_pos8     res 1 ; буфер сегментного кода для позиции 8
kd_pos9     res 1 ; буфер сегментного кода для позиции 9
kd_pos10    res 1 ; буфер сегментного кода для позиции 10
;
kd_tempo   udata 0x30 ; [adres] основное ОЗУ вывода, RB0
kd_cnt_bit  res 1 ; счётчик бит
kd_cnt_byt  res 1 ; счётчик байт блока
kd_flags    res 1 ; tmp_e & tmp_f
kd_tmp_fsr  res 1 ; РВХ содержимого fsr на время выполнения модулей kd_
             ; он же и  РВХ содержимого pclath для загрузчика сообщения
kd_strn_h   res 1 ; старший адрес строки для загрузчика сообщения
kd_strn_l   res 1 ; младший адрес строки для загрузчика сообщения
; termoto_mt udata ; обработчик данных/математика
mt_didl     res 1 ; делимое младший байт
mt_didh     res 1 ; делимое старший байт
mt_disl     res 1 ; константа делителя младший байт
mt_dish     res 1 ; константа делителя старший байт
mt_tmp      res 1 ; контрольные биты проверки несовпадения (двухбайтовой)
mt_re4      res 1 ; результат *10000
mt_re3      res 1 ; результат *1000
mt_re2      res 1 ; результат *100
mt_re1      res 1 ; результат *10
mt_re0      res 1 ; результат *1
mt_datl     res 1 ; двоичный результат для автоматики младший байт
mt_dath     res 1 ; двоичный результат для автоматики старший байт
mt_flags    res 1 ; флаги пользователя
mt_tmp_fsr  res 1 ; РВХ содержимого fsr на время выполнения модулей mt_
;
t_mk_tct    res 1 ; регистр тайм аута задержки времени t_slot
;
;timers   udata ; [adres] ; регистры таймеров
tmm_flags   res 1 ; регистр флагов таймеров
tmm_sek     res 1 ; счетчик секунд
tmm_min     res 1 ; счетчик минут
tmm_hors    res 1 ; счетчик часов
tmm_m_adj   res 1 ; счетчик минут задано пользователем
tmm_h_adj   res 1 ; счетчик часов задано пользователем
;
cnt_zum  res 4 ; счетчики интервала
zumout   res 1 ; буфер вывода сигнала зуммера для порта RA
sni_buf  res 1 ; буфер чтения ЛВК
sni_mask res 3 ; буфер масок ЛВК
;
;---------- ---------- ----------
;
;_____
;таблица обьявленных имен - секция флагов пользователя
;  /equ, set/
;---------- ---------- ----------
; для регистра

;
;
;---------- ---------- ----------
; данные с одинаковыми именами и адресами в разных регистровых банках
PROG_STECK    udata_shr  0x70 ; 0x70 - 0x7F = 16  byts
w_temp         res     1        ; variable used for context saving
status_temp    res     1        ; variable used for context saving
gtmp_fsr       res     1        ; главный РВХ для FSR при прерывании
gtmp_pclath    res     1        ; главный РВХ для PCLATH при прерывании
zntmp          res     2        ; для kaznak и подобных ***

;
;----------
; таблица обьявленных имен - переназначение регистров РОН/РСФ
;  по директиве
; #define expr name
;    для подпрограммы дисплея KD
 #define port_ksd PORTA ; переприсвоение порта вывода
 #define blok_ra  ~(1<<L_DN | 1<<L_SCL | 1<<L_CE) ; состояние покоя для порта А
           ; при простое обмена с индикатором и отсутствии активности зуммера
                ; и линии RA4(EXT_ln0)
 #define zumask   (1<<ZUM1 | 1<<ZUM0) ; маска инверсии зуммера
                  ;она же и отключение зуммера

8)


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 28, 2020 09:23:17 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Цитата:
У микрощипа ДВА несовместимых варианта(стиля) написания программ

значит утверждение "такой подход действует одинаково для всех трех "базовых" компиляторов" не совсем верно - только при написании "перемещаемого кода", зачем, правда, он нужен перемещаемый для pic10f200 непонятно. Есть ссылки на код для любительского pic10/12/16 где оправдано используется перемещаемый?
(создатель OSA) Виктор Тимофеев
MPASM: как оформлять программы
http://pic24.ru/doku.php/osa/articles/mpasm_formatting
Изображение


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 28, 2020 11:11:48 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
За тем же, зачем и самоограничения по применению специфических для каждого из компиляторов директив.
Однотипность подхода к написанию исходников и максимально возможное использование одинаковых
по функционированию директив.
8)
Относительно той cblock у Тимофеева...
У него ведь ВСЕ описания только относительно ПИКовых выполнены.
В таком случае вполне объяснимо.
А в случае работы с другими семействами необходимо выбирать общие позиции для ВСЕХ
применяемых компиляторов.
Дабы проще переходить с одного семейства на другое в случае смешанного проекта было.
Да и "старая школа" любителей ПИКовых основывалась в основном на проектах не использующих
директивы относительной адресации.
По тем
udata
udata_ovr
udata_shr
udata_acs
вообще трактовку применения найти тяжеловато.
:roll:

Относительно "оправданного использования"...
Проект, в котором используются модули вида .include уже подразумевает необходимость использования "перемещаемого кода".
Ибо модуль может быть установлен вставкой в любом удобном месте.
Для ПИКовых правда есть и другой вариант сцепки *.asm модулей с помощью IDE (используя линкер), но такой вариант "вышибает" совместимость с C51asm и avrasm2 для построения "многофайловиков".
Посему и выбирается, как уже выше говорилось максимально совместимый комплект директив и правил оформления проектов.
:write:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 28, 2020 11:45:27 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
За тем же, зачем и самоограничения по применению специфических для каждого из компиляторов директив.
Однотипность подхода к написанию исходников и максимально возможное использование одинаковых

не вяжется с:
Цитата:
Вариации на тему трактования ассемблерописания
В случае с абсолютной адресацией распределение ОЗУ в mpasm значительно проще и определяется единственной

директивой CBLOCK

зачем "в скафандре сено косить"(с) если есть способ ЗНАЧИТЕЛЬНО проще. Подобные конструкции делают для упрощения жизни программиста.
Разве кто-то делает сразу проекты под три семейства каждый день? :shock:
Несложно и проще записать в блокнотик правила для каждого примитивного ассемблера трех семейств.
Уже тут писали - "для проще переходить с одного семейства на другое" придумали Си - в наше время компиляторы для всех трех семейств вполне пригодны для успешного применения. Имхо лучше потратить время на изучение Си чем на впихивание невпихуемого.


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 28, 2020 14:40:08 
Друг Кота
Аватар пользователя

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

Пока подготовка к методике перестановки секций в .include модулях в область начальной инициализации,
да еще некоторые "тонкости" надо неспешно проработать - просто раньше этот вопрос особо не возникал.
Сейчас интерес к автоматизации процесса переброски посредством имеющихся ресурсов (с Вашей же подачи) появился.
Будет на чем обкатать/опробовать - по ходу работ выложу.
:write:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 28, 2020 15:27:12 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Да так, чтобы легко восстановить навык даже в случае перерыва.

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


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт апр 28, 2020 15:48:48 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15482
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Обычно старый исходник читать - легче заново переписать.
Особо с учетом новой информации.
Да и стиль работ с течением времени меняется.
Заготовки - шаблоны "в общих чертах" это более оптимально.
Они сохраняют преемственность структуры проекта.
Однако... все зависит от конкретики - где малый вариант, а где и полный максимум придется делать.
Насчет начинающих - они тоже РАЗНЫЕ.
8)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2383 ]     ... , , , 47, , , ...  

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y