getchar()

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
teo
Příspěvky: 51
Registrován: 26 říj 2008, 00:00
Kontaktovat uživatele:

getchar()

#1 Příspěvek 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?
Uživatelský avatar
Bernard
Příspěvky: 3654
Registrován: 27 kvě 2005, 00:00

#2 Příspěvek 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. :?:
Uživatelský avatar
DRAKE
Příspěvky: 276
Registrován: 05 zář 2005, 00:00

#3 Příspěvek 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á.
Ježíš na kříži zaplatil za naše hříchy a tím nás osvobodil od věčné smrti. Platí i pro bastliře :-).
Uživatelský avatar
teo
Příspěvky: 51
Registrován: 26 říj 2008, 00:00
Kontaktovat uživatele:

#4 Příspěvek 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
Uživatelský avatar
Bernard
Příspěvky: 3654
Registrován: 27 kvě 2005, 00:00

#5 Příspěvek od Bernard »

Když ten kousek pustím v Keilu a debuggeru, funguje to jakoby normálně. Jestli ti to nějak pomůže. :(
Uživatelský avatar
teo
Příspěvky: 51
Registrován: 26 říj 2008, 00:00
Kontaktovat uživatele:

#6 Příspěvek 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ů.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“