89C51 a vše okolo něj

Dobrý den, mám na Vás trochu více otázek.

  1. když mám** prázdný** miroprocesor 89C51 a přivedu na něj napájení(klasicky pin 40 +5V pin 20 0V) co by se mělo stát? ve
    škole nám říkaly že by se na vsech bránách mela nastavit +5V ale není tomu tak. nekde se nastavilo 0.5V a nekde 2.5V
    uplně náhodně.

  2. mikroprocesor 89C51 popřípadě 89C2051 se musí “zapínat”? slysel jsem neco o tom že se na Reset privede pulz +5V, je to pravda?

  3. V čem se liší 89C51 od 89C2051? liší se jenom v počtu pinů a velikosti pameti nebo i v něčem jiným?

  4. naprogramoval jsem ve škole 89C51 timto programem:

    mov R0,#0
    mov R1,#0
    mov R2,#6
    clr P0.0
    setb P0.1
    clr P0.2
    mov P1,#170
    smycka:
    cpl P0.0
    cpl P0.1
    cpl P0.2
    mov A,P1
    cpl A
    mov P1,A
    pozastav:
    djnz R0,pozastav
    mov R0,#0
    djnz R1,pozastav
    mov R1,#0
    djnz R2,pozastav
    mov R2,#6

    mov A,P2
    cjne A,#170,smycka
    mov A,P2
    cjne A,#170,smycka
    end;

LED na pinu P0.0-2 a P1 by mely zhruba po vteřině blikat. ale když pripojím napájení a kristal -mám 9.2MHZ a k němu
pripojený kondenzátory 33pF na zem. led blikají asi rychlostí 8kHz velice náhodně. Po ipulzu za reset led zmateně blikají
0.5-2sekundy potom se ustálý ve velice náhodném sledu s náhodnými stavy 0-5V. K čemu tam jsou ty kondenzátory? když je
vyndám tak to bliká stejně zmateně jako předtím. Má tam být 33pF?

  1. jde na mikroprocesor přivádět pulzy treba po vteřine a tak lépe kontrolovat co dělá?

  2. **Jakým způsobem se maže 89C51? **

  3. Jakým způsobem se programuje 89C51? na piny P2.6, P2.7, P3.6, 3.7 se privede 1. Bajt a zároveň se nastaví adresa na
    kterou se chce zapsat(ale to nevím kde) a jeste se nastaví nejakej pin pro zápis a to se zapíše do pameti? sebo se to děje
    jinak? a k čemu je tam pri programování krystal?
    Lze ho naprogramovat teoreticky na kontaktním poli?

8) existuje něco jako **echo **mikroprocesoru? privedeme pulz a on se ozve co je to za typ?

  1. lze mikroprocesor naprogramovat “ručně-manuálně”?

  2. lze zapsat 5 bajtů a po chvíly daších 5? popřípadě po odpojení napájení?

Děkuji Vám za odpovědi, jestli mi odpovíte jste pro mě “bůh”.

:arrow_right: administrator: přesunuto ze sekce “Programátory”

Ahoj

Tolik otázek jsem tu v jediném tématu ještě neviděl :slight_smile:. V úvodu bych měl na tebe jednu otázku já. Níže píšeš, že ti něco říkali ve škole. Kde chodíš do školy?

Předem říkám, že je to opravdu dávno, kdy jsem naposled dělal něco s Intel / Atmel 51. Navíc k tomuto mikropočítači nemám příliš dobrý vztah, takže předem prosím každého, kdo zde uvidí nějakou chybu, opravte mě prosím.

Pokud zapneš mikropočítač, tak by veškeré porty měli být ve vstupním režimu. U typu portů, jaké má tvoje 89C51, to znamená +5V. Máš ale pravdu, že to změříš náhodně. je to kombinace hned několika faktorů. V podstatě bys to neměl měřit, ale spíš zkoušet logickou sondou. Log. sondou dostaneš správné výsledky…

Na reset by měla být přivedena log. 1 (+5V). Naopak log. 0 mikropočítač resetuješ. Takto je to u všech mikropočítačů, integrovaných obvodů a třeba i u PC. Jediný rozdíl je, že ne všude musíš přivádět log. 1.

Přesně tak. S počtem pinů ale souvisí i jiná věc. Tou věcí je množství periferních obvodů, které využívají některé piny. 2051 má tedy i méně těchto obvodů.

Kondenzátory jsou ochrana proti překmitání krystalu. Určitě je tam dávej. Kapacita kondenzátoru se odvíjí od typu krystalu. 33pF je pro 9,2 MHz správná hodnota.

Je už to dlouho, co jsem naposled viděl program pro Atmel, ale program vypadá v pořádku. Jen nevím proč to porovnávání na konci. Rychlost běhu jsem nepočítal, snad to máš správně.

Ano, je možné mít vlastní oscilátor.

Pomocí programátoru. Určitě by se dal postavit specifický obvod jen pro mazání, ale to by bylo zbytečně složité. Postavit si programátor je nejjednodušší.

Spousta lidí programuje na kontaktním poli.
Zde si můžeš stáhnout datasheet. Máš to tam napsané naprosto přesně. Ale myslím, že to píšeš správně. Krystal při programování nepotřebuješ.

Ano, lepší programátory jsou schopny rozeznat typ.

Lze, pokud jsi masochista :slight_smile:.

Lze, ale s napájením. Bez napájení to nepůjde.

Trošku to poupravím:

k bodu 1)
pravděpodobně ani logickou sondou bys nic hezkýho nenaměřil, páč když připojíš napětí a procesou nezresetuješ, začne vykonávat program který má v paměti. Problém je v tom, že registr PC (ukazatel instrukce) je naplněn náhodnou hodnotou, takže uP vykonává nesmyslnej program, takže je možný, že neustále neguje např jeden port a potom na něm vzniká pulzně modulovanej signál (PWM) a změříš náhodně nesmysli.

k bodu 2)
8051 a podobné se opravdu resetujou log 1 tzn. 5V, v klidovým stavu by měl bejt reset v log 0

k bodu 4)
A máš správně zapojený EA??? Nesnaží se ti uP číst z vnější paměti, která tam není??? Program je pravděpodobně v pořádku, ale je tam spusta nesmyslnejch konstrukcí (namátkoku : když projdeš za konstrukci :

pozastav:
djnz r0,pozastav

tak je v r0 nakonec nula, takže je zcela zbytečné ho opět nulovat.

k bodu 7)
v dnešní době bych stejně už procesor 80C51 nekoupíš, takže pokud nemáš doma velký zásoby, tak už koupíš jenom 80S51 a ten se programuje i sériově a na to je spousta skvělech schémat všude možně.

k bodu 9)
ručně to určitě jde a pokud seš masochista a budeš to dělat, dej vědět, jak dlouho to trvalo, fakt by mě to zajímalo :slight_smile:

Děkuji za opravu :smiley:. Myslím, že spousta lidí by velmi ocenila, kdyby jsi psal častěji :slight_smile:.