forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Projekt MCUmodul 89S52 v1.01 ke stažení

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> 8051 / 8052
 
administrator
hlavní administrátor
hlavní administrátor


Založen: 2.1.2006
Příspěvky: 758
Bydliště: Ostrava

PříspěvekZaslal: 20 srpen 2010, 22:41    Předmět: Projekt MCUmodul 89S52 v1.01 ke stažení Citovat

Neregistrovaný, ale o to známější uživatel fóra Hannibal (známý z tématu o emulátoru EMA51, zvukového generátoru, mikro fotbalu, Sféry, Helleny-51 (single-board computer), postupu pro crack a LED kostky) byl tak hodný a zaslal mi hotovou konstrukci MCU-modulu.

MCUmodul v1.01

Ide o aplikáciu pre ludí, ktorí nevedia programovať v assembleri/C-čku, no radi by si z času na čas niečo jednoduché pomocou MCU "zbastlili".

Je to vec pochádzajúca z rokov 1993-1995, má ju na svedomí bývalý tým
ASYAsoftware - už som to (r.2008) publikoval aj v P.E.

Popis

„ Túto stavebnicu som vymyslela pre mójho 58-ročného otca. Rád stavia elektro-konštrukcie s MCU, no už sa nedokáže kóli veku naučiť assembler. Chce vidieť výsledky svojej práce, a to okamžite, napísaním niekolko riadkov programu, čo v assembleri nieje možné. Preto je MCUmodul určený pre laikov, nie programátorov... "
Yasmine Anastassiou


UPOZORNENIE
Póvodní autori nepovolujú stavbu MCUmodulu pre žiadne komerčné účely, len pre individuálne použitie. Nikto z autorov nenesie zodpovednosť za žiadne škody nijakého druhu spósobené používaním MCUmodulu. Díky patrí M.Stephanopulovi, za poskytnutie dokumentácie, obrázkov, popisu i samotného SW upraveného pre súčasné kontroléry rady-52.

MCU modul (S52vi.oi)
AUTOR: Yasmine Anastassiová (1993) update: Markus Stephanopulos (1995) & "Hannibal" (2010)
Tento modul (póvodne navrhnutý pre kontrolér - I8752) je zaujímavou alternativou, ako možno zostaviť pomocou 8 súčiastok základ aplikácie s programom - a to bez nutnosti ovládania assembleru (či jazyka C), pričom k činnosti postačí len bežný terminálový program (bez napal'ovačky čipov) a PC. Uživatel' ale musí mať skúsenosti s logickými funkciami a binárnou/hexa sústavou. Jeho použitie móže byť v róznych zapojeniach s LED, rózne blikače, časové spínače, hodiny, alarmy, ovládanie osvetlení, ako jednoduché PLC, hračky, atd... Výhody/nevýhody tohoto modulu sú nasledovné:
+ velmi jednoduchá, rýchlo zostavitelná stavebnica s malým počtom súčiastok a malou spotrebou
+ pre použitie nie je potrebné ovládať assembler, nenáročnost' na vývojový čas a hardware
+ vstavaná obsluha riadenia základných užívatelských periférií: klávesnica, display, terminál, zvuk
+ simulované funkcie s prednastavenými reakciami, možnost zálohovania dát do SEEPROM
- velmi malá rýchlosť vykonávania inštrukcií (cca 30/sec pri 12Mhz), vhodné pouze pre riadenie časovo
nenáročných činností a procesov
vel'mi jednoduchá forma prevedenia zvukových návěstí alarm a alert, nízká freq. zvuku

obr. 1 - základné zapojenie MCUmodulu.

Schéma zapojenia
Schéma je na obr.1. Podla póvodného popisu zostavila Y.Anastassiová hardwarovo čo najjednoduhšie možné zapojenie. SW využíva len jadro 8052, dajú sa použiť typy Atmel AT89C52/S52, alebo Philips P89C52. Pre použitie rýchlejších MCU napr: AT89C51RD2, alebo P89C66x, je táto aplikácia z mójho pohladu zbytočnosť -tieto obvody sú drahšie, tým pádom už je na mieste riešiť pre ne konkrétny program v asembleri, alebo C aby boli korektne využité a nakoniec - ani najrýchlejšie MCU rady-51 sa samo o sebe v úlohe simulácie nevyrovná možnostiam súčasných moderných PLC.
Je to ale iba mój názor - díky Y.Anastassiovej už v r.2002 existovali podstatne dokonalejšie modifikácie MCU modulov, určené pre vyššie spomínané obvody, umožňujúce ovládať grafické LCD displeje a pripojenú bežnú PC klávesnicu.

Funkcie
Modul simuluje (alebo obsahuje) nasledovné funkcie:
- Hodiny real. času (24 hod. cyklus) / dátum na 1 bežný (nepriestupný) rok.
- Nastavenie 7 spínacích / vypínacích časov s výberom dňa v týždni.
- 2 alarmy s výberom dňa v týždni.
- 4 linky jednoduchého alertu (poplach s nastavitelnou prodlevou).
- 4 časovače do 24hod s auto-reloadom obsahu z predvolieb.
- Počítadlo impulzov.
- Nastavitelný generátor*.
- Nastavitelný sériový port (1k2 - 19k2).
- Program pre cca. 4k krokov.
- Jednoduché užívatelské heslo* (relatívna možnosť zapojiť viac MCU na spoločnú zbernicu).
- 3 paralelné porty.

(*pridal M.Stephanopulos)

Pripojenie na počítač
Činnost' modulu je závislá od „programu v SEEPROM", z ktorej beží. Ten vytvorí užívatel na základe požadovanej činnosti zariadenia, na ktorého prvky bude modul pripojený. Modul programujeme pripojením do serial-portu počítača. Menu terminálu je relatívne zložité a neviem ho presne opísať: pre potreby pripojenia stačí previesť „serial" a „terminal" nastavenia, viz. obr.2. Doporučená velkost bufferu terminálu je 1 - 4kB, aby sme mali k dispozícii aj tzv. „históriu" prevádzaných akcií. Časové spoždenia medzi vysielanými / prijatými znakmi nie sú nutné. Defaultná rýchlosť serial-portu modulu je 9600BD.

obr.2 - nastavenia terminálu: AmigaOS

obr.2 - nastavenia terminálu: Windows

Vyskúšané to bolo na dvoch platformách: AmigaOS3.x (program DreamTerm, Term4.8 - http://aminet.net) a Windows (program TeraTerm - www.ayera.com). Pripojenie modulu na počítač je možné urobiť pomocou obvodu MAX232 (doporučené), alebo (len skúšobne) z bežných súčiastok - obr.3.

obr.3

Po prvom spustení MCUmodulu (alebo vloženej čistej SEEPROM, či rozopnutom spínači S1 - viz. schéma) sa objaví nasledujúce hlásenie:

Opustíme ho dvomi spósobmi: "c" znamená pokračovat', pričom MCU vytvoří a uloží do SEEPROM default-nú konfiguráciu čo trvá cca. 5sec (pri nasledujúcom spustení naskočí normálně), a "r": reset MCU v případe, že nějaký zákmit pri zapnutí napájania spósobil chybné načítanie už predtým správne používanej SEEPROM (stalo sa mi to pri 50 pokusoch dvakrát).

term 4.8 (3.10.97)

Menu
Menu vyvoláme stlačením „h" (help), pričom sa objaví na termináli ponuka možností. Užívatelské heslo móže byť nastavené, ak chceme zabrániť prístupu dát do/z MCU modulu. Nemá vplyv na beh programu, no MCU "odpovedá" terminálu iba vtedy, ak je zhoda uloženého a prístupového hesla. Po prvom zapnutí je modul aktívny, reaguje na terminál a heslo zadané nieje. Screenshot ukážky komunikácie s počítačom je na obr.4. Na termináli je volba nového hesla po prvom spustení (heslo v tomto prípade a teda aj meno MCU je "andrea"), odhlásenie, prihlásenie, zmena hesla na iné a odstránenie hesla (Stephanopulos to urobil i použitím AREXX-u).

obr.4

Možné pripojenie periférií
Linky všetkých portov reagujú na log. nulu. K MCUmodulu (obr.5) možu byť připojené štyri linky alert (výstraha), dve akustické návestia, dva typy klávesnic a LCD display. Alarm / alert sú oddelené z dovodu možnosti pripojenia výstrahy na externý zosilňovač. Klávesnica može byť terminál (počítač), hexa (10 tlačidiel),
alebo inkrementálna (iba tlačidlá 0 a 1 = select/enter). Ako display použiva typy alfa-numerických LCD (napr. CM2016, CM2020): 2 riadky po 16, alebo 20 znakov. Display a klávesnica vždy používajú súčasne jeden port.

obr.5 - Periférie k MCU modulu. „x" je čislo portu: 0, 1, alebo 2

Písanie programu
Zapojenia s ukážkami programov spravil Markus Stephanopulos, povodne ich bolo ovel'a viac - no z dovodu nedostatku času som vybral iba niečo. Komentáre a úpravy textu v programoch som spravil pre lepši prehl'ad.
Do sequenceru skočíme zo základnej pozicie. Sequencer sa zastaví a jeho ukazovatel' adries je nulový. V prvom rade sa uistite že je pamať čistá - najlepšie je ju zmazať celú, pretože niektoré bajty, ktoré MCU nepouživa nie sú zobrazované na termináli - no program može narazenim na ne robiť hlúposti. Predpokladajme, že heslo (meno) MCUmodulu nieje vložené. Takže urobime tieto kroky:

kód:
MCU 1:>
MCU 1:>sequ[ok]
0000:cls_0000
0000:cls_0000?
0000:cls_0000?   [ok]
0000:

MCU modul zapnutý
s, enter (iná klávesa = zrušiť)
c, 0, 0, enter, 0, 0, enter (zmazanie celej SEEPROM)
enter

SEEPROM zmazaná



0000: 0000>10 0000>init_sdk 0000>init_sdk 2
enter (editovanie)
1, 0, enter (čislo prikazu)
enter
2



0002> 0002>00 0002>disptext 0002>disptext adr_04
0002>disptext adr_04 Hello!A

adresa je 0002, lebo príkaz "spotreboval" dva bajty památe SEEPROM
0, 0, enter
enter
0, 4, enter
H, e, l, l, o, !, enter (znak A znamená koniec textu a vkladá ho automaticky)



000B> 000B> 000B:
000B:list[ok]

adresa je 000B, lebo príkaz "spotreboval" 9 bajtov památe SEEPROM enter

l, enter (list - výpis programu, začína vždy od adresy 0000)


0000:init_sdk port 2   1. riadok programu: inicializácia použitia displeja + klávesnice na porte 2
0002:disptext adr_04 Hello   2. riadok programu: vypísanie textu od adresy 04 (horný riadok)
000B   - - -
000C   - - -

00BA   - - -
00BB   stlačením lubovolnej klávesy móžeme výpis prerušiť
[ok]
00BC:

00BC:quit[ok]   q, enter
MCU 1:>   štart programu (vždy od adresy 0000)


Alfa-numerický displej 2x16 znakov, pripojený na porte 2 - pre program výpisu textu na určenej pozícii displeja stačili 2 riadky. Horný riadok u 2-riadkových LCD začína adresou 00, spodný adresou 40.

UPOZORNENIE:
Je treba si uvedomiť, že MCU modul je značne zastaraná aplikácia určená pre jednoduché použitie a nemožno zrovnávať editor programu s kompilátorom, ktorý automaticky kontroluje správnosť a upozorní na každú chybu. Pri úprave údajov v SEEPROM neexistuje žiadna kontrola správnosti, preto je nutné dodržať tieto zásady:
Pri mazaní príkazov pomocou cls_xxxx vkladajte len adresy zobrazujúce sa na termináli počítača po "vylistovaní", nie neexistujúce, inak móže dójsť k odmazaniu len časti (nie celého) príkazu, alebo bloku príkazov a tým pádom k pomýleniu vykonávania programu zo SEEPROM. Tak isto - insert/delete používajte iba na vkladanie/mazanie prázdnych miest (bajtov), nie príkazov programu!
Rovnako pri používaní príkazov obsahujúcich adresu skoku vkladajte len adresy zobrazujúce sa na termináli po "vylistovaní", nie neexistujúce, inak sa vykonávanie programu móže pomýliť, tak isto pre príkaz useflash používajte len doporučené adresy rutín! Program ju nájde a v „liste" sa objaví potom namiesto adresy jej názov.

Aplikácie

Jednoduché hodiny s LCD displejom a klávesničkou, pripojenými podla obrázkov zapojení na port P1 MCU.

kód:
0000:init_sdk port 1     inicializuje/zmaže display + klávesničku pre použitie na porte P1 výpis textu
0002:disptext adr_00 DEMO-hodinyA     výpis textu
0010:loadbyte 1B data 44     vloženie začiatku zobrazenia pre FLASH-utilitu
0013:useflash :dispCLCK     FLASH-util: zobrazí hodiny HH:MM:SS
0016:loadbyte 1B data 28     vloženie adresy skoku v stránke na adr.xx28 pre FLASH-utilitu
0019:useflash :jumpKEYB     FLASH-util: skočí v stránke ak bude stlačené tlačidlo klávesničky
001C:jump_adr :0010     skok nazad do zobrazovacieho cyklu
0028:disptext adr_00 Nastav cas:A     výpis textu
0036:loadbyte 1B data 44     vloženie začiatku zobrazenia pre FLASH-utilitu FLASH-util: edituje hodiny HH:MM:SS skok nazad do cyklu
0039:useflash :editCLCK
003C:jump_adr :0000

Ak je 10 - tlačidlová klávesnica zbytočne velká, stačí upraviť povodný program a pripojiť len tlačidlá 0 a 1.

MCU 1:>sequ[ok]
0000:adr_0039
0039:
0039:ins?[ok] 0039:ins?[ok] 0039:
0039>modekeyb 1
003B> 003B:list

(0 = Hexa:10 tlačidiel, 1 = Duo: dve tlačidlá)


0036:loadbyte 1B data 44 0039:modekeyb D 003B:useflash :editCLCK 003E:jump_adr :0000 [ok]
Zvuková signalizácia po dopočítaní časovača 1 z predvoleného času na nulovú hodnotu. Vypína sa klávesničkou.

0000:init_sdk port 1
0002:disptext adr_05 TIMER1A 000B:disptext adr_42 cas A 0012:loadbyte 1B data 46 0015:useflash :editTMRS 0018:movebyte 90 byte 75 001B:orl_byte 90 byte 74 001E:if_=byte 90 data 00:0000 0023:loadbyte 73 data 00 0026:set_bit 5 byte 18 0029:useflash :disp TM1 002C:if_0=bit 5 byte 19:0029 0031:set_bit 5 byte 17 0034:useflash :waitKEYB 0037:clr__bit 5 byte 18 003A:clr__bit 5 byte 19 003D:jump_adr :0000

inicializuje/zmaže display + klávesničku pre použitie na porte P1 výpis textu výpis textu
vloženie začiatku zobrazenia pre FLASH-utilitu
FLASH-util: edituje obsahy časovača 0,1,2, alebo 3 stlačením tlačidla
kontrola, či sú vložené údaje do časovača 1
kontrola, či sú vložené údaje do časovača 1
ak je časovač 1 aj po vložení údajov stále nulový, skok nazad na začiatok vynulovanie sekúnd časovača 1 štart časovača 1
FLASH-util: zobrazí stav časovača 1 (na tej istej pozícii, ako jeho editovnie)
ak časovač nedosiahol nulovú hodnotu, skok nazad do cyklu
časovač je nulový, zapnutie zvuku na výstupe pre „alert"
zvuk píska, čaká sa na stlačenie nejakého tlačidla obsluhy...
vypnutie časovača 1
vypnutie zvuku
návrat nazad do cyklu

TIMER1
cas DD0:Q0
TIMER1

Časovač po dosiahnutí 00:00:00 „zdanlivo" stojí. Dochádza však pri jeho vynulovaní k prednastaveniu obsahu predvol'by do časovača a tá je nulová. Ak by bola nastavená na určitý čas, mohol by sa časovač využívat na upozorňovanie opakujúcich sa časových úsekov.

LED efekt "kid raider" - pendlujúci svetelný bod z lava do prava a nazad. LEDky sú pripojené na port P2.

0000:set_bit 6 byte 1A 0003:set_bit 7 byte 1A 0006:loadbyte 3F data FE
nastav port 2 ako výstup nastav bit FLAG na 1 rozsvietenie prvej LED diody

0009:rotlbyte 3F 000B:if_1=bit 7 byte 1A:0009 0010:rotrbyte 3F 0012:if_1=bit 7 byte 1A:0010
0017:jump_adr :0006

rotácia portu 2 o 1 pozíciu vlavo
ak nebola presiahnutá 8-sma dioda, vráť sa na 0009
rotácia portu 2 o 1 pozíciu vpravo
ak nebola presiahnutá prvá dioda, vráť sa na 0010
skok do východiskovej pozície rozsvietenia


Pripojenie LED diod na port P2.

Z 15 aplikácií som vyskúšal len 3 uvedené ( viac sa mi nechcelo © ), k čomu som si zhotovil malý „prototyp". V závere manuálu je uvedených niekolko info pre prípadných záujemcov a tabulka prílohy pre písanie programov.

Obrázok prototypu na univerzálnych doškách pl.spoja.

Info
Činnosti sequenceru v súvislosti s terminálom, ak je MCU: 1. odhlásený, 2. prihlásený a 3. prihlásený a vójdem do niektorej položky - pas_ pwd_ ...atd:

1. MCU normálne pracuje, vykonáva program, ale prípadné reakcie na terminál sú blokované. 2. MCU normálne pracuje, vykonáva program a reakcie na terminál sú zobrazované na monitore. 3. Vojdením do akejkolVek položky sa vykonávanie programu pozastaví, po opustení položky pokračuje ďalej. Pri vojdení /vyskočení zo sequenceru sa program zastaví /reštartuje od adr. 0000H.

Je možné pripojiť i inú (vačšiu/menšiu) pamať k MCU?
Vyhovujú všetky typy SEEPROM typu AT24Cxxx (32,64,128,256,512), žial' kapacita programovej -užívatelskej pamate sa nad 4kB nezvýši. Pamať vydrží cca. 100k zápisov s dobou pamatania okolo 40 rokov
Čo znamená jednotka za názvom (heslom) MCU: MCU xxxxxxxx 1:>
Je to indikácia oznamujúca, že prípadné dáta budú vysielané smerom k terminálu. Ak by sme použili príkaz zadania hodnoty opačne - teda z terminálu do MCU, indikátor sa zmení na dvojku - tj. MCU čaká a požaduje vloženie dát: "MCU xxxxxxxx 2:>". Zmena jednotky na dvojku nenastane iba v prípade použitia niektorých volaní "volného" snímania useflash rutín, ktoré slúžia pre vetvenie programu.

Info o použití portov:
Každý port nakonfigurujeme ako vstupný / výstupný nastavením riadiaceho bitu v prípade, že je používaný ako bežný vstup / výstup. Príkaz "initsdk" ho obsadzuje pre riadenie displaya / klávesničky, pričom mu budú presmerovávané všetky činnosti s nimi súvisiace - v tomto prípade dáta čítané /zapisované na adrtesu portu budú bez reakcie na fyzické piny puzdra obvodu. Port P1 má okrem toho ešte snímanie liniek "alert", ktoré sa aktivujú nastavením ich príslušných bitov. Ak port P1 používa display / klávesnička, linky alertu sú i napriek aktivovaniu ignorované. Pri používaní portu ako vstup / výstup sú však normálne brané v úvahu - preto ak je P1 nastavený ako výstupný, treba si dať pozor, aby nedošlo k vyvolaniu funkcie alert vlastným užívatelským programom. Port P0 je otvorený kolektor, preto ho treba ošetriť "pull-up" 10kQ rezistormi na vetvu +5V. Ak je niektorý port používaný ako výstupný, pred zmenou na vstupný do neho treba vložiť data FFH. Dóvod = architektúra 8051.
Čo je konfigurácia (CFG):
Príkazy pracujúce s konfiguráciou ukladajú data z RAM MCU do SEEPROM: predvolby podsvitu displaya, dočasovania, dáta spínacích /vypínacích /alarmových časov a dní ich použitia, predvolby spoždení liniek funkcie alert a predvolby timerov 0-3. Neukladá sa údaj o baudovej rýchlosti serial portu.

Kolko úrovní má simulovaný zásobník pre adresy volania (CALL)? 15 ponorení.
Je v aplikácii MCUmodul počítané s možnosťou vloženia nezmyselných dát?
MCU prevádza automaticky kontrolu správnosti. Ak dátum, alebo mesiac presahujú logicky správnu hodnotu, budú nahradené údajom 01. Pre deň: 00-06 (po-ne). Iný údaj vložený na pozíciu dňa bude = 00. Hodiny: 00-23, minuty / sekundy: 00-59, časovania alarmov: 00-99. Iný údaj na týchto pozíciách bude nahradený hodnotou 00.

Tipy & triky
Program sa zacykloval a MCU nereaguje na terminál:

1. Stlačiť tlačidlo RST, rozopnúť spínač S1 a RST uvolniť. 2. Po nabehnutí modulu stlačiť klávesy "s" a "enter". |!p 3. Zopnúť spínač S1, a príkazmi terminálu pre sequencer problém v programe nájsť a odstrániť.

Čo robiť, ak zabudnem heslo:
1. Stlačiť tlačidlo RST, rozopnúť spínač S1 a RST uvolniť.
2. Po nabehnutí modulu zopnúť spínač S1.
3. Stlačiť klávesy "w", "enter", "enter".



mcumodul_s52_v1_01-obr_0-titulni_obrazok.jpg
 Komentář:
MCUmodul v1.01 - obrázek č. 0 - titulní obrázok.
 Velikost:  107.2 kB
 Zobrazeno:  13530 krát

mcumodul_s52_v1_01-obr_0-titulni_obrazok.jpg



mcumodul_s52_v1_01-obr_1-zakladne_zapojenie .jpg
 Komentář:
MCUmodul v1.01 - obrázek č. 1 - základné zapojenie MCUmodulu.
 Velikost:  77.26 kB
 Zobrazeno:  13530 krát

mcumodul_s52_v1_01-obr_1-zakladne_zapojenie .jpg



mcumodul_s52_v1_01-obr_2a-nastavenia_amigaos.jpg
 Komentář:
MCUmodul v1.01 - obrázek č. 2a - nastavenia terminálu na AmigaOS.
 Velikost:  109.92 kB
 Zobrazeno:  13530 krát

mcumodul_s52_v1_01-obr_2a-nastavenia_amigaos.jpg



mcumodul_s52_v1_01-obr_2b-nastavenia_windows.jpg
 Komentář:
MCUmodul v1.01 - obrázek č. 2b - nastavenia terminálu na Windows.
 Velikost:  70.4 kB
 Zobrazeno:  13530 krát

mcumodul_s52_v1_01-obr_2b-nastavenia_windows.jpg



mcumodul_s52_v1_01-obr_3-schema.jpg
 Komentář:
MCUmodul v1.01 - obrázek č. 3 - schéma.
 Velikost:  38.71 kB
 Zobrazeno:  13530 krát

mcumodul_s52_v1_01-obr_3-schema.jpg



mcumodul_s52_v1_01-obr_4-menu.jpg
 Komentář:
MCUmodul v1.01 - obrázek č. 4 - menu.
 Velikost:  109.99 kB
 Zobrazeno:  13530 krát

mcumodul_s52_v1_01-obr_4-menu.jpg



mcumodul_s52_v1_01-obr_5-periferie.jpg
 Komentář:
MCUmodul v1.01 - obrázek č. 5 - Periférie k MCU modulu. „x" je čislo portu: 0, 1, alebo 2.
 Velikost:  72.3 kB
 Zobrazeno:  13530 krát

mcumodul_s52_v1_01-obr_5-periferie.jpg



mcumodul_s52_v1_01-manual_a_stavebna_dokumentacia.pdf
 Komentář:
MCUmodul v1.01 - manuál a stavebná dokumentácia.

Stáhnout
 Soubor:  mcumodul_s52_v1_01-manual_a_stavebna_dokumentacia.pdf
 Velikost:  2.62 MB
 Staženo:  563 krát


mcumodul_s52_v1_01-program.hex
 Komentář:
MCUmodul v1.01 - firmware (program na nahranie do Atmel 89S52) v HEX.

Stáhnout
 Soubor:  mcumodul_s52_v1_01-program.hex
 Velikost:  22.51 kB
 Staženo:  894 krát


_________________
Rudolf Veselý
Administrátor webu http://www.mcontrollers.com/ a fóra http://forum.mcontrollers.com/.
Pravidla fóra mcontrollers.com.

You can do everything in assembler, but no one wants to program in assembler anymore.
... Yukihiro Matsumoto

Rudolf Vesely on LinkedIn


Naposledy upravil administrator dne 21 prosinec 2012, 23:17, celkově upraveno 2 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
administrator
hlavní administrátor
hlavní administrátor


Založen: 2.1.2006
Příspěvky: 758
Bydliště: Ostrava

PříspěvekZaslal: 04 říjen 2010, 18:21    Předmět: Projekt MCUmodul v1.01 portovaný na AT89C51AC2 ke stažení Citovat

MCUmodul v1.01 portovaný na AT89C51AC2

Hannibal a pan Oleg Kowalczuk si dali tu práci a předělali MCUmodul verzi 1.01 pro modernější mikrokontrolér AT89C51AC2. Děkujeme!

Popis

„ Mám pre Vaše forum ešte jednu zaujímavosť - porarilo sa mi portovať MCUmodul - alikáciu, ktorú som Vám pred časom poslal - z povodného procesora AT89S52 na moderný kontrolér AT89C51AC2. Robil som to priamo v zdrojáku(iná možnosť nebola) - asi 5 dní (2 hodiny denne...) "

„ V podstate ide o to isté, len som "vypatchoval" dorazy rozsahu pamate pre užívatelský program na 1k programových krokov a vytvoril nové ovládače pre interné prístupy médií, (RAM a EEPROM) ktorými AT89C51AC2 disponuje. Tak isto je rozšírené menu o príkazy s nimi pracujúce a mierne upravený editor vkladania dát - nezabudne poslednú adresu prístupu (predtým sa vždy vynulovala) a je možné opustiť editovanie i bez vloženia inštrukcie (po zobrazení jej názvu:enter=pokračovanie v editovaní, iná klávesa= nepokračovať - verzia pre AT89S52 toto nemala). Doplnená je i tabuľka zobrazujúca názvy "riadiacich bitov" (po vylistovaní). "



mcumodul_c51ac2_v1_01-manual_a_stavebna_dokumentacia.pdf
 Komentář:
MCUmodul v1.01 portovaný na AT89C51AC2 - manuál a stavebná dokumentácia.

Stáhnout
 Soubor:  mcumodul_c51ac2_v1_01-manual_a_stavebna_dokumentacia.pdf
 Velikost:  5.21 MB
 Staženo:  454 krát


mcumodul_c51ac2_v1_01-program.hex
 Komentář:
MCUmodul v1.01 portovaný na AT89C51AC2 - firmware (program na nahranie do Atmel 89C51AC2) v HEX.

Stáhnout
 Soubor:  mcumodul_c51ac2_v1_01-program.hex
 Velikost:  90.03 kB
 Staženo:  925 krát


_________________
Rudolf Veselý
Administrátor webu http://www.mcontrollers.com/ a fóra http://forum.mcontrollers.com/.
Pravidla fóra mcontrollers.com.

You can do everything in assembler, but no one wants to program in assembler anymore.
... Yukihiro Matsumoto

Rudolf Vesely on LinkedIn


Naposledy upravil administrator dne 14 prosinec 2010, 18:47, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
andreaa
Anonymní





PříspěvekZaslal: 09 říjen 2010, 18:53    Předmět: modul na AT...ED2 Citovat

Zdravím všetkých!

Chcela by som sa spýtať, či by táto aplikácia bežala aj na At...ED2. Nemám mikroprocesor At...AC2 a chcem si to iba vyskúšať, nom moc sa v ich datašetoch nevyznám Laughing Laughing

Ďakujem, Andrea.
Návrat nahoru
 

 
Atlan
Profesionál
Profesionál


Založen: 4.2.2009
Příspěvky: 889

PříspěvekZaslal: 09 říjen 2010, 19:00    Předmět: Citovat

nie si ty andrea R. ?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
administrator
hlavní administrátor
hlavní administrátor


Založen: 2.1.2006
Příspěvky: 758
Bydliště: Ostrava

PříspěvekZaslal: 30 duben 2011, 16:45    Předmět: Projekt MCUmodul AT89C51AC2 v1.03 ke stažení Citovat

Hannibal byl tak laskav a zaslal mi aktualizaci konstrukce MCUmodul.

MCUmodul-AC2 (89C51AC2) v1.03 (update 1.03 lite)

Túto vec som dostal nedávno mailom od Olega Kowalczuka. Ide o verziu klasického MCUmodulu-AC2 (ktorý sme s Olegom upravili z pôvodného MCUmodulu-S52), “fúziovanú” s verziou MCS BASIC–52 (v1.31), ktorý už dávnejšie upravila pre beh na jadrách AT89C51XXX Y. Anastassiová (r.2003). Používala to ako učebný – výukový MCU-kit pre študentov. Oleg Kovalczuk obidva systémy spojil do jedného a vytvoril v celku peknú vecičku. Schému neuvádzam – je identická so zapojením MCUmodulu-AC2 (manuál je vo fóre stránok http://forum.mcontrollers.com/, sekcia 8051/8052). Obidva systémy majú oddelenú pamäť pre odzálohovanie vyvíjaného programu aplikácie a navzájom sa neovplyvňujú. Auto-run programu má len MCUmodul-AC2, preto je v úvodnom menu, zobrazenom po zapnutí, ako východiskový.

PRÍLOHA: podmienkové bity

kód:
bit bajtu,   názov (zobrazí iba list),  funkcia / činnosť

17H/bit-0 ON_time_    nastaví MCU, ak je hociktorý spínací čas a deň zhodný s hodinami
17H/bit-1 OFF_time    nastaví MCU ak je hociktorý vypínací čas a deň zhodný s hodinami
17H/bit-2 y/n_time    nastavený = sú akceptované spínacie / vypínacie časy a dni
17H/bit-3 sndALARM    nastaví MCU ak je hociktorý alarmový čas a deň zhodný s hodinami
17H/bit-4 y/nALARM    nastavený = sú akceptované navolené alarmové časy a dni
17H/bit-5 sndALERT    nastaví MCU po uplynutí času vzniku niektorého alertu
17H/bit-6 y/nALRT0    nastavený = port P1.0 spustí odpočítavanie času pre vznik alertu
17H/bit-7 y/nALRT1    nastavený = port P1.1 spustí odpočítavanie času pre vznik alertu

18H/bit-0 y/nALRT2    nastavený = port P1.2 spustí odpočítavanie času pre vznik alertu
18H/bit-1 y/nALRT3    nastavený = port P1.3 spustí odpočítavanie času pre vznik alertu
18H/bit-2 latch_CT    nastavený = neprepisuje obsah počítadla do vyrovnávacej pamäte
18H/bit-3 clear_CT    nastavený = drží obsah počítadla impulzov vynulovaný
18H/bit-4 run_TM0    nastavený = beží časovač 0
18H/bit-5 run_TM1    nastavený = beží časovač 1
18H/bit-6 run_TM2    nastavený = beží časovač 2
18H/bit-7 run_TM3    nastavený = beží časovač 3

19H/bit-0 convdisp    spôsob, akým sa zobrazí na displeji stav A/D prevodu v dekad. sústave:
19H/bit-1 convdisp    bit0 / bit1:  00=x,xx  01=xx,x  10=xxx  11=nepoužitý stav
19H/bit-2 PWMclock    0=f.OSC/6,  1=f.OSC/2 – časovanie pre PWM kanál
19H/bit-3 user_bit     pre individuálne použitie (bity 0-3 neboli v MCUmodule-S52 použité)
19H/bit-4 zero_TM0    nastaví MCU, ak má počas behu nulovú hodnotu časovač 0
19H/bit-5 zero_TM1    nastaví MCU, ak má počas behu nulovú hodnotu časovač 1
19H/bit-6 zero_TM2    nastaví MCU, ak má počas behu nulovú hodnotu časovač 2
19H/bit-7 zero_TM3    nastaví MCU, ak má počas behu nulovú hodnotu časovač 3

1AH/bit-0 P1.0ALRT    nastaví MCU, ak je alert zaznamenaný ako aktívny na vstupe P1.0
1AH/bit-1 P1.1ALRT    nastaví MCU, ak je alert zaznamenaný ako aktívny na vstupe P1.1
1AH/bit-2 P1.2ALRT    nastaví MCU, ak je alert zaznamenaný ako aktívny na vstupe P1.2
1AH/bit-3 P1.3ALRT    nastaví MCU, ak je alert zaznamenaný ako aktívny na vstupe P1.3
1AH/bit-4 i/oPORT0    0=vstupný, 1=výstupný
1AH/bit-5 i/oPORT1    0=vstupný, 1=výstupný
1AH/bit-6 i/oPORT2    0=vstupný, 1=výstupný
1AH/bit-7 FLAG_bit    nastavuje MCU použitím inkrementu, dekrementu, rotácií a porovnaní


PRÍLOHA: useflash rutiny

Sú to programové call rutiny vo FLASH MCU, vykonávajúce časti programu, ktoré by boli buď zdĺhavo realizovateľné
inštrukciami MCU modulu, alebo by ich nimi nebolo možné previesť vôbec. Tým, že sa zadáva ich hexa-adresa, (nie
názov) je možné vytvoriť ďalšie užívateľské podprogramy vo voľnej časti FLASH procesora (v lokácii 0x5000-
0x7FFFH, pre použitie sú: RB0, A, PSW, DPTR0 / DPRT1 a 10 úrovní SP). Starý MCUmodul (r. 2001) osadený
procesorom P89C668 vytvorený Y. Anastassiovou ich mal 50. Pre MCUmodul AC-2 sú k dispozícii adresy pre tieto:

kód:
adresa, názov (zobrazí list),  funkcia / činnosť

0EF5: sendCLCK   vypíše na terminal hodiny HH:MM:SS
0EF8: sendDATE    vypíše na terminal DEN/DAT.MES
0EB3: dispCLCK    vypíše hodiny HH:MM:SS na display. Pozícia zobrazenia = adr.1BH
0EB6: dispDATE    vypíše dátum DEN/DAT.MES na display. Pozícia zobrazenia = adr.1BH
0EB9: sendCRLF    vyšle CR + LF na terminál
0EBC: jump_TTY  ak je klávesnica terminálu uvolnená, tak návrat bez reakcie. Ak je prijatý serialom nejaký
znak, tak data na adr.1Bh sú brané ako nižšia adresa v stránke, z ktorej useflash voláme a
prevedie sa skok na túto adresu. Následne sa uloží prijatý znak z terminálu na adr.1Bh.
Táto rutina reaguje pomalšie, takže treba podržať dlhšie stlačenú klávesu na počítači (cca
1 sec.), aby terminálový program poslal po sebe opakovane viac znakov.
0EBF: send_TTY    vyšle data z adresy 1Bh cez serial port.
0EC2: waiting_  časová prodleva, závisí od velkosti dát vložených pred tým na adr.1Bh (00h=minimálna,
FFh=maximálna - trvá viac ako minútu).
0EC5: jumpKEYB  ak sú tlačidlá klávesničky uvolnené, tak návrat bez reakcie, inak je stav adresy 1Bh braný
ako nižšia adresa v stránke z ktorej useflash voláme a prevedie sa skok na túto adresu.
Zároveň uloží prijatý znak z klávesnice do adr. 1Bh.
0EC8: waitKEYB    prijme bajt z klávesničky a ulozi na adr.1Bh. Ak je klávesnica nestlačená-uvolnená, čaká.
0ECB: wait TTY  prijme znak z terminalu a uloži na adr.1Bh. Ak nieje žiadna klávesnica PC stlačená, čaká.
0ECE: editCLCK    editor hodín. Pozícia zobrazenia = adr.1BH
0ED1: editDATE    editor dátumu. Pozícia zobrazenia = adr.1BH
0ED4: editPRES    editor nastavení predvolieb časovačov T0 – T3. Pozícia zobrazenia displeja = adr.1BH
0ED7: editTMRS    editor časovačov T0 – T3. Pozícia zobrazenia displeja = adr.1BH
0EDA: edit_ON_    editor spínacích časov + dní. Pozícia zobrazenia displeja = adr.1BH
0EDD: edit_OFF    editor vypínacích časov + dní. Pozícia zobrazenia displeja = adr.1BH
0EE0: editALAR    editor alarmových časov + dní. Pozícia zobrazenia displeja = adr.1BH
0EE3: editDLAY    editor zpoždení liniek alert pre vstupy P1.0 – P1.3 . Zobrazenie na displeji = adr.1BH
0EE6: disp_TM0    zobrazí na displeji stav časovača T0. Pozícia zobrazenia displeja = adr.1BH
0EE9: disp_TM1    zobrazí na displeji stav časovača T1. Pozícia zobrazenia displeja = adr.1BH
0EEC: disp_TM2    zobrazí na displeji stav časovača T2. Pozícia zobrazenia displeja = adr.1BH
0EEF: disp_TM3    zobrazí na displeji stav časovača T3. Pozícia zobrazenia displeja = adr.1BH
0EF2: disp_CT_    zobrazí na displeji stav počítadla CT. Pozícia zobrazenia displeja = adr.1BH
0FA0: A/D_conv    obrazí na displeji A/D prevod. Pozícia zobrazenia displeja = adr.1BH
0FA3: dispconv    zobrazí stav adr.6EH na displeji, ako A/D prevod. Pos. zobr. = adr.1BH
0FA6: PWM_mode  vloží do PWM data z adr.6FH (adresy 6EH a 6FH neboli v MCUmodule-S52 použité)
0FA9: clr_P4.0    nuluje linku portu P4.0 – táto linka môže byť použitá iba ako výstupná
0FAC: set_P4.0    nastaví linku portu P4.0 – táto linka môže byť použitá iba ako výstupná
0FAF: cpl_P4.0    neguje linku portu P4.0 – táto linka môže byť použitá iba ako výstupná
0FB2: clr_P4.1    nuluje linku portu P4.1 – táto linka môže byť použitá iba ako výstupná
0FB5: set_P4.1    nastaví linku portu P4.1 – táto linka môže byť použitá iba ako výstupná
0FB8: cpl_P4.1    neguje linku portu P4.1 – táto linka môže byť použitá iba ako výstupná
0FBB: GENERmod  spustí generátor (zastaví serial port – a naopak) na linke P1.0


PRÍLOHA: popis inštrukcií

Riadia činnosť funkcií MCU a obsluhu "podmienkových" príznakov. Inštrukcie vkladáme terminálom - pod číselným kódom vojdením do sequenceru na jednotlivé adresy pamäte SEEPROM, (x)=počet bajtov, ktoré inšttrukcia spotrebuje.


kód:
kód, názov inštrukcie,  funkcia / činnosť

00(?)disptext xx abcd…^  zobrazí text na displayi od adr.xx, ukončený symbolom ^ (vkladá ho automaticky)
01(?)termtext abcd…^  zobrazí text na termináli, ukončený symbolom ^ (vkladá ho automaticky)
02(3)dispbyte yy xx  zobrazí bajt yy na displayi od adr.xx
03(2)termbyte yy    zobrazí bajt yy na termináli
04(3)dispbits yy xx  zobrazí 8 bitov bajtu yy na displayi od adr.xx
05(2)termbits yy    zobrazí 8 bitov bajtu yy na termináli
06(3)dispchar yy xx  zobrazí bajt yy jako ascII znak na displayi od adr.xx
07(2)termchar yy    zobazí bajt yy jako ascII znak na termináli
08(4)ediDbyte yy xx zz  edituje bajt yy na displayi od adr.xx v rozsahu 00-zz dekadicky
09(4)ediHbyte yy xx zz  edituje bajt yy na displayi od adr.xx v rozsahu 00-zz hexa
0A(3)editbits yy xx  edituje bity bajtu yy na displayi od adr.xx
0B(3)editchar yy xx  edituje bajt yy zápisom hexa konštanty a jej ascII znaku na displ.adr.xx
0C(3)ediDbyte yy zz  edituje bajt yy terminálom v rozsahu 00-zz dekadicky
0D(3)ediHbyte yy zz  edituje bajt yy terminálom v rozsahu 00-zz hexa
0E(2)editbits yy    edituje bity bajtu yy terminálom
0F(2)editchar yy    edituje bajt yy zápisom hexa konštanty ascII znaku terminálom
10(2)init_sdk p    inicializuje Dispay/Keyboard pre použitie portu Pp
11(2)modekeyb m    volba módu editovania užívateľskej klávesnice: klasicky(10 tl), alebo inkrement(2 tl)
12(1)read_cfg    načíta užívateľskú konfiguráciu do int.RAM MCU z EEPROM
13(1)save_cfg    uloží užívateľskú konfiguráciu z int.RAM MCU do EEPROM
14(3)clr__bit b yy    vymaž bit b bajtu yy
15(3)set__bit b yy    nastav bit b bajtu yy
16(3)cpl__bit b yy    neguj bit b bajtu yy
17(3)and_byte yy xx  log.and bajtu yy s bajtom xx
18(3)orl_byte yy xx  log.orl bajtu yy s bajtom xx
19(3)xor_byte yy xx  log.xor bajtu yy s bajtom xx
1A(2)not_byte yy    neguj bajt yy
1B(3)useflash aaaa  vykoná ľubovoľný podprogram z FLASH MCU na adr.aaaa
1C(2)rotlbyte yy    rotácia bajtu yy vľavo cez príznak: bit 7 -> FLAG-bit -> bitu 0
1D(2)rotrbyte yy    rotácia bajtu yy vpravo cez príznak: bit 0 -> FLAG-bit -> bitu 7
1E(3)inc_byte yy n  inkrement bajtu yy v hex/dec sústave
1F(3)dec_byte yy n  dekrement bajtu yy v hex/dec sústave
20(3)movebyte yy xx  presun obsahu bajtu xx do bajtu yy
21(3)loaddata yy dd  zápis dát dd do bajtu yy
22(5)if_0=bit b yy aaaa  ak je bit bajtu yy b=1, skok na adr.aaaa
23(5)if_1=bit b yy aaaa  ak je bit bajtu yy b=0, skok na adr.aaaa
24(5)if_=byte yy xx aaaa  ak je bajt yy zhodný s bajtom xx, skok na adr.aaaa
25(5)if_=data yy dd aaaa  ak je bajt yy zhodný s dátami dd, skok na adr.aaaa
26(3)jump_adr aaaa  skok na adr.aaaa
27(3)call_adr aaaa    volanie na adr.aaaa
28(1)<return>    návrat z volania
29(1) ----     prázdna operácia bez významu


(x)= počet bajtov inštrukcie, b= bit 0-7, p= port 0,1,2, m= mód činnosti klávesnice 0-hexa /1-inkrement, n= pre inštr.1E a 1F: 1=desiatková / 0=hexa sústava, dd= datová konštanta 00-FFH, xx,yy= ak ide o adr.bajtu, tak rozsah: 00-FFH* pričom yy je cieľový bajt, ak ide o adr.displaya, napr. CM2016 (2x16 znakov), tak: 1.znak /1.riadok=00H, 2.znak /1.riadok=01H…0FH, a 1.znak / 2.riadok=40H, 2.znak/2.riadok=41H…4FH, zz= pre dec. sústavu: 00-99, pre hexa: 00-FFH, aaaa= adresa 0000-03FFH

(* - určité obmedzenia, týkajúce sa zákazu prístupu na niektoré RAM adresy, ktoré sú v použití programu procesora)

PRÍLOHA: BASIC-52

Interpreter Basic (modifikovaná verzia 1.31) je navrhnutý pre beh na jadre 8052 s externou RAMkou. Y. Anastassiová ho upravila pre beh v XRAM procesora a uvolnila porty P0 a P2 k použitiu. Vyžaduje minimum 1kB pamäte XRAM, pri ktorej je ale značne zlimitovaný. Beží v tzv. RAM-móde, vypustené (alebo zmenené) sú iba príkazy, ktoré pracovali s externou EPROM (jej napálenie/čítanie) a príkazy pracujúce s prerušeniami (prerušenia využíva iba MCUmodul-AC2 a v tomto použití pre basic moc veľké opodstatnenie nemajú). Použitie BASICu obsahuje kvantum príkazov, preto vážne doporučujem prečítať si original manuál k BASICU-52, kde je činnosť príkazov aj celého interpreteru výborne opísaná. Zmienim sa iba o úpravách, ktoré boli pre použitie BASICu-52 na jednočipovom mikrokontroléri urobené:

XFER: pôvodne slúžil na prenos dát medzi externými pamäťami EPROM a RAM, teraz prenesie program z internej EEPROM do XRAM; tento prenos nastáva aj automaticky – vždy po spustení interpreteru Basic.
PROG: uloží program z XRAM do internej EEPROM procesora.

Zrušené (zbytočné a nutne vypustené) príkazy sú iba tieto: ROM, RROM, PGM a FPROG (ten bol vypustený ešte pôvodnými autormi v tejto verzii interpreteru), a príkazy pracujúce s prerušeniami: CLOCK, ONTIME, ONEX1, RETI a IDLE.

Pribudli ďalšie inštrukcie, ktoré rozširujú možnosti využitia portov P0, P2 a P4 procesora (BASIC-52 ich neobsahoval):

kód:
P0:  ovláda prístup (zápis, čítanie obsahu) k portu P0
P2:  ovláda prístup (zápis, čítanie obsahu) k portu P2


pouzitie v programe - napr:

kód:
5  P2=200
10 if P0=100 then ...
15 ...
20 ...
30 end


Linky portu P4 – P4.0 a P4.1 je možné ovládať v BASICu-52 pomocou jeho inštrukcie „call xxxxh“.

kód:
call 0FA9h  nuluje linku portu P4.0 – táto linka môže byť použitá iba ako výstupná
call 0FACh  nastaví linku portu P4.0 – táto linka môže byť použitá iba ako výstupná
call 0FAFh  neguje linku portu P4.0 – táto linka môže byť použitá iba ako výstupná
call 0FB2h  nuluje linku portu P4.1 – táto linka môže byť použitá iba ako výstupná
call 0FB5h  nastaví linku portu P4.1 – táto linka môže byť použitá iba ako výstupná
call 0FB8h  neguje linku portu P4.1 – táto linka môže byť použitá iba ako výstupná


pouzitie v programe - napr:

kód:
10 call 0FA9h
20 ...
30 ...
40 end


Test BASICu-52:

kód:
[MCS BASIC-52 v1.31]
READY
>print mtop

1022    alokátor použiteľnej pamäte XRAM

>print free

510    voľné bajty použiteľnej XRAM

>print xtal

12000000  frekvencia kryštálu (logicky – fixne daná :-))


PRÍLOHA – Ďalšie inštrukcie BASICu-52

BASIC-52 bol vo viacerých verziách – v1.0, v1.1, v1.2, v1.3 a finálna v1.31, preto sa môže použitie niektorých príkazov v závislosti od popisu inštrukcií odlyšovať a nie všetky sú v minimálnom móde behu MCU funkčné.

kód:
COMMAND:  FUNCTION:          USAGE EXAMPLE(S):

RUN    Execute a program          RUN
CONT    CONTinue after a STOP or control-C      CONT
LIST    LIST program to the console device LIST    LIST, LIST 10-50
LIST@    LIST program to user driver (version 1.1 only)    LIST@, LIST@ 50
NEW    erase the program stored in RAM      NEW
NULL    set NULL count after carriage return line feed    NULL, NULL 4
RAM    evoke RAM mode, current program in RAM    RAM
BAUD    set baud rate for line printer port      BAUD 1200
CALL    CALL assembly language program      CALL 9000H
CLEAR    CLEAR variables, interrupts and Strings    CLEAR
CLEARS    CLEAR Stacks          CLEARS
DATA    DATA to be read by READ statement      DATA 100
READ    READ data in DATA statement      READ A
RESTORE  RESTORE READ pointer        RESTORE
DIM    allocate memory for arrayed variables      DIM A(20)
DO    set up loop for WHILE or UNTIL      DO
UNTIL    test DO loop condition (loop if false)      UNTIL A= 10
WHILE    test DO loop condition (loop if true)      WHILE A= B
END    terminate program execution        END
FOR-TO-{STEP}  set up FOR-NEXT loop        FOR A= 1 TO 5
NEXT    test FOR-NEXT loop condition      NEXT A
GOSUB    execute subroutine          GOSUB 1000
RETURN  RETURN from subroutine        RETURN
GOTO    GOTO program line number        GOTO 500
ON GOTO  conditional GOTO          ON A GOTO 5,20
ON GOSUB  conditional GOSUB        ON A GOSUB 2,6
IF-THEN-{ELSE}  conditional test          IF A<B THEN A=0
INPUT    INPUT a string or variable        INPUT A
LET    assign a variable or string a value      LET A= 10 (LET is optional)
ONERR    ONERRor GOTO line number      ONERR 1000
PRINT    PRINT variables, strings or literals      PRINT A (P. is shorthand for PRINT)
PRINT#    PRINT to software serial port        PRINT# A
PH0.    PRINT HEX mode with zero suppression    PH0. A
PH1.    PRINT HEX mode with no zero suppression    PH1. A
PH0.    # PH0. to line printer        PH0.# A
PH1.    # PH1. to line printer        PH1.# A
PRINT@   PRINT to user defined driver (version 1.1 only)    PRINT@ 5*5
PH0.@    PH0. to user defined driver (version 1.1 only)    PH0. @ XBY(5EH)
PH1.@    PH1. to user defined driver (version 1.1 only)    PH1.@ A
PUSH    PUSH expressions on argument stack      PUSH 10, A
POP    POP argument stack to variables      POP A, B, C
PWM    PULSE WIDTH MODULATION      PWM 50, 50, 100
REM    REMark            REM DONE
STOP    break program execution        STOP
STRING    allocate memory for STRlNGs      STRING 50, 10
UI1    evoke User console Input routine      UI1
UI0    evoke BASIC console Input routine      UI0
UO1    evoke User console Output routine      UO1
UO0    evoke BASIC console Output routine      UO0
ST@    store top of stack at user specified location    ST@ 1000H (version 1.1 only) ST@ A
LD@    load top of stack from user specified location    LD@ 1000H(version 1.1 only) LD@ A
+    ADDITION          1 + 1
/    DIVISION          10 / 2
**    EXPONENTATION         2 * * 4
*    MULTIPLICATION        4 * 4
-    SUBTRACTION          8 - 4
.AND.    LOGICAL AND          10.AND.5
.OR.    LOGICAL OR          2.0R.1
.XOR.    LOGICAL EXCLUSIVE OR        3.XOR.2
ABS( )    ABSOLUTE VALUE        ABS(-3)
NOT( )    ONES COMPLEMENT        NOT(0)
INT( )    INTEGER          INT(3.2)
SGN( )    SIGN            SGN( - 5)
SQR( )    SQUARE ROOT          SQR(100)
RND    RANDOM NUMBER        RND
LOG( )    NATURAL LOG          LOG(10)
EXP( )    "e" (2.7182818) TO THE X        EXP(10)
SIN( )    RETURNS THE SINE OF ARGUMENT    SIN(3.14)
COS( )    RETURNS THE COSINE OF ARGUMENT    COS(0)
TAN( )    RETURNS THE TANGENT OF ARGUMENT    TAN(.707)
ATN( )    RETURNS ARCTANGENT OF ARGUMENT    ATN(1)
CBY( )    READ PROGRAM MEMORY      P. CBY(4000)
DBY( )    READ/ASSIGN INTERNAL DATA      DBY(99)=10
XBY( )    READ/ASSIGN EXTERNAL DATA      P. XBY(10)
GET    READ CONSOLE          P. GET
PORT1    READ/ASSIGN l/O PORT 1 (P1)      PORT1=0FFH
PCON    READ/ASSIGN PCON REGISTER      PCON=0
RCAP2    READ/ASSIGN RCAP2        RCAP2=100
T2CON    READ/ASSIGN T2CON REGISTER      P. T2CON
TCON    READ/ASSIGN TCON REGISTER      TCON=10H
TMOD    READ/ASSIGN TMOD REGISTER      P. TMOD
TIMER0    READ/ASSIGN TIMER0        TIMER0=0
TIMER1    READ/ASSIGN TIMER1        P. TIMER1
TIMER2    READ/ASSIGN TIMER2        TIMER2=0FFH
PI    PI -- 3.1415926          PI



mcumodul_c51ac2_v1_03-manual.pdf
 Komentář:
MCUmodul v1.03 (aktualizace 1.03 lite) na AT89C51AC2 - manuál.

Stáhnout
 Soubor:  mcumodul_c51ac2_v1_03-manual.pdf
 Velikost:  149.75 kB
 Staženo:  313 krát


mcumodul_c51ac2_v1_03-basic-52-manual.pdf
 Komentář:
MCUmodul v1.03 (aktualizace 1.03 lite) na AT89C51AC2 - Intel MCS BASIC-52, versions 1 & 1.1, Operating and reference manual

Stáhnout
 Soubor:  mcumodul_c51ac2_v1_03-basic-52-manual.pdf
 Velikost:  776.59 kB
 Staženo:  406 krát


mcumodul_c51ac2_v1_03-program.hex
 Komentář:
MCUmodul v1.03 (aktualizace 1.03 lite) na AT89C51AC2 - firmware (program na nahranie do Atmel 89C51AC2) v HEX.

Stáhnout
 Soubor:  mcumodul_c51ac2_v1_03-program.hex
 Velikost:  56.28 kB
 Staženo:  877 krát


_________________
Rudolf Veselý
Administrátor webu http://www.mcontrollers.com/ a fóra http://forum.mcontrollers.com/.
Pravidla fóra mcontrollers.com.

You can do everything in assembler, but no one wants to program in assembler anymore.
... Yukihiro Matsumoto

Rudolf Vesely on LinkedIn
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
administrator
hlavní administrátor
hlavní administrátor


Založen: 2.1.2006
Příspěvky: 758
Bydliště: Ostrava

PříspěvekZaslal: 04 květen 2011, 15:00    Předmět: Projekt MCUmodul AT89C51AC2 v1.03b ke stažení Citovat

Hannibal byl tak laskav a zaslal mi aktualizaci MCUmodulu 1.03.

MCUmodul-AC2 (89C51AC2) v1.03b (update 1.03b lite)

Dostal som od Olega Kowalczuka ďalšie "update" MCUmodulu (v1.03B), zmena spočíva iba v upravení prog.editoru tak, že teraz obsahuje fixných 128 riadkov (adr.00-7Fh) miesto 1024 bajtov pre programové kroky - tj. každý riadok má 8 byte. Zároveň bolo skrátené zadávanie adresy na 1BYTE(00-7Fh), čo zjednodušuje písanie a značne uľahčuje orientáciu, čomu dopomáhajú hlavne upravené "insert" a "delete" v menu editoru programu. Limitované sú iba inštrukcie TTY_text a DISPtext, ktoré umožňujú vložiť max.5(4) znaky textu. Pre dlhší text sa musí napísať viacero inštrukcií po sebe.

Nemal som čas to detailne testovať, autor prosí čitateľov fóra, aby v prípade postavenia konštrukcie nahlásili možné chyby súvisiace s problémami pri vkladaní inštrukcií, listovaní programu, používaní jednotlivých položiek menu, atd. Narýchlo som len urobil malú ukážku, pri ktorej mi MCUmodul šlapal bezchybne a na žiadny problém som nenarazil - viz. výpis z terminálu TeraTermPRO:

kód:
Yasmine Anastassiou'2003

======================
= MICROKIT-52 FAMILY =
======================
<1> MCUmodul-AC2 v1.03
<2> MCS BASIC-52 v1.31
======================

default:<1>, waiting....1
[MCUmodul-AC2 v1.03]
MCU  1:>h

<p> log ON/OFF
<w> change/remove password
<i> actual status of RAM MCU
<s> prog.editor

MCU  1:>sequ[ok]
00:h

<enter> edit
<l>ist program
<a>dres
<c>ls adr->adr
<i>ns free step
<d>el next step
<q>uit
<s>ave
<r>ead
<t>able A/D

00:
00>TTY_text Nasta^
01>TTY_text v cas^
02>TTY_text :^
03>ediDbyte 12  0=>23
04>ediDbyte 11  0=>59
05>useflash :0EB9
06>call_adr :7C
07>jump_adr :06
08>
08:adr_7C
7C:
7C>loadbyte 1B 0D
7D>useflash :0EBF
7E>useflash :0EF5
7F><return>
00>
00:list
00:TTY_text Nasta^
01:TTY_text v cas^
02:TTY_text :^
03:ediDbyte [time hrs]12 0=>23
04:ediDbyte [time min]11 0=>59
05:useflash :sendCRLF
06:call_adr :7C
07:jump_adr :06
7C:loadbyte [USEFdata]1B data 0D
7D:useflash :send TTY
7E:useflash :sendCLCK
7F:<return>
[ok]
00:quit[ok]
MCU  1:>Nastav cas:
MCU  2:>23
MCU  1:>
MCU  2:>59
MCU  1:>
23:59:20      (poznamka:cas bezi v riadku)



mcumodul_c51ac2_v1_03b-program.hex
 Komentář:
MCUmodul v1.03b (aktualizace 1.03b lite) na AT89C51AC2 - firmware (program na nahranie do Atmel 89C51AC2) v HEX.

Stáhnout
 Soubor:  mcumodul_c51ac2_v1_03b-program.hex
 Velikost:  56.85 kB
 Staženo:  848 krát


_________________
Rudolf Veselý
Administrátor webu http://www.mcontrollers.com/ a fóra http://forum.mcontrollers.com/.
Pravidla fóra mcontrollers.com.

You can do everything in assembler, but no one wants to program in assembler anymore.
... Yukihiro Matsumoto

Rudolf Vesely on LinkedIn
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> 8051 / 8052 Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)