Pomoc s programovaním mikrokontroléra rady x48/x51

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
MrWifiHifi
Pokročilý člen
Pokročilý člen
Príspevky: 600
Dátum registrácie: 22 Aug 2017, 10:06

Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa MrWifiHifi » 09 Jún 2023, 14:22

Zdravím

Zháňam niekoho, kto má skúsenosti s programovaním mikrokontrolérov rady x48 a x51.

Ivan Urda kedysi (údajne) postavil k mikropočítačom Maťo koncentrátor pre sieť Maťo LAN, nič z toho sa však nedochovalo, okrem monitora pre Maťa (MATO LAN) a slovného popisu ako koncentrátor fungoval (+ sú ešte spomenuté nejaké súčiastky, ktoré boli použité). Tento dokument je na stránke https://pmd85.borik.net/wiki/Download/Dokumentácia ako popis siete Maťo LAN. Ja a Joe78 (z oldcomp fóra) by sme to chceli tento koncentrátor oživiť, avšak ani jeden z nás na to nemáme dostatočné skúsenosti.
Radi by sme to rozchodili na 8748 (ako to bolo pôvodne), poprípade x51 ako alternatívu.
Tu na fóre som kontaktoval člena vlado5 (cez SS aj mail), ktorý postavil niekoľko vecí s 8748, preportoval aj nejaký kód z x48 na x51, žiaľ neúspešne. Neozval sa.

Preto by som bol rád, ak by o to mal niekto skúsený záujem. V prílohe prikladám schému koncentrátora, ktorú sme dali dokopy.

Záujemcom vopred ďakujem.
Prílohy
MatoConc837.png
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa peterple » 09 Jún 2023, 15:59

Nejaké skúsenosti by tu boli. To chcete napísať z čistej vody? Alebo máte aspoň hex?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
MrWifiHifi
Pokročilý člen
Pokročilý člen
Príspevky: 600
Dátum registrácie: 22 Aug 2017, 10:06

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa MrWifiHifi » 09 Jún 2023, 16:06

Komplet od základu, nič sa nedochovalo, ani originál schéma a ani program pre x48.
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa peterple » 09 Jún 2023, 16:14

V takom prípade si tam miesto 8748 dajte atmega328 (arduino UNO), odladte to a až to budete mať rozbehané môžem vám to portnúť na 8748
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
MrWifiHifi
Pokročilý člen
Pokročilý člen
Príspevky: 600
Dátum registrácie: 22 Aug 2017, 10:06

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa MrWifiHifi » 11 Jún 2023, 22:24

Nepoznáte niekto nejaký editor pre asm x48? ideálne ak vie exportovať hex file, ktorý môžem použiť pre programátor.
0

Používateľov profilový obrázok
balu
Pokročilý člen
Pokročilý člen
Príspevky: 540
Dátum registrácie: 21 Feb 2022, 12:06

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa balu » 11 Jún 2023, 23:04

Kdysi jsem něco podobného řešil na jiném fóru :
https://forum.mcontrollers.com/t/progra ... kou/2758/9
Třeba Ti to pomůže.

Mám tu ještě simulátor, který jsem používal pro 82S51/82S52, ale vyžaduje nainstalovanou Javu.
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa peterple » 12 Jún 2023, 00:00

Editor môžeš použiť aký chceš. Celkom dobrý je VS code. Možno nájdeš aj nejaké extension pre 8048. (pre Z80 je tam super rozšírenie)
To čo prevádza zdroják na hex sa volá assembler (prekladač) a to už stačí napísať do googla dve slová a on ich nájde celkom hodne. Už si nepamätám čo som vtedy používal. Od vtedy som zmenil PC asi 5 krát. Myslím že sú aj nejaké online takže to ani nemusíš inštalovať na svoj komp.

Ale znova opakujem je úplne zcestné to vyvíjať priamo na 8748. Zjavne nemáš potuchy o čo ide. Jedno debugovacie kolečko je minimálne 30 minút. (vybrať chip, zmazať pod UV lampou, napáliť nový hex, čudovať sa prečo to nefunguje, upraviť zdroják, preložiť a dokola). Vyvinul som svoho času týmto spôsobom hodiny na LED aj LCD displej s 8748. Ale keď prišlo ISP tak som na to okamžite prešiel

A znova opakujem dajte si tam arduino, tam to prepíšeš aj pod jednu sekundu. Kludne môžete používať aj tie digitalWrite funkcie. I keď keby ste použili priamo porty tak by sa to ľahšie ohýbalo na ten 8748.

Celá stranda nie je nejaká veľká veda. Prepínaš dva muxy a hľadáš jednotku. keď ju zbadáš príjmeš ten sériový byte čo tam PMD pošle. Tak zistíš s kým sa chce rozprávať. Potom už len nastavíš výstupný mux na danú adresu a testuješ až tam bude ticho 2 sekundy. Potom pokračuješ v prehľadávaní vstupných muxov ďalej.

Ešte je aj iná cesta a to je použiť atmelovský klon AT89S2051 ale Skový nie Cckový. S má tiež ISP a dá sa napáliť v aplikácii rovnako ako to AVR. Na to slúžil svojho času program ponyProg pripojený cez paralelný port. Na tom som fičal zopár rokov aj pre 51 chrobáky a potom pre AVR. Dnes je to už samý bootloader.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

vlado5
Stály člen
Stály člen
Príspevky: 222
Dátum registrácie: 19 Júl 2011, 00:00
Bydlisko: Trenčín

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa vlado5 » 12 Jún 2023, 05:54

Za to, že som sa neozval sa omlúvam. SS som neprečítal, lebo sa mi občas registrácia vymaže, nechce sa mi to opäť zadávať, tak som na fóre ako neregistrovaný a SS sa mi nezobrazujú.
Čo sa týka e-mailu, mal som schránku na orangemail, ale orange už zrušilo server s poštovým klientom.
Keď chcem moju adresu na fóre opraviť, vyžaduje moje potvrdenie na starej e-mailovej adrese, ktorá je už
nefunkčná, takže starú e-mailovú adresu nemôžem na tomto fóre prepísať.

Ak chcete písať program pre procesory s jadrom 51 na to je výborný free program IDE51. Na stránkach DH servis máte popis assembleru pre tieto jadrá. Výborne Vám to píše "peterple" že to debugovacie kolečko pre procesory 8748 trvá okolo 30 minút. Na tento účel je výborné urobiť si simulátor EPROM-schéma bola aj v AR.
Ja som si ho urobil, je aj tu na fóre v sekcii "môj výrobok mini" zverejnený 1.apríl 2015.
Popis assembleru jadra 8748 mám doma - je to príručka programovania vydaná ešte v roku 1986.
Programovanie v assembleri je pomerne náročné a je treba poznať podrobne celý kód daného procesora, všetky jeho možnosti a nastavenia daného procesora. Na písanie assembleru jadra 48 som dávno používal
SW bežiaci pod DOS-om. Myslím, že na nete sa do dá nájsť.

Na programovanie jadra 48 aj 51 som používal programátor Willem Prog. Jadro 48 v dnešnej dobe už moderné programátory nedokážu programovať. Na stránkach archeocomp sa takýto programátor tiež riešil.
1
Obrázok 1

Používateľov profilový obrázok
MrWifiHifi
Pokročilý člen
Pokročilý člen
Príspevky: 600
Dátum registrácie: 22 Aug 2017, 10:06

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa MrWifiHifi » 12 Jún 2023, 09:06

peterple napísal:
12 Jún 2023, 00:00
Editor môžeš použiť aký chceš. Celkom dobrý je VS code. Možno nájdeš aj nejaké extension pre 8048. (pre Z80 je tam super rozšírenie)
To čo prevádza zdroják na hex sa volá assembler (prekladač) a to už stačí napísať do googla dve slová a on ich nájde celkom hodne. Už si nepamätám čo som vtedy používal. Od vtedy som zmenil PC asi 5 krát. Myslím že sú aj nejaké online takže to ani nemusíš inštalovať na svoj komp.

Ale znova opakujem je úplne zcestné to vyvíjať priamo na 8748. Zjavne nemáš potuchy o čo ide. Jedno debugovacie kolečko je minimálne 30 minút. (vybrať chip, zmazať pod UV lampou, napáliť nový hex, čudovať sa prečo to nefunguje, upraviť zdroják, preložiť a dokola). Vyvinul som svoho času týmto spôsobom hodiny na LED aj LCD displej s 8748. Ale keď prišlo ISP tak som na to okamžite prešiel
S tým vývojom som počítal, mám doma sadu od ELNECu, kde je aj adaptér pre x48, ale hlavne, je tam simulátor EPROM pamäte. Čo som pozeral, tak sa to pripájalo na paralelný port a cez to to ovládal program v PC. Simulátor eprom obsahuje RAM 64k, nejaké registre, čítače a logické hradlá. Musím to prekresliť, zistiť ako sa to ovláda a asi k tomu napíšem progam v arduine, aby nebolo nutné to pripájať cez paralelný port ale priamo cez USB.
vlado5 napísal:
12 Jún 2023, 05:54
Za to, že som sa neozval sa omlúvam. SS som neprečítal, lebo sa mi občas registrácia vymaže, nechce sa mi to opäť zadávať, tak som na fóre ako neregistrovaný a SS sa mi nezobrazujú.
Čo sa týka e-mailu, mal som schránku na orangemail, ale orange už zrušilo server s poštovým klientom.
Keď chcem moju adresu na fóre opraviť, vyžaduje moje potvrdenie na starej e-mailovej adrese, ktorá je už
nefunkčná, takže starú e-mailovú adresu nemôžem na tomto fóre prepísať.

Ak chcete písať program pre procesory s jadrom 51 na to je výborný free program IDE51. Na stránkach DH servis máte popis assembleru pre tieto jadrá. Výborne Vám to píše "peterple" že to debugovacie kolečko pre procesory 8748 trvá okolo 30 minút. Na tento účel je výborné urobiť si simulátor EPROM-schéma bola aj v AR.
Ja som si ho urobil, je aj tu na fóre v sekcii "môj výrobok mini" zverejnený 1.apríl 2015.
Popis assembleru jadra 8748 mám doma - je to príručka programovania vydaná ešte v roku 1986.
Programovanie v assembleri je pomerne náročné a je treba poznať podrobne celý kód daného procesora, všetky jeho možnosti a nastavenia daného procesora. Na písanie assembleru jadra 48 som dávno používal
SW bežiaci pod DOS-om. Myslím, že na nete sa do dá nájsť.

Na programovanie jadra 48 aj 51 som používal programátor Willem Prog. Jadro 48 v dnešnej dobe už moderné programátory nedokážu programovať. Na stránkach archeocomp sa takýto programátor tiež riešil.
V pohode, myslel som si že tam bude asi nejaký problém s mailom alebo niečim, videl som, že ste tu boli nedávno aktívny.

Ja zaitaľ používam IDE 8051, napísali to nejaký česi. Veľmi dobrý program, je tam možnosť vybrať si aj HW ako ledky, 7 segmentovky, tlačidlá a pod.
S x51 sme mali tento semester na VŠ predemet "základy programovania mikropočítačov", dozvedel som sa o x51 dosť veľa, študoval som si to aj vo svojom voľnom čase. V škole sme precovali s Keil uVision, ten je však limitovaný na 2k pre program.

Ako som písal vyššie, mám simulator EPROM pamäťe od ELNECu. Budem naskôr pracovať s MHB8035 (mám viac kusov, hoci je bez internej pamäte), nakoľko mám len jeden kus MHB8748 a to tiež netuším, či je funkčný.
Nepamätáte si názov toho softu pre programovanie x48 v DOSe?
0

Používateľov profilový obrázok
MrWifiHifi
Pokročilý člen
Pokročilý člen
Príspevky: 600
Dátum registrácie: 22 Aug 2017, 10:06

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa MrWifiHifi » 12 Jún 2023, 10:24

Ešte otázka, ako programovo riešiť tú kontrolu prenosu medzi 2 počítačmi a ako potom testovať neaktivitu počas 2 sekúnd?
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa peterple » 12 Jún 2023, 16:02

Ok ak máš emulátor EPROM tak to je schodná cesta. Ja by som sa na to síce vyprdol ak máš bastliť nejaký konvertor LPT. Vytiahol by som zo šuplíka AT89S51 https://www.microchip.com/en-us/product/AT89S51 Potom použil USBASP ako ISP programátor https://labprojectsbd.com/2020/04/19/ma ... th-usbasp/
Keď použiješ len P1 a P2 ako to má 48 a len instrukcie z 48 sady tak to máš na 95% rovnaké. Je iné časovanie a menej pamäte ale to až tak podstatné nieje.
Ale úplne najprv by som to odladil na tom arduine. Kedže ho máš a asi ho aj vieš programovať.
A k tomu obmedzeniu keil, to nemôže vadiť nakoľko výsledný program nemôže byť väčší ako 1KiBy 8748 viac pamäte programu nemá. Inak to tak odhadujem na 100-200byte.

Ohľadom kódu
Kontrola vstupného bitu sa najľahšie robí inštrukciou JB alebo opačná hodnota JNB
Kontrola 2 sekundy sa robí tak že sa do nejakých registrov dá hodne veľké číslo (v tomto prípade minimálne 3 byte). To sa dekrementuje a zároveň sa testuje ten pin. Ak tam 2 sek nebola jednotka tak prenos skončil.
Jednotka tam znova načíta to číslo.

Kód: Vybrať všetko

start:		mov	r2, #xx1
		mov	r3, #xx2
		mov   	r4, #xx3
loop:		jb	p1.5, start	;predpoklad je ze 1 znamena aktivitu, tak sa cislo reinicializuje
		djnz	r2, loop
		djnz	r3, loop
		djnz	r4, loop
;ked sa to dostane sem uplynul timeout
xxn sú byte 3 bytového čísla ktoré zodpovedá nejakému počtu opakovaní tej slučky, tak aby to pri danom počte cyklov a Fosc boli 2 sekundy. Pozor ten kód nie je moc robustný. Ak tam bude poskakovať jednotka občasne (ale častejšie ako 2sek), tak to v tom kóde uviazne.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

archeocomp
Okoloidúci
Okoloidúci
Príspevky: 33
Dátum registrácie: 31 Mar 2017, 23:40
Bydlisko: Dca

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa archeocomp » 12 Jún 2023, 22:15

Na napísanie MON48 a dekodéru DCF-77

Kód: Vybrať všetko

http://archeocomp.blogspot.com/2019/10/dcf-77-decoder.html
pre 8048 som použil editor Atom. Napísal som si preň gramatiku 8048. Ako assembler som používal TASM 3.2, ktorý beží pod windows.

Ale to bolo v roku 2019 a na windows. Už asi rok používam ako desktop RaspberryPi a Linux. Teraz používam pre 8080/8048 programovanie Visual Code a zase som si napísal k nemu gramatiku pre inštrukčnú sadu 8048. V prípade záujmu môžem poskytnúť.
Na kompiláciu používam The Macro Assembler AS skompilovaný na Raspberry.

Na rýchle ladenie programov na 8048 mi slúži NCB48, program sa nahráva cez sériový port, trvá to cca 1-2s.

Kód: Vybrať všetko

http://archeocomp.blogspot.com/2019/06/ncb48-1-intel-mcs-48.html
0

Používateľov profilový obrázok
MrWifiHifi
Pokročilý člen
Pokročilý člen
Príspevky: 600
Dátum registrácie: 22 Aug 2017, 10:06

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa MrWifiHifi » 13 Jún 2023, 08:51

peterple napísal:
12 Jún 2023, 16:02
Ok ak máš emulátor EPROM tak to je schodná cesta. Ja by som sa na to síce vyprdol ak máš bastliť nejaký konvertor LPT. Vytiahol by som zo šuplíka AT89S51 https://www.microchip.com/en-us/product/AT89S51 Potom použil USBASP ako ISP programátor https://labprojectsbd.com/2020/04/19/ma ... th-usbasp/
Keď použiješ len P1 a P2 ako to má 48 a len instrukcie z 48 sady tak to máš na 95% rovnaké. Je iné časovanie a menej pamäte ale to až tak podstatné nieje.
Ale úplne najprv by som to odladil na tom arduine. Kedže ho máš a asi ho aj vieš programovať.
A k tomu obmedzeniu keil, to nemôže vadiť nakoľko výsledný program nemôže byť väčší ako 1KiBy 8748 viac pamäte programu nemá. Inak to tak odhadujem na 100-200byte.

Ohľadom kódu
Kontrola vstupného bitu sa najľahšie robí inštrukciou JB alebo opačná hodnota JNB
Kontrola 2 sekundy sa robí tak že sa do nejakých registrov dá hodne veľké číslo (v tomto prípade minimálne 3 byte). To sa dekrementuje a zároveň sa testuje ten pin. Ak tam 2 sek nebola jednotka tak prenos skončil.
Jednotka tam znova načíta to číslo.

Kód: Vybrať všetko

start:		mov	r2, #xx1
		mov	r3, #xx2
		mov   	r4, #xx3
loop:		jb	p1.5, start	;predpoklad je ze 1 znamena aktivitu, tak sa cislo reinicializuje
		djnz	r2, loop
		djnz	r3, loop
		djnz	r4, loop
;ked sa to dostane sem uplynul timeout
xxn sú byte 3 bytového čísla ktoré zodpovedá nejakému počtu opakovaní tej slučky, tak aby to pri danom počte cyklov a Fosc boli 2 sekundy. Pozor ten kód nie je moc robustný. Ak tam bude poskakovať jednotka občasne (ale častejšie ako 2sek), tak to v tom kóde uviazne.
Mám skúsenosti s programovaním arduina, teraz na VŠ som sa ešte dôkladnejšie naučil Cčko no a ako posledný predmet zameraný na programovanie sme mali assembler pre 8051 (v Keil uVision). S assemblerom som ale už robil skôr, programoval som krátke programy pre Maťa.

Čo sa týka tej kontroly vstupu, v dokumente od Martin1, ktorý je na stránke pmd85 RomBor je popis ako koncentrátor fungoval:
1. Požiadavku na spojenie kontroluje koncentrátor kruhovým sekvenčným prehľadávaním
(POOLING); v prípade, že zistí požiadavku na prenos (IN=H), prečíta hlavičku prenosu z ktorej
zistí druh služby a číslo adresáta.
2. Skontroluje číslo odosielateľa, ak nesúhlasí so skutočným, opraví číslo v hlavičke prenosu a
túto odošle adresátovi.
3. Po odovzdaní hlavičky prenosu adresátovi prepojí smer odosielateľ adresát a pasívnym
odposluchom prenosu kontroluje komunikáciu účastníkov.
4. Ak počas 2 sekúnd nedôjde k zmenám úrovne na linke IN (=L), vyhlási prenos za ukončený a
pokračuje v prehľadávaní na nasledujúcej adrese.
Konkrétne ma zaujíma bod č.3, ako dokáže mikrokontrolér "pasívne odpočúvať" prenos? Nakoľko sa tam budú meniť dáta, teda nabite môže byť ako log.1 tak aj log.0. Ono to asi funguje len tak, že ak sa na tom bite niečo deje, tak proste nič nerobí, no ak sa tam niečo nedeje dlhšie ako 2s tak to proste vyhodnotí ako koniec prenosu.
archeocomp napísal:
12 Jún 2023, 22:15
Na napísanie MON48 a dekodéru DCF-77

Kód: Vybrať všetko

http://archeocomp.blogspot.com/2019/10/dcf-77-decoder.html
pre 8048 som použil editor Atom. Napísal som si preň gramatiku 8048. Ako assembler som používal TASM 3.2, ktorý beží pod windows.

Ale to bolo v roku 2019 a na windows. Už asi rok používam ako desktop RaspberryPi a Linux. Teraz používam pre 8080/8048 programovanie Visual Code a zase som si napísal k nemu gramatiku pre inštrukčnú sadu 8048. V prípade záujmu môžem poskytnúť.
Na kompiláciu používam The Macro Assembler AS skompilovaný na Raspberry.

Na rýchle ladenie programov na 8048 mi slúži NCB48, program sa nahráva cez sériový port, trvá to cca 1-2s.

Kód: Vybrať všetko

http://archeocomp.blogspot.com/2019/06/ncb48-1-intel-mcs-48.html
Tak pre vývoj by som si tiež rád dal dokopy nejaký malý sýstém, na ktorom by som to mohol ladiť. SOm obmedzený len tým, aké súčiastky mám k dispozícii. Momentálne mám zopár kusov MHB8035, jeden MHB8748, no nemám žiaden obvod 8155, skôr len 8255 alebo 8243. Pamäte RAM taktiež mám (od 2k do 64k), ako aj zopár kusov MHB8251. Chcel som to ale skúsiť rozbehať s tým SIMEPROM, uvidím, čo pre mňa bude nakoniec naschodnejšia cesta.

Ak by som Vás mohol poprosiť o zaslanie tej gramatiky pre Visual Code, skúsim sa ešte pozrieť na ten TASM a macro assebmler.
0

vlado5
Stály člen
Stály člen
Príspevky: 222
Dátum registrácie: 19 Júl 2011, 00:00
Bydlisko: Trenčín

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa vlado5 » 13 Jún 2023, 10:34

Pokiaľ nemáte stykový obvod 8155, môžem len skonštatovať, že tento obvod sa v dnešnej dobe veľmi ťažko zháňa. On bol pomerne nedostupný aj v dobe jednočipov rady 48, oproti 8255, ktorý sa vyrábal aj v Tesle a je dostupný dodnes. Rozdiel 8155 oproti 8255 je ten, že 8155 má okrem rozšírenia v-v portov aj prídavnú ram-ku
256 Byte.
Ak chcete, pošlem e-mailom dataseet (mám aj od TOSHIBA, aj Intel.) V tej TOSHIBA je podrobnejšie popísaný.
Tu môžem poradiť, ako radili aj v predošlých vláknach, použiť na tento účel ATMEGA128, ktorý má aj dostatočný počet v-v portov, aj RAM, všetko v jednom puzdre aj s procesorovým jadrom. Potom to prepísať do kódu 48, ako tiež spomenul "peterple" a použiť pôvodné obvody (aj to len kôli historickej vernosti zariadenia).
0

stefanSK
Pokročilý člen
Pokročilý člen
Príspevky: 752
Dátum registrácie: 24 Jún 2010, 00:00
Bydlisko: Trnava
Vek: 68

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa stefanSK » 13 Jún 2023, 11:53

Tento projekt ma zaujal, nakoľko som fanda starých 8-bitov. Mám bohaté skúsenosti s programovaním v mcs48 aj mcs51 (neskôr asom prešiel na avr). Ešte v r. 1992 som si napísal simulátor pre asm48. Vtedy som robil ešte s 8035 vlastnú dosku, programátor 8748, 8051, 2708, 2716, hw simulátor 2051,...jednoducho všetko, čo bolo potrebné. k práci. Niekde mám aj prekladač asm48, asm51, a sim51. Všetko sú to programy pod DOS, windows bol ešte v začiatkoch.
Tak isto mám niekoľko 8035, 8048, 8243,8155 a EPROM 2708, 2716,...
So záujmom budem sledovať pokrok v tomto vývoji, žiaľ som momentálne dosť vyťažení - hovorí sa, že dôchodci majú veľa času - nie je to pravda. Napriek tomu som ochotný v prípade potreby poradiť.
Okrem iného mám PMD50-emulátor 8035 pre PMD85.
0
S.K.

archeocomp
Okoloidúci
Okoloidúci
Príspevky: 33
Dátum registrácie: 31 Mar 2017, 23:40
Bydlisko: Dca

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa archeocomp » 13 Jún 2023, 14:37

Tu je tá gramatika pre VSCode pre a48 extension. Musíš si do VSCode nainštalovať doplnok RetroAssembler a niekde kde sa nainštaluje mu pridaj medzi ostatné syntaxe, túto tu:

Kód: Vybrať všetko

{
    "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
    "name": "Retro Assembler (8048)",
    "patterns": [
        {
            "include": "#strings"
        },
        {
            "include": "#characters"
        },
        {
            "include": "#locallabels"
        },
        {
            "include": "#directives"
        },
        {
            "include": "#keywords"
        },
        {
            "include": "#instructions"
        },
        {
            "include": "#registers"
        },
        {
            "include": "#comments"
        },
        {
            "include": "#constants"
        },
        {
            "include": "#operators"
        }
    ],
    "repository": {
        "strings": {
            "name": "string.quoted.double.retroasm_8048",
            "begin": "\"",
            "end": "\"",
            "patterns": [
                {
                    "name": "constant.character.escape.retroasm_8048",
                    "match": "\\\\."
                }
            ]
        },
        "characters": {
            "patterns": [
                {
                    "name": "string.quoted.single.retroasm_8048",
                    "match": "(?i)\\'.\\'"
                }
            ]
        },
        "locallabels": {
            "patterns": [
                {
                    "name": "keyword.locallabel.retroasm_8048",
                    "match": "(?i)\\@+[a-z0-9]+\\b"
                }
            ]
        },
        "directives": {
            "patterns": [
                {
                    "name": "keyword.directive.retroasm_8048",
                    "match": "(?i)(?:^|\\s)(\\.(org|pc|equ|var|random|rnd|storage|ds|fill|align|target|format|cpu|closelabels|breakpoint|print|debug|error|end|region|endregion|function|endfunction|endf|segment|code|lib|data|bss|bank|namespace|include|incbin|macro|endmacro|endm|if|endif|loop|endloop|endl|while|endwhile|endw|break|byte|b|word|w|dword|dw|lobyte|hibyte|loword|hiword|encoding|text|t|textz|stext|ascii|asciiz|generate|memory|memorydump|setting))\\b"
                }
            ]
        },
        "keywords": {
            "patterns": [
                {
                    "name": "keyword.keyword.retroasm_8048",
                    "match": "(?i)\\b(auto|true|false)\\b"
                }
            ]
        },
        "instructions": {
            "patterns": [
                {
                    "name": "keyword.instruction.retroasm_8048",
                    "match": "(?i)[\\s]*\\b(add|addc|anl|orl|xrl|inc|dec|clr|cpl|da|swap|rl|rlc|rr|rrc|in|outl|mov|movd|movp3|movx|nop|anld|orld|call|ret|retr|xch|xchd|strt|stop|en|dis|sel|djnz|sub|subi|jmp|jmpp|jb[0-7]|jc|jnc|jz|jnz|jt0|jnt0|jt1|jnt1|jf0|jf1|jtf|jni|jb)\\b"
                }
            ]
        },
        "registers": {
            "patterns": [
                {
                    "name": "keyword.register.retroasm_8048",
                    "match": "(?i)\\b(R[0-7]|A|C|T|P|CNT|TCNT|TCNTI|RB0|RB1|MB[0-1]|CLK|PSW)\\b"
                }
            ]
        },
        "comments": {
            "patterns": [
                {
                    "name": "comment.block.retroasm_8048",
                    "begin": "/\\*",
                    "end": "\\*/",
                    "comment": "Block comment"
                },
                {
                    "name": "comment.line.retroasm_8048",
                    "begin": "//",
                    "end": "$",
                    "comment": "Single line comment with //"
                },
                {
                    "name": "comment.line.retroasm_8048",
                    "begin": ";",
                    "end": "$",
                    "comment": "Single line comment with ';'"
                }
            ]
        },
        "constants": {
            "patterns": [
                {
                    "include": "#constants-numeric"
                }
            ]
        },
        "constants-numeric": {
            "patterns": [
                {
                    "name": "constant.numeric.binary.retroasm_8048",
                    "match": "(?i)(\\%|0b)[0-1_]+\\b",
                    "comment": "Integer literal (binary)"
                },
                {
                    "name": "constant.numeric.binary.retroasm_8048",
                    "match": "(?i)[0-1_]+B\\b",
                    "comment": "Integer literal (binary)"
                },
                {
                    "name": "constant.numeric.hexadecimal.retroasm_8048",
                    "match": "(?i)(\\$|0x)[0-9a-f_]+\\b",
                    "comment": "Integer literal (hexadecimal)"
                },
                {
                    "name": "constant.numeric.hexadecimal.retroasm_8048",
                    "match": "(?i)[0-9][0-9a-f_]+H\\b",
                    "comment": "Integer literal (hexadecimal)"
                },
                {
                    "name": "constant.numeric.octal.retroasm_8048",
                    "match": "(?i)(0o)[0-7]+\\b",
                    "comment": "Integer literal (octal)"
                },
                {
                    "name": "constant.numeric.decimal.retroasm_8048",
                    "match": "(?i)\\b[0-9]+\\b",
                    "comment": "Integer literal (decimal)"
                },
                {
                    "name": "constant.numeric.hash.retroasm_8048",
                    "match": "\\#",
                    "comment": "Hash"
                }
            ]
        },
        "operators": {
            "patterns": [
                {
                    "name": "keyword.operator.retroasm_8048",
                    "match": "(?i)(\\+|\\-|\\=|\\*|\\/|\\!|\\<|\\>|\\&|\\||\\^|\\(|\\)|\\[|\\]\\,)"
                }
            ]
        }
    },
    "scopeName": "source.retroasm_8048"
}
stefan:
Keď si taký fanda, tak si dúfam nechýbal v Suchej nad Parnou
http://www.krupkaj.cz/xgal/album.php?show=Forever2023

vlado5, MrWifiHifi:
8155 a aj 8748 sú momentálne "za hubičku" na Aliexpresse
0

stefanSK
Pokročilý člen
Pokročilý člen
Príspevky: 752
Dátum registrácie: 24 Jún 2010, 00:00
Bydlisko: Trnava
Vek: 68

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa stefanSK » 13 Jún 2023, 15:04

Mám to "pod nosom " a nevedel som o tom. :(
0
S.K.

archeocomp
Okoloidúci
Okoloidúci
Príspevky: 33
Dátum registrácie: 31 Mar 2017, 23:40
Bydlisko: Dca

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa archeocomp » 13 Jún 2023, 15:19

Tak snáď marec 2024..
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa peterple » 13 Jún 2023, 15:54

MrWifiHifi napísal:
13 Jún 2023, 08:51
Konkrétne ma zaujíma bod č.3, ako dokáže mikrokontrolér "pasívne odpočúvať" prenos? Nakoľko sa tam budú meniť dáta, teda nabite môže byť ako log.1 tak aj log.0. Ono to asi funguje len tak, že ak sa na tom bite niečo deje, tak proste nič nerobí, no ak sa tam niečo nedeje dlhšie ako 2s tak to proste vyhodnotí ako koniec prenosu.
Ten kód čo som napísal robí presne to čo sa píše v bode 3 a 4.
Podľa schémy máš výstup multiplexov privedený na port P1.5
Inštrukcia JB P1.5, START kontroluje či je tam jednotka. Ak je tak znova nastaví registre na hodnotu čakania 2s.
Počas prenosu sa tam budú striedať jednotky a nuly rýchlosťou 1200 baud. Aj keby si prenášal aj samé 0xFF, tak tam bude minimálne štart bit. Keď prenos skončí tak sa tam prestanú vyskytovať jednotky a ten test v programe bude false. To znamená že tie slučky dole budú postupne počítať k nule. A až tam dôjdu tak máš vyhodnotený koniec prenosu. Slovom pasívne chceli povedať že ten 8748 nijak nezasahuje do tej komunikácie a ani tam nič nepridáva, len počúva či tam ešte behajú jednotky.
Mýliť môže ešte to že normálna RS232 komunikácia má idle stav v jednotke a aktívny v nule, ale v tej schéme sa zdá že sú tam celkovo 3 negácie než sa to dostane na pin P1.5 Preto je tu 1 ako aktívny stav a nula ako idle stav. Rovnako to ukazuje aj ten obrázok v tom zipe. Lahko skontroluješ na hw obyčajným voltmetrom.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
MrWifiHifi
Pokročilý člen
Pokročilý člen
Príspevky: 600
Dátum registrácie: 22 Aug 2017, 10:06

Re: Pomoc s programovaním mikrokontroléra rady x48/x51

Príspevok od používateľa MrWifiHifi » 30 Jún 2023, 10:18

Skúšky mám už konečne za sebou, takže sa môžem začať venovať programovaniu x48. V prvom rade ale musím rozbehnať ten simeprom od Elnecu.

Na nete som našiel, že niekto niečo podobné už staval s arduinom.
https://mygeekyhobby.com/2020/07/05/eprom-emulator/
Podľa všetkého je simeprom riešený dosť identicky, takže len zistiť, ako je presne zapojený a na ktoré vývody čo pripojiť. Ušetrí mi to dosť roboty.

Čo sa programovania týka, najpr sa musím trochu zoznámiť s x48 a následne začnem písať rutiny (funkcie). Budem sa snažiť vopchať celý kód do 2kB, nakoľko zatiaľ veľmi nerozumiem tomu programovému prepínaniu pamäte.

Ak bude niečo nové alebo by som si nevedel dať rady tak sa ozvem.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok