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

 
 
> PCW нестандартное использоваие RS232, очень надо вкл/выкл сделать аппаратного UART
Eddy71
сообщение May 28 2009, 10:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 224
Регистрация: 23-11-08
Из: Украина, Луганск
Пользователь №: 41 879



Собственно весь вопрос в описании темы. Очень надо вкл/выкл сделать аппаратного UART. Просто глупейшая ситуация - пытаюсь отключить аппаратный UART в PIC16F887 но постоянно получаю не то, что хочется. Что-то мне не верится, что в компиляторе не предусмотрели функции при исполнении программы "на лету" включить или выключить модуль EUSART. Я уже через указатели пытался добраться до бита RCSTA,SPEN. Я конечно изгольнулся, вставил
Код
#asm
bcf 0x18,7
#endasm

Но как-то не красиво получается...


--------------------
«Чтобы что-то изобрести, вам потребуется хорошее воображение и куча мусора» /Томас Эдисон/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение May 28 2009, 14:41
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Компилятор-то какой? Это имеет значение вот почему: как описаны биты в SFR в хедере на проц - дефайнами или битовыми полями?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 28 2009, 19:54
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_Pasha @ May 28 2009, 17:41) *
Компилятор-то какой?
Компилятор указан в теме. До знакомства с ним я считал CodeVision эталоном "языка, похожего на С". Но это - просто шедевр. Как вам такое - в нем по умолчанию отключена чувствительность к регистру. То есть что printf, что PRINTF - ему все едино. Есть директива (которую надо вставить в исходник!), которая включает чувствительность. И тут нас ожидает сюрприз - в документации его встроенные функции приведены совсем не в том регистре, в котором он их понимает. И если бы они были только в нижнем или в верхнем... Какая-то дикая смесь из расширений от С++ (перегрузка функций) и отклонений от стандарта С.
Цитата(_Pasha @ May 28 2009, 17:41) *
Это имеет значение вот почему: как описаны биты в SFR в хедере на проц - дефайнами или битовыми полями?
Они там вообще не описаны! Там есть встроенные функции на все, как кажется авторам, случаи жизни. А вот если хочешь нормальный доступ к регистру - пиши что-то вроде
Код
#BYTE RCSTA     = 0x18
#define  SPEN 7
void test()
{
     RCSTA &= ~(1<<SPEN);
}

Для Eddy71 - это все описано в документации. Не поленитесь, прочтите. Там вас ждет еще много сюрпризов.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 02:54
Рейтинг@Mail.ru


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