Stránka 1 z 1

getchar()

Napsal: 03 kvě 2009, 20:50
od teo
chci použít ve svém program příkaz

Kód: Vybrat vše

proměnná=getchar();

a za boha mě to nefachá a stále dává chybu

Kód: Vybrat vše

?ASlink-Warning-Undefined Global '_getchar' referenced by module '2_3'

kde 2_3 je název souboru
knihovnu stdio.h používám. překladač SDCC.
nevíte někdo v čem je chybka?

Napsal: 03 kvě 2009, 22:14
od Bernard
Používám Keil, takže se jen domnívám, že při linkování je ještě třeba zahrnout nějaký *.obj soubor, ve kterém jsou IO rutiny specifické pro použitý hardwér. :?:

Napsal: 03 kvě 2009, 23:03
od DRAKE
A k čemu by to mělo bejt - USART, SPI, I2C nebo co, ten překladač neví, k čemu to chceš použít. Musíš asi nejprve nadefinovat ten stream, u AVR je to tak, že musíš nadefinovat nějaký ten FILE a k tomu připojit nějaký metody. Už si to přesně nepamatuju, ale tak nějak to bylo. Kouokni se nějakejch materiálů jak se to v tvém případě dělá.

Napsal: 04 kvě 2009, 15:50
od teo
no mám to připojené přes UART a ft232RL do pc.Nainstaloval jsem keil a v tom to přeložit jde.
Ale vyvstal další problém.mám napsáno malej kus programu:

Kód: Vybrat vše

#include <stdio.h>
#include <reg51.h>
#include <string.h>


int main(void)
{
    char c;

    TMOD = 0x20;      // CT1 jako 8-bitovy citac - nutne
    TH1 = 0xF3;      // pro rychlost 2400/4800 Bd pri 12MHz krystalu
    TR1 = 1;      // start citace
    SCON = 0x52;      // standardni nastaveni serioveho kanalu
    PCON |= 0x80;      // SMOD=1 => zdvojeni seriove rychlosti (na 4800)



    puts("\nStart\n");   // uvodni "textik"

    while (1)
    {
        c = getchar();   // precti znak ze ser. linky
       
        putchar(c);   // posli zpet po ser. lince do terminalu
    }
}

a pak zapnu hyperterminál,nastavím připojení,dám připojit a nic to nedělá!
přitom UART používám přes flip a jede to ok

Napsal: 05 kvě 2009, 19:48
od Bernard
Když ten kousek pustím v Keilu a debuggeru, funguje to jakoby normálně. Jestli ti to nějak pomůže. :(

Napsal: 05 kvě 2009, 22:16
od teo
už je vše OK. chyba byla v tom že vista nemá hyperterminála ten co sem si dodatečně nainstaloval fungoval nějak divně. A pak jsem ještě musel v nastavení FTDI v MPROGu nastavit invertování signálů.