Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

AT89S52, софтовый UART(язык С ) , голову сломал уже (+)

Отправлено Misha190E (10.3.11.67,217.151.131.16) 09 апреля 2010, г. 14:12


День добрый.
написан софтовый уарт (нужно 2 UART, поэтому штатного не хватает), но глючит.
Код простейший, запуск таймера на нужной частоте, и обрабочтик (привожу кусок по отправке байта)

/*---------------------------------------------------------
Timer 0 Overflow Interrupt
---------------------------------------------------------*/
#pragma disable
void T0_ISR (void) interrupt 1
{

if (SW_TX_STATE == 0x01) {
if (SUTXST == 0) -- номер бита, 0 - стартовый
SW_TX = 0; -- ножка TX
else
{
SW_TX = (TDR & 0x01); -- ножка TX
TDR >>= 1; -- TDR - переменная которую передаем
TDR |= 0x80;
}
SUTXST++;
if (SUTXST >= 10) {
SUTXST = 0;
SW_TX_STATE = 0xFF; // Флаг, передача закончена
}
}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 97:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru