| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| асемблер за 8051 ядро http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=18988 |
Страница 1 от 1 |
| Автор: | Edesign [ Пон Окт 09, 2023 10:11 am ] |
| Заглавие: | асемблер за 8051 ядро |
Здравейте, вече питах няколко участника във форума за помощ, но никой не се отзова. По въпроса имам сорс код на асемблер за процесор от преди 20 години. Бих искал да попреведа на С част от кода за да ми станат ясни някои алгоритми. С асемблер за 8051 не съм работил никога (имам опит само с PIC) и ще ми отнеме много време. Ето пример, ако някой удари едно рамо ще съм много благодарен tss_aa: mov a,x_minu mov b,#60 mul ab add a,x_secu push acc jnc tss_a inc b tss_a: push b mov b,#5 mov a,time_p1 jb acc.7,tss_b mul ab sjmp tss_e tss_b: mov a,w_minu ;lade ewz mov b,#60 mul ab mov dpl,a mov dph,b mov a,time_p1 cpl a inc a mov b,#5 mul ab add a,time_ramp jnc tss_c inc b tss_c: call subdp jnc tss_d pop dph pop dpl clr c setb ov sjmp tss_p2 tss_d: mov a,dpl mov b,dph tss_e: pop dph pop dpl ; call subdp jc tss_p1 setb ov mov a,dph jnz tss_p2 mov a,dpl cjne a,time_ramp,tss_f |
|
| Автор: | Н'бабане Гт'муан'га [ Пон Окт 09, 2023 11:16 am ] | |||||||||
| Заглавие: | Re: асемблер за 8051 ядро | |||||||||
Идея - чатгпт. Аз му дадох това парче код и ми върна ето това:
|
||||||||||
| Автор: | palavrov [ Пон Окт 09, 2023 12:46 pm ] |
| Заглавие: | Re: асемблер за 8051 ядро |
Бабане, то това е буквално превод на всяка асм инструкция на Ц - няма много мисъл кое какво точно прави ... особенно там с inc() като има Carry - т.е. 16 битово събиране с пренос направено с примитивни 8 битови инструкции |
|
| Автор: | Н'бабане Гт'муан'га [ Пон Окт 09, 2023 1:09 pm ] |
| Заглавие: | Re: асемблер за 8051 ядро |
Сега ще го пробвам за бейсик |
|
| Автор: | Н'бабане Гт'муан'га [ Пон Окт 09, 2023 1:10 pm ] | |||||||||
| Заглавие: | Re: асемблер за 8051 ядро | |||||||||
|
||||||||||
| Автор: | Bai Ui [ Пон Окт 09, 2023 1:26 pm ] | ||||||||||||||||||
| Заглавие: | Re: асемблер за 8051 ядро | ||||||||||||||||||
Ето го и моят ChatGPT (версия 4) какво казва по въпроса:
Както какзва чата функцията subdp липсва в асемблерския код, както и някои флагове. Най добре автора да направи обратно асемблиране за да види дали се генерира същия асемблер. |
|||||||||||||||||||
| Автор: | palavrov [ Пон Окт 09, 2023 3:20 pm ] | ||||||||||||||||||
| Заглавие: | Re: асемблер за 8051 ядро | ||||||||||||||||||
означава
|
|||||||||||||||||||
| Автор: | palavrov [ Пон Окт 09, 2023 3:28 pm ] | ||||||||||||||||||
| Заглавие: | Re: асемблер за 8051 ядро | ||||||||||||||||||
най вероятно означава:
Без повечко код и без да си напъвам мозъка кой знае колко не мога да кажа повече. Може и да бъркам, че и асемеблер и 8051 не съм пипал от 20-на години. |
|||||||||||||||||||
| Автор: | Bai Ui [ Пон Окт 09, 2023 7:16 pm ] | ||||||||||||||||||
| Заглавие: | Re: асемблер за 8051 ядро | ||||||||||||||||||
MISRA ще ти пише 2 най-малко в две категории. |
|||||||||||||||||||
| Автор: | palavrov [ Пон Окт 09, 2023 9:09 pm ] | |||||||||||||||||||||||||||
| Заглавие: | Re: асемблер за 8051 ядро | |||||||||||||||||||||||||||
Е, че това е псевдокод, не претендира за коректност ... даже чупената ми клавиатура е изяла и ; ... още не съм я сменил ... не остава време да намеря правилния доставчик (в амазон я няма) |
||||||||||||||||||||||||||||
| Автор: | Edesign [ Сря Окт 11, 2023 8:08 am ] |
| Заглавие: | Re: асемблер за 8051 ядро |
CHATGpt се оказа наистина интересно. Досега никога не бях ползвал tp4bit_1x: mov r1,#1 tp4bit: mov r3,a mov a,r2 anl a,#0fh ;sicherheitshalber за да бъдем на сигурно място jnz tp4b_a ;springe wenn 1...15 mov a,#16 ; 0--> 16 tp4b_a: mov r2,a tp4b_b: ;**** schleife mov a,r3 ;lade endewert mov b,r2 ;lade TP-faktor clr c subb a,@r0 ;acc = EW - TP(k-1) inc r0 ;zeige auf TP-rest jc tp4b_n ;springe wenn Differenz neg. ;**** differenz ist pos. разликата е поз ;**** differenz durch Faktor teilen разделете разликата на фактор div ab ;in b stand der Faktor b беше факторът mov r4,a ;rette ganz. anteil in r4 запазете цяло. пропорция в r4 mov a,r2 ;lade faktor xch a,b ;acc = rest / b = faktor swap a ;acc = 16 * rest rlc a ;C | acc = 32*rest orl a,r2 ;addiere Faktor rrc a ;acc = 16*rest + faktor/2 div ab swap a ; r4 | acc = [ 1/f *[EW-TP(k-1)]] ;**** bilde neues TP (r0 zeigt auf TP-rest) формира нов TP (r0 сочи към TP-rest) add a,@r0 mov @r0,a ;по-нова Rest dec r0 mov a,r4 addc a,@r0 mov @r0,a ;нов TP ;**** schleife панделка djnz r1,tp4b_b ;loop ret tp4b_n: ;**** differenz ist negativ --> bilde komplement ,dann divison, dann subtraktion разликата е отрицателна --> образувайте допълнение, след това разделете, след това извадете cpl a inc a ;acc = -acc ;**** differenz durch Faktor teilen разделете разликата на фактор div ab ;in b stand der Faktor b беше факторът mov r4,a ;rette ganz. anteil in r4 запазете цяло. пропорция в r4 mov a,r2 ;lade faktor xch a,b ;acc = rest / b = faktor swap a ;acc = 16 * rest rlc a ;C | acc = 32*rest orl a,r2 ;добавете Faktor rrc a ;acc = 16*rest + faktor/2 div ab swap a ; r4 | acc = - [ 1/f *[EW-TP(k-1)]] ;**** bilde neues TP (r4 | acc subtrahieren) (r0 zeigt auf TP-rest) формиране на нов TP (r4 | acc изваждане) (r0 точки към TP остатък) mov b,a ;спаси acc in b mov a,@r0 clr c subb a,b mov @r0,a ;по-нова Rest dec r0 mov a,@r0 subb a,r4 mov @r0,a ;нов TP ;**** schleife панделка djnz r1,tp4b_b ;loop ret След два дена размисъл предполагам че тези сума редове могат да се сведат до нискочестотен филтър void tp4bit_1x (float *TP_End_val,float *TP_Start_val, unsigned char F_faktor ) { //*TP_End_val tova e EW (a) //*TP_Start_val (r0) // r1=1 // F_faktor - r2 float tmp; if (F_faktor>15) {F_faktor=0;} tmp=(*TP_End_val-*TP_Start_val)/F_faktor; // EW - TP(k-1)/F_faktor &TP_Start_val=*TP_Start_val+tmp; // нова стойност на филтъра } |
|
| Автор: | HCL [ Сря Окт 11, 2023 6:36 pm ] | |||||||||
| Заглавие: | Re: асемблер за 8051 ядро | |||||||||
|
||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|