Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: putchar
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
sergey sva
Добрый день.

Нужно выводить в последовательный порт данные. компил. keil проблема в том что при вызове функции putchar, программа сразу зависает. пример взял из хелпа. может кто сможет помочь.

Код
for (i = 0x20; i < 0x7F; i++)
{
putchar (i);
}
Maximm
А для какого МК пишете?
Serial.c правильно написан?
sergey sva
Цитата(Maximm @ Mar 8 2008, 16:21) *
А для какого МК пишете?
Serial.c правильно написан?


для AT89C51ED2 . если не ошибаюсь Serial.c для ОС RTX, может конечно ошибаюсь.
Систему не использую.
Maximm
Цитата(sergey sva @ Mar 8 2008, 16:03) *
Код
for (i = 0x20; i < 0x7F; i++)
{
putchar (i);
}


Это и весь текст программы?

Посмотрите пример "HELLO"? там есть такие строки:
Код
/*------------------------------------------------
Setup the serial port for 1200 baud at 16MHz.
------------------------------------------------*/
#ifndef MONITOR51
    SCON  = 0x50;                  /* SCON: mode 1, 8-bit UART, enable rcvr      */
    TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
    TH1   = 221;                /* TH1:  reload value for 1200 baud @ 16MHz   */
    TR1   = 1;                  /* TR1:  timer 1 run                          */
    TI    = 1;                  /* TI:   set TI to send first char of UART    */
#endif


Думаю смысл их понятен.
sergey sva
Цитата(Maximm @ Mar 8 2008, 17:25) *
Это и весь текст программы?

Посмотрите пример "HELLO"? там есть такие строки:
Код
/*------------------------------------------------
Setup the serial port for 1200 baud at 16MHz.
------------------------------------------------*/
#ifndef MONITOR51
    SCON  = 0x50;                  /* SCON: mode 1, 8-bit UART, enable rcvr      */
    TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
    TH1   = 221;                /* TH1:  reload value for 1200 baud @ 16MHz   */
    TR1   = 1;                  /* TR1:  timer 1 run                          */
    TI    = 1;                  /* TI:   set TI to send first char of UART    */
#endif


Думаю смысл их понятен.

этот код есть. у меня он записан в функцию rs232init();
вызываю функцию в самом начале программы.
проблемка в том что когда пытаюсь использовать библиотечные функции Putchar Printf програмка зависает. если так
Код
for (i = 0x20; i < 0x7F; i++)
{
SBUF = i;
while(TI != 1){}
TI = 0;
}

то все ок получаю весь набор символов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.