Перейти к содержанию
AUTO TECHNOLOGY

Можен кто-то помоч сделат карти опеля C16SE


Рекомендуемые сообщения

Все расписывать не буду. Слишком долго. Да и не туда ты полез. Хотя для расширения кругозора и освоения арифметки полезно...

Выборка из 2D:

pshb - сначала сохраняем B в стеке, чтобы потом вернуть, т.е. функция B не меняет

ldab #$10 - здесь надеюсь все понятно :)

mul - тоже самое, что и сдвиг влево на 4 бита. В A теперь старшая тетрада, в B младшая, умноженная на $10.

pshb - сохраняем младшую в стеке, она понадобится позже для аппроксимации

tab - старшую в B

abx - смещаем IX в нужную точку

ldd 0,x - грузим из нее в A, из следующей в B

sba - берем разность между ними для аппроксимации, заодно и определяем наклон кривой ( вверх/вниз)

дальше сам ... :)

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 210
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Спасибо!Сейчас понял!

Но - ldab #$10 - здесь надеюсь все понятно :)-нет

Ето загрузка $10-16 стойности, а акумuлаторB- 8 битов Ето не могу понят, Некуда и болше 13,14

Если другая подпрограма-calc_2Dx_parameter -там задано сколко стойности загружает -первий обозначает ето

И въйчисление мап_47, MAP_f_IDLE_VE и MAP_f_VE не нашел -подскажи из какова адреса начат?

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

хочу спросит:

 

seg004:B4A3 calcl_VE: ; CODE XREF: RTII+424P

seg004:B4A3

seg004:B4A3 ; FUNCTION CHUNK AT seg004:B9A1 SIZE 0000042A BYTES

seg004:B4A3

seg004:B4A3 D6 6C ldab MAP_f_IDLE_VE ; Load accumulator from memory

seg004:B4A5 13 4F 80 10 brclr byte_4F, $80, loc_B4B9 ; 'À' ; Branch if bit (n) in memory clear

seg004:B4A9 96 66 ldaa RPM_12_5 ; Load accumulator from memory

seg004:B4AB 81 C0 cmpa #$C0 ; 'L' ; Compare accumulator with memory

seg004:B4AD 22 0A bhi loc_B4B9 ; Branch if > (unsigned)

seg004:B4AF C1 A0 cmpb #$A0 ; 'à' ; Compare accumulator with memory

seg004:B4B1 22 06 bhi loc_B4B9 ; Branch if > (unsigned)

seg004:B4B3 CE 81 6B ldx #VE_IDLE ; Load index register from memory

seg004:B4B6 44 lsra ; Logical shift right

seg004:B4B7 20 08 bra calc_VE ; Branch always

По человечески ета так?

загрузи акумолатор MAP_f_IDLE_VE из памят ,сравни с бит 4F(из рам) -должно бъйт $80,если он болшой -иди с $B4B9.Если менший загрузи обороти/12,5 и сравни с $С0 из рам там записано $4C если болшое опят там.Если менше сравнивай с $А0 если болше опят на $B4B9 ,если нет загрузи карта VE_IDLE и идти на калкулация.$B4B9Загружает карта base_VE и опят калкулация,RPM_25,MAP_f_VE.

До сих пор все в порядке но стоиност MAP_f_IDLE_VE и MAP_f_VE не могу найти.

Помоги если не трудно.

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

Нашел :ThanxSmiley:

MAP_AD_47 -напряжение мапа из АЦП-на адрес $0047 загружается и все стойности MAP_f_IDLE_VE и MAP_f_VE променливие и потому не нашел .они толко в данном режиме актуално записъйвает.Нашел и въйборки разних режимах,например IDLE,NORM,WOT и другие.Програма для регулирование обороти Х TWAT и по TAIR.Ламбда корекция -тоже.Болшая:)Ищо 15 подпрограми надо розобрат:)

С понятия ищо не розобрался.Когда разклоняет,в смисле нижних ?Гогле переводит с ошибками :)

Branch if

Branch if > (unsigned)

Branch if > (signed)

Branch if bit (n) in memory set

Branch if bit (n) in memory clear

Branch if carry bit clear

Branch if not equal-понятно

Branch if equal-тоже понятно

Иначе понятно по умолчание,но если можно по точнее.

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

Я понял свою ошибку.Ето signed и unsigned путали меня ,а все очен просто ,например:

в регистре променлива (signed) -3

в памят (unsiged) 240

получаеш -3 > 240, потому что (unsigned) -3 = 253.

а я думал что -3

Сколько попытке что ничего из моего счета не так :)

не так ли?Или опят ошибка?

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

Ясно. И я так думал.А сюда рассматривается мап,проверка для ошибка:

seg004:99C1 96 47 ldaa MAPcurent ; Load accumulator from memory

seg004:99C3 97 67 staa MAP_x ; Store accumulator in memory

seg004:99C5 97 69 staa byte_69 ; Store accumulator in memory

seg004:99C7 80 1A suba #$1A ; Subtract

seg004:99C9 24 03 bcc loc_99CE ; Branch if carry bit clear

seg004:99CB 4F clra ; Clear

seg004:99CC 20 0B bra loc_99D9 ; Branch always

seg004:99CE ; ---------------------------------------------------------------------------

seg004:99CE

seg004:99CE loc_99CE: ; CODE XREF: START+1C9j

seg004:99CE C6 97 ldab #$97 ; '×' ; Load accumulator from memory

seg004:99D0 3D mul ; Unsigned multiply

seg004:99D1 C3 00 40 addd #$40 ; '@' ; Add 16-bit to D

seg004:99D4 05 lsld ; Logical (or Ariphmetic) shift left double

seg004:99D5 24 02 bcc loc_99D9 ; Branch if carry bit clear

seg004:99D7 86 FF ldaa #$FF ; Load accumulator from memory

seg004:99D9

seg004:99D9 loc_99D9: ; CODE XREF: START+1CCj

seg004:99D9 ; START+1D5j

seg004:99D9 97 6C staa MAP_f_IDLE_VE ; Store accumulator in memory

seg004:99DB B7 02 DB staa MAP_f_IDLE_VE_in_start ; Store accumulator in memory

seg004:99DE B6 80 15 ldaa byte_8015 ; Load accumulator from memory

seg004:99E1 84 02 anda #2 ; Logical AND

seg004:99E3 27 03 beq loc_99E8 ; Branch if equal

seg004:99E5 14 51 02 bset byte_51, 2 ; Set bit in memory

Сюда думаю так:Загрузи МАП из АЦП,запиши в РАМ на двумя адреса-67 и 69

Потом МАПcurent-1А= отрицательный(Ошибка) продолжай 99CE и въйчитай

Если положителнъй 99D9 запиши пак на двумя адреса.Сравни с адреса $8015

и если equal ошибка по мап.

Ссылка на комментарий
Поделиться на другие сайты

адреса $8015 ето мап-100кпа-4,02V ?

И как должен понят ето:

seg004:99AD B6 80 15 ldaa byte_8015 ; Load accumulator from memory

seg004:99B0 85 20 bita #$20 ; ' ' ; Bit test

seg004:99B2 27 0D beq loc_99C1 ; Branch if equal

второй ред-сравнит стойност на адрес $8015 -$CE и $20-или $20 адрес из рама ?

Не могу найти содержание адреса $20

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

Нет, это не проверка на ошибку.. byte_8015 это похоже байт какой-то комплектации. И идет проверка его битов.

А перед этим был расчет аргумента для VE на ХХ (MAP_f_IDLE_VE)

MAP_f_IDLE_VE = ( MAP_АЦП - $1A)*($97/$100)*2 = (MAP_АЦП-26)*1.27

Если отрицательное (MAP_АЦП

Если пересчитать все значения MAP_f_IDLE_VE кратные $10 обратно в MAP_АЦП, получишь правильные значения для оси по давлению в таблицах, где он используется.

Ссылка на комментарий
Поделиться на другие сайты

Не понял MAP_f_IDLE_VE = ( MAP_АЦП - $1A)*($97/$100)*2 = (MAP_АЦП-26)*1.27 ?

($97/$100)*2=(151/256)*2=1,18 думаю что так

Или ето адреса из рама?

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

seg004:9D10 000 B7 01 B9 staa byte_1B9 * Store accumulator in memory

seg004:9D13 000 C6 97 ldab #$97 * '×' * Load accumulator from memory

seg004:9D15 000 96 67 ldaa MAP_x * Load accumulator from memory

seg004:9D17 000 80 1A suba #$1A * Subtract

seg004:9D19 000 24 03 bcc loc_9D1E * Branch if carry bit clear

seg004:9D19

seg004:9D1B 000 4F clra * Clear

seg004:9D1C 000 20 09 bra store_MAP_f_IDLE_VE * Branch always

seg004:9D1C

seg004:9D1E * ---------------------------------------------------------------------------

seg004:9D1E

seg004:9D1E loc_9D1E * CODE XREF: RTII+BAj

seg004:9D1E 000 3D mul * Unsigned multiply

seg004:9D1F 000 C3 00 40 addd #$40 * '@' * Add 16-bit to D

seg004:9D22 000 05 lsld * Logical (or Ariphmetic) shift left double

seg004:9D23 000 24 02 bcc store_MAP_f_IDLE_VE * Branch if carry bit clear

seg004:9D23

seg004:9D25 000 86 FF ldaa #$FF * Load accumulator from memory

seg004:9D25

seg004:9D27

seg004:9D27 store_MAP_f_IDLE_VE * CODE XREF: RTII+BDj

seg004:9D27 * RTII+C4j

seg004:9D27 000 97 6C staa MAP_f_IDLE_VE * Store accumulator in memory

seg004:9D29 000 81 C0 cmpa #$C0 * 'L' * Compare accumulator with memory

seg004:9D2B 000 22 03 bhi loc_9D30 * Branch if > (unsigned)

seg004:9D2B

seg004:9D2D 000 44 lsra * Logical shift right

seg004:9D2E 000 20 02 bra store_MAP_f_VE * Branch always

seg004:9D2E

seg004:9D30 * -------------------------------

Ето тоже калкулация MAP_f_IDLE_VE все стойности кратни на $10 - 16 в таблице$87B9- 9 значит она въйглядет так

потом калкулирает MAP_f_VE =MAP_f_IDLE_VE / 2 Но таблица ест 11значения.Кой из них?

untitled.bmp

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

Там в одном случае расчет идет при старте т.е. после включения зажигания, во втором уже в главном цикле.

А MAP_f_VE =MAP_f_IDLE_VE / 2 это только до $C0

seg004:9D29 000 81 C0 cmpa #$C0 * 'L' * Compare accumulator with memory

seg004:9D2B 000 22 03 bhi loc_9D30 * Branch if > (unsigned)

seg004:9D2B

seg004:9D2D 000 44 lsra * Logical shift right

поэтому и колонок по MAP_f_VE всего 11.

Что там у тебя в таблице непонятно. Расчет кпа для 1-барного идет так МАП_АЦП*0.373+10.4, а у тебя непонятно как.

И на ряды по оборотам там внимательней посмотри :)

Изменено пользователем Kolo
Ссылка на комментарий
Поделиться на другие сайты

Поправил так?Прежнем разчета по напяжение попробовал.Явно не удачно.

seg004:A1CA 000 CE 87 B9 ldx #$87B9 -ето стартoвой УОЗ по TWAT

 

 

seg004:A217 000 CE 8A 26 ldx #$8A26 -а ето карта думаю что УОЗ до прогрева

untitled.bmp

untitled2.bmp

Ссылка на комментарий
Поделиться на другие сайты

seg004:A1EC 000 15 98 50 bclr byte_98,$50 * 'P' * Clear bit in memory

seg004:A1EF 000 F6 02 DA ldab MAP_f_VE * Load accumulator from memory

seg004:A1F2 000 C1 80 cmpb #$80 * 'À' * Compare accumulator with memory

seg004:A1F4 000 22 2E bhi loc_A224 * Branch if > (unsigned)

.

.

.

.

seg004:A205 000 96 65 ldaa RPM_25 * Load accumulator from memory

seg004:A207 000 81 80 cmpa #$80 * 'À' * Compare accumulator with memory

seg004:A209 000 24 11 bcc loc_A21C * Branch if carry bit clear

seg004:A209

seg004:A20B 000 96 70 ldaa TWAT_70 * Load accumulator from memory

seg004:A20D 000 81 50 cmpa #$50 * 'P' * Compare accumulator with memory

seg004:A20F 000 25 13 bcs loc_A224 * Branch if carry bit set

seg004:A20F

seg004:A211 000 DE 25 ldx byte_25 * Load index register from memory

seg004:A213 000 9C 27 cpx byte_27 * Compare index register 16 bit

seg004:A215 000 24 0D bcc loc_A224 * Branch if carry bit clear

seg004:A215

seg004:A217 000 CE 8A 26 ldx #$8A26 * Load index register from memory

seg004:A21A 000 20 19 bra loc_A235 * Branch always

seg004:A21A

 

Сюда думаю въйбор карта для холодном двигателе до3200 РПМ

и мап менше 58кпа (менше нагрузкой)

К сожаление byte_25 и byte_27 не готов

Ссылка на комментарий
Поделиться на другие сайты

Поздравляю с рождество Христово

Дал бог жизн , здарове и денги что купим осталное:)

Ссылка на комментарий
Поделиться на другие сайты

Kolo ,ета не могу понят:Сюда в акомулатор А -АФР ,а потом там записъйвает и МАП-что делает-сбор и потом записъйвает в byte_2D9 ? Или толко мап записъйвает?

 

 

 

seg004:C023 000 B7 01 9B staa AFR * Store accumulator in memory

seg004:C026 000 20 06 bra loc_C02E * Branch always

seg004:C026

seg004:C028

seg004:C028

seg004:C028

seg004:C028

seg004:C028

seg004:C02B

seg004:C02B

seg004:C02E

seg004:C02E

seg004:C02E

seg004:C02E

seg004:C02E

seg004:C02E 000 96 6C ldaa MAP_f_IDLE_VE * Load accumulator from memory

seg004:C030 000 B7 02 D9 staa byte_2D9 * Store accumulator in memory

Ссылка на комментарий
Поделиться на другие сайты

Непонятен вопрос. Посчитал AFR, сохранил. Потом копию MAP_f_IDLE_VE сохранил в byte_2D9. Зачем? Будет ясно из того, как используется byte_2D9.

Щас у меня иды нет под рукой, посмотреть не могу.

Ссылка на комментарий
Поделиться на другие сайты

Посчитал AFR, сохранил. Потом копию MAP_f_IDLE_VE сохранил в byte_2D9. Зачем? Будет ясно из того, как используется byte_2D9.

Тогда все ясно.Я думал что в етом случае в акумолатор едет сбор-моя ошибка.

И все таки немого понят счот по осям .Например:

 

seg004:A205 96 65 ldaa RPM_25 * Load accumulator from memory

seg004:A207 81 80 cmpa #$80 * 'À' * Compare accumulator with memory

seg004:A209 24 11 bcc loc_A21C * Branch if carry bit clear

seg004:A20B 96 70 ldaa twat_70 * Load accumulator from memory

seg004:A20D 81 50 cmpa #$50 * 'P' * Compare accumulator with memory

seg004:A20F 25 13 bcs loc_A224 * Branch if carry bit set

seg004:A211 DE 25 ldx byte_25 * Load index register from memory

seg004:A213 9C 27 cpx byte_27 * Compare index register 16 bit

seg004:A215 24 0D bcc loc_A224 * Branch if carry bit clear

seg004:A217 CE 8A 26 ldx #$8A26 * Load index register from memory

seg004:A21A 20 19 bra loc_A235 * Branch always

 

Сюда карта по РПМ_25-9реда и MAP_f_VE -9колони

 

 

seg004:A224 CE 88 0D ldx #$880D * Load index register from memory

seg004:A227 13 98 01 03 brclr byte_98,1,loc_A22E * Branch if bit (n) in memory clear

seg004:A22B CE 88 C0 ldx #$88C0 * Load index register from memory

seg004:A22E

seg004:A22E loc_A22E * CODE XREF: awans_A0AE+179j

seg004:A22E 13 98 02 03 brclr byte_98,2,loc_A235 * Branch if bit (n) in memory clear

seg004:A232 CE 89 73 ldx #$8973 * Load index register from memory

seg004:A235

seg004:A235 loc_A235 * CODE XREF: awans_A0AE+16Cj

seg004:A235 * awans_A0AE:loc_A22Ej

seg004:A235 96 65 ldaa RPM_25 * Load accumulator from memory

seg004:A237 BD E3 C9 jsr calc_3D_parameter * Jump to subroutine

 

А сюда 16Х11

И почему корекция по ТWAT у карта началний адрес находится $8ABF а нет у $8AC0

seg004:A242 96 71 ldaa twat_71 * Load accumulator from memory

seg004:A244 CE 8A BF ldx #$8ABF * Load index register from memory

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

Коло, С Новым годом поздравляю!

Счастья, радости желаю!

Не вино пить - коньячок,

На закуску - судачок,

Новогодний торт потолще,

За столом друзей побольше,

От души повеселиться,

Но под елку не свалиться,

Чтобы Дедушка Мороз

В вытрезвитель не увез. :ThanxSmiley:

 

Здарове и удача желаю!

Изменено пользователем ivanovbg
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...
Яндекс цитирования