Kolo Опубликовано 14 декабря, 2010 Поделиться Опубликовано 14 декабря, 2010 Все расписывать не буду. Слишком долго. Да и не туда ты полез. Хотя для расширения кругозора и освоения арифметки полезно... Выборка из 2D: pshb - сначала сохраняем B в стеке, чтобы потом вернуть, т.е. функция B не меняет ldab #$10 - здесь надеюсь все понятно :) mul - тоже самое, что и сдвиг влево на 4 бита. В A теперь старшая тетрада, в B младшая, умноженная на $10. pshb - сохраняем младшую в стеке, она понадобится позже для аппроксимации tab - старшую в B abx - смещаем IX в нужную точку ldd 0,x - грузим из нее в A, из следующей в B sba - берем разность между ними для аппроксимации, заодно и определяем наклон кривой ( вверх/вниз) дальше сам ... :) Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 14 декабря, 2010 Автор Поделиться Опубликовано 14 декабря, 2010 (изменено) Спасибо!Сейчас понял! Но - ldab #$10 - здесь надеюсь все понятно :)-нет Ето загрузка $10-16 стойности, а акумuлаторB- 8 битов Ето не могу понят, Некуда и болше 13,14 Если другая подпрограма-calc_2Dx_parameter -там задано сколко стойности загружает -первий обозначает ето И въйчисление мап_47, MAP_f_IDLE_VE и MAP_f_VE не нашел -подскажи из какова адреса начат? Изменено 14 декабря, 2010 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 16 декабря, 2010 Автор Поделиться Опубликовано 16 декабря, 2010 (изменено) хочу спросит: 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 не могу найти. Помоги если не трудно. Изменено 16 декабря, 2010 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 17 декабря, 2010 Автор Поделиться Опубликовано 17 декабря, 2010 (изменено) Нашел 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-тоже понятно Иначе понятно по умолчание,но если можно по точнее. Изменено 17 декабря, 2010 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 17 декабря, 2010 Автор Поделиться Опубликовано 17 декабря, 2010 (изменено) Я понял свою ошибку.Ето signed и unsigned путали меня ,а все очен просто ,например: в регистре променлива (signed) -3 в памят (unsiged) 240 получаеш -3 > 240, потому что (unsigned) -3 = 253. а я думал что -3 Сколько попытке что ничего из моего счета не так :) не так ли?Или опят ошибка? Изменено 17 декабря, 2010 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 20 декабря, 2010 Автор Поделиться Опубликовано 20 декабря, 2010 Коло,ALDL_UTHR ето ТПС или что? Ссылка на комментарий Поделиться на другие сайты Поделиться
Kolo Опубликовано 20 декабря, 2010 Поделиться Опубликовано 20 декабря, 2010 Да. Это АЦП с датчика положения дросселя. Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 20 декабря, 2010 Автор Поделиться Опубликовано 20 декабря, 2010 Ясно. И я так думал.А сюда рассматривается мап,проверка для ошибка: 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 ошибка по мап. Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 20 декабря, 2010 Автор Поделиться Опубликовано 20 декабря, 2010 (изменено) адреса $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 Изменено 20 декабря, 2010 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
Kolo Опубликовано 21 декабря, 2010 Поделиться Опубликовано 21 декабря, 2010 Нет, это не проверка на ошибку.. 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_АЦП, получишь правильные значения для оси по давлению в таблицах, где он используется. Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 21 декабря, 2010 Автор Поделиться Опубликовано 21 декабря, 2010 (изменено) Не понял MAP_f_IDLE_VE = ( MAP_АЦП - $1A)*($97/$100)*2 = (MAP_АЦП-26)*1.27 ? ($97/$100)*2=(151/256)*2=1,18 думаю что так Или ето адреса из рама? Изменено 21 декабря, 2010 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 21 декабря, 2010 Автор Поделиться Опубликовано 21 декабря, 2010 (изменено) 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 Изменено 21 декабря, 2010 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
Kolo Опубликовано 22 декабря, 2010 Поделиться Опубликовано 22 декабря, 2010 (изменено) Там в одном случае расчет идет при старте т.е. после включения зажигания, во втором уже в главном цикле. А 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, а у тебя непонятно как. И на ряды по оборотам там внимательней посмотри :) Изменено 22 декабря, 2010 пользователем Kolo Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 22 декабря, 2010 Автор Поделиться Опубликовано 22 декабря, 2010 Поправил так?Прежнем разчета по напяжение попробовал.Явно не удачно. seg004:A1CA 000 CE 87 B9 ldx #$87B9 -ето стартoвой УОЗ по TWAT seg004:A217 000 CE 8A 26 ldx #$8A26 -а ето карта думаю что УОЗ до прогрева untitled.bmp untitled2.bmp Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 24 декабря, 2010 Автор Поделиться Опубликовано 24 декабря, 2010 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 не готов Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 25 декабря, 2010 Автор Поделиться Опубликовано 25 декабря, 2010 Поздравляю с рождество Христово Дал бог жизн , здарове и денги что купим осталное:) Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 28 декабря, 2010 Автор Поделиться Опубликовано 28 декабря, 2010 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Kolo Опубликовано 30 декабря, 2010 Поделиться Опубликовано 30 декабря, 2010 Непонятен вопрос. Посчитал AFR, сохранил. Потом копию MAP_f_IDLE_VE сохранил в byte_2D9. Зачем? Будет ясно из того, как используется byte_2D9. Щас у меня иды нет под рукой, посмотреть не могу. Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 31 декабря, 2010 Автор Поделиться Опубликовано 31 декабря, 2010 (изменено) Посчитал 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 Изменено 31 декабря, 2010 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
ivanovbg Опубликовано 4 января, 2011 Автор Поделиться Опубликовано 4 января, 2011 (изменено) Коло, С Новым годом поздравляю! Счастья, радости желаю! Не вино пить - коньячок, На закуску - судачок, Новогодний торт потолще, За столом друзей побольше, От души повеселиться, Но под елку не свалиться, Чтобы Дедушка Мороз В вытрезвитель не увез. Здарове и удача желаю! Изменено 4 января, 2011 пользователем ivanovbg Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти