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
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти