S klony 8052 jsem si uzil mnoho.
Tahle architektura se mi libila pro svuj assembler a bitove operace.
Nejzajimavejsi klon jsem pouzil na ctecku stravenek - delala scan a ocr a ven posilala po serialce nebo usb uz dekodovany string.
Pouzil jsem na to uPSD3234 od ST. Melo to 8KiB sram a 256KiB flash. Z periferek to melo USB, I2C, ADC, DDC, PWM, 2 UARTy a pgogramovatelne logicke pole s 16 makrocellami a 3000 hradly.
No, uzil jsem si s tim, ale kdyz se na to divam zpetne, byla to spatna volba. Uz v te dobe byly podstatne lepsi microcontrollery.
Tohle jsem samozrejme neprogramoval v assembleru, bylo to v C a kompiloval jsem to pomoci SDCC kompilatoru. Ten mel mimo jine spoustu bugu, takze nektere konstrukce byly stejne napsany v assembleru, i kvuli rychlosti.
Program byl velmi silne optimalizovany pro tuto architekturu, pamet byla vyuzita do skoro posledniho bitu. Byla to dost velka silenost.
No ona je to klasika, architektura od Intelu :/ Pomalý, omezení paměti, brzda v podobě externích pamětí, vyšší jazyky zkryplený a ASM nepřenositelný. Divím se, že si originál vystačil jenom s jedním napájecím napětím.
Roky doufám, že tahle architektura brzo skončí v muzeu, a moje přání furt není vyslyšeno a furt se s tím zgarbem dělají noví a noví brouci. :(
Jenomže to furt asiati cpou do brouků, jako je řadič kapacitního touchscreenu FT5x06 od FocalTECHu, starší RF čipy od Nordiců atd. :(
Jasně, že normálně by 51ku použil jenom šílenec blbej jak papuč, ale když někde není alternativa, je možnost upgrade FW a je potřeba trochu přiohnout funkci, tak začíná BDSM...
Ze se tak ptam (fakt me to zajima) - co bylo tak pekne na tom assembleru? Ze existoval jen jediny rozumny adresovy registr DPTR (naplnovany pres hodnich/spodnich osm bitu), polovina RAM nebyla adresovatelna primo a pro vetsi cipy (ne 51/52) se stejne muselo adresovat silene pres ruku? Skoda, ze se neprosadil Z8, ten mel lepsi reseni.
(btw: 68HC11 byla taky dost hruza, kdyz jsme u toho)
Díky za pěkný příklad, mám dost podobné zkušenosti. Právě u těchto švábů s trošku větší RAM a ROM/Flash se už ukazuje zastaralost 8051/52, hlavně při adresování. Stačí se podívat, jaké cviky musí překladač dělat i při takové maličkosti, jako je adresování polí nebo struktur (potom je docela zajímavé zjistit, že ten řadič USB zabírá větší plochu čipu než samotné jádro 51čky :-)
To jo, ale to nic nerika o tom, ze nasadit na to C prekladac je dost opruz. Samozrejme pokud mas par lidi, co s 51 vysivaji v ASM a nemas problem takovy (zdlouhavejsi) vyvoj zaplatit, tak ok, ale ne kazdej ma v logu VW :-) Ale to plati pro IT obecne - dnesni pocitace jsou vetsinou az "zbytecne" vykonne a maji velkou RAM, ovsem malokdo si muze dovolit vyvoj v ASM a zmensit naroky.
Já to chápu a nemám nic proti *původní* řadě se 128 nebo 256 bajty RAM a (tuším) čtyřmi kilobajty (EP)ROM. To byla celkem pohodička, typicky se to programovalo v assembleru a kdo potřeboval externí RAM/ROM, tak stejně skončil s dost neoptimálním řešením (další dva až čtyři švábi, to se elegance MCU trošku ztrácí). Ještě chápu větší ROM, nějaké převodní tabulky a tak se hodí.
Ovšem ve chvíli, kdy se ten čip rozšíří na 64 KB RAM a totéž s Flash (tedy ROM) a začne se masivně používat céčko, tak to přesáhne možnosti původní 51 - málo registrů, velmi omezené možnosti adresování čehokoli mimo prvních 128 bajtů, většina instrukcí vyžaduje pro jeden operand akumulátor, takže se pořád přesouvají data (je asi fajn mít spoustu jednobajtových instrukcí, ale v tom množství MOVů se už elegance ztrácí, ostatně jedno z častých rozšíření 51 je dalších cca 250 instrukcí, které rozšíří možnosti R0-R7). Při pohledu na generovaný kód je to bída, hlavně v porovnání s konkurencí (H8, AVR), kde se už od začátku soustředili na instrukční sadu vhodnou pro C-like překladače.