V
vinash
Guest
Ahoj,
Snažil jsem se rozhraní ADC0804 a HY62256 (S-RAM), aby AT89C52 mikrokontroléru.Celý ten nápad je udělat A / D konverzí pomocí ADC 0804 a než ukládání dat vstup do SRAM.Kód, že jsem si vyvinul se níže odkaz.Nezdá se do práce.(
1.Za prvé, i když nemám dát vstupní signál ADC, LED se zapne
2.LED zapne a než off (myslím o tom, že S-RAM dosáhl požadovanou adresu)
3.Na displeji vždy ukazuje 0, i když je vstupní signál v ADC.
)
# Include <reg52.h>
neplatné zpoždění (void);
unsigned char * data xdata addr = 0x0000, / / deklaruje ukazatel zírala z externí paměti adresy 0x0000
sbit WRITE = P3 ^ 0; / / definování WR a intr kolíky
sbit intr = P3 ^ 2; / / pin intr je napojen na pin do, takže pokud to jde nízký, že příčinou přerušení
sbit ČTĚTE = P3 ^ 3; / / Toto je pin read (pro ADC)
sbit LED = P3 ^ 1;
sbit BLANK = P3 ^ 5; / / I am using HP 5082 do 7340 (displej) a na displeji se prázdná místa, kdy tento pin jde vysoká
unsigned int advalue, hodnota, j, konvertoval, k;
scanled (); / / pro zobrazení hodnoty ADC na HP 5082 do 7340 zobrazenívoid main (void) (while (1) (
WRITE = 0; / / AD konverze;
WRITE = 1;
while (intr == 1);
zpoždění ();
BLANK = 1;
P1 = 0xFF; / / prohlašující P1 jako vstupní data po A / D konverzí
ČTĚTE = 0;
advalue = P1; / / přiřazení vstupních bitů (A / D bitů) na advalue
ČTĚTE = 1;
if (addr <= 0x0014) / * mít na uložení 8 bit hodnoty získané z ADC na adresu od 0x0000 do
S-RAM ukládá data do adresy dosáhne 0x0014 * /
(LED = 1; / / ověřit, zda existují nějaké konverzi (podle připínání LED)
* Addr = advalue, / / pro uložení hodnoty do adresy
LED = 0;
scanled (); / / pro zobrazení vstupní signál hodnoty na ADC
zpoždění ();
) / / Ověřit, zda existují nějaké konverze
else (
LED = 1;
)
zpoždění ()
)scanled ()
(
unsigned int a [10] = (0xE0, 0xF0, 0xE1, 0xF1, 0xE2, 0xF2, 0xE3, 0xF3, 0xE4, 0xF4); / / Nastavení pro zobrazení 0 až 9
P1 = 0x00, / / prohlásit P1 jako výstup
BLANK = 0; / / Prázdný je tak nízké, že na displeji zobrazuje počet HP
převedena = (* addr) * (5 / 256); / / Convert hodnota ADC získal tak, že vstupní signál je mezi 0-5V;
P1 = [převeden% 10]; / / zobrazení hodnoty na Port1;pro (j = 0; j <20000; j );
)
neplatné zpoždění (void) / / Delay funkce pomocí Timer 0 pro 50ms.
(
TMOD & = 0xF0;
TMOD | = 0x01;
ET0 = 0;
TH0 = 0x3C;
TL0 = 0xb0;
TF0 = 0;
TR0 = 1;
while (TF0 == 0);
TR0 = 0;
)Mohl by někdo prosím, řekněte mi, jestli tam je něco špatně s mým kódem.Děkuju.
Snažil jsem se rozhraní ADC0804 a HY62256 (S-RAM), aby AT89C52 mikrokontroléru.Celý ten nápad je udělat A / D konverzí pomocí ADC 0804 a než ukládání dat vstup do SRAM.Kód, že jsem si vyvinul se níže odkaz.Nezdá se do práce.(
1.Za prvé, i když nemám dát vstupní signál ADC, LED se zapne
2.LED zapne a než off (myslím o tom, že S-RAM dosáhl požadovanou adresu)
3.Na displeji vždy ukazuje 0, i když je vstupní signál v ADC.
)
# Include <reg52.h>
neplatné zpoždění (void);
unsigned char * data xdata addr = 0x0000, / / deklaruje ukazatel zírala z externí paměti adresy 0x0000
sbit WRITE = P3 ^ 0; / / definování WR a intr kolíky
sbit intr = P3 ^ 2; / / pin intr je napojen na pin do, takže pokud to jde nízký, že příčinou přerušení
sbit ČTĚTE = P3 ^ 3; / / Toto je pin read (pro ADC)
sbit LED = P3 ^ 1;
sbit BLANK = P3 ^ 5; / / I am using HP 5082 do 7340 (displej) a na displeji se prázdná místa, kdy tento pin jde vysoká
unsigned int advalue, hodnota, j, konvertoval, k;
scanled (); / / pro zobrazení hodnoty ADC na HP 5082 do 7340 zobrazenívoid main (void) (while (1) (
WRITE = 0; / / AD konverze;
WRITE = 1;
while (intr == 1);
zpoždění ();
BLANK = 1;
P1 = 0xFF; / / prohlašující P1 jako vstupní data po A / D konverzí
ČTĚTE = 0;
advalue = P1; / / přiřazení vstupních bitů (A / D bitů) na advalue
ČTĚTE = 1;
if (addr <= 0x0014) / * mít na uložení 8 bit hodnoty získané z ADC na adresu od 0x0000 do
S-RAM ukládá data do adresy dosáhne 0x0014 * /
(LED = 1; / / ověřit, zda existují nějaké konverzi (podle připínání LED)
* Addr = advalue, / / pro uložení hodnoty do adresy
LED = 0;
scanled (); / / pro zobrazení vstupní signál hodnoty na ADC
zpoždění ();
) / / Ověřit, zda existují nějaké konverze
else (
LED = 1;
)
zpoždění ()
)scanled ()
(
unsigned int a [10] = (0xE0, 0xF0, 0xE1, 0xF1, 0xE2, 0xF2, 0xE3, 0xF3, 0xE4, 0xF4); / / Nastavení pro zobrazení 0 až 9
P1 = 0x00, / / prohlásit P1 jako výstup
BLANK = 0; / / Prázdný je tak nízké, že na displeji zobrazuje počet HP
převedena = (* addr) * (5 / 256); / / Convert hodnota ADC získal tak, že vstupní signál je mezi 0-5V;
P1 = [převeden% 10]; / / zobrazení hodnoty na Port1;pro (j = 0; j <20000; j );
)
neplatné zpoždění (void) / / Delay funkce pomocí Timer 0 pro 50ms.
(
TMOD & = 0xF0;
TMOD | = 0x01;
ET0 = 0;
TH0 = 0x3C;
TL0 = 0xb0;
TF0 = 0;
TR0 = 1;
while (TF0 == 0);
TR0 = 0;
)Mohl by někdo prosím, řekněte mi, jestli tam je něco špatně s mým kódem.Děkuju.