реклама на сайте
подробности

 
 
> putchar
sergey sva
сообщение Mar 8 2008, 13:03
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Добрый день.

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

Код
for (i = 0x20; i < 0x7F; i++)
{
putchar (i);
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Maximm
сообщение Mar 8 2008, 13:21
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 7-10-07
Из: Санкт-Петербург
Пользователь №: 31 137



А для какого МК пишете?
Serial.c правильно написан?


--------------------
Если работает через раз - значит не работает!
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Mar 8 2008, 13:56
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата(Maximm @ Mar 8 2008, 16:21) *
А для какого МК пишете?
Serial.c правильно написан?


для AT89C51ED2 . если не ошибаюсь Serial.c для ОС RTX, может конечно ошибаюсь.
Систему не использую.
Go to the top of the page
 
+Quote Post
Maximm
сообщение Mar 8 2008, 14:25
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 7-10-07
Из: Санкт-Петербург
Пользователь №: 31 137



Цитата(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


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


--------------------
Если работает через раз - значит не работает!
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Mar 8 2008, 15:03
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата(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;
}

то все ок получаю весь набор символов.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 01:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016