Софтовый СОМ порт для PIC16F84
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Софтовый СОМ порт для PIC16F84
По поводу чтения порта и сброса RBIF. Код работает лишь потому, что после чтения порта и прохода по всему коду, он сразу-же заного заходит в обработчик и попадает на RBIF=0; Но это, естественно, не правильно. Как уже сказал Марк, нужно делать наоборот.
Да и вообще, очень много лишнего в обработчике, всё как-то запутано... Можно половину поубирать, добавив ещё одну проверку (RBIE) в пару с RBIF.
Да и вообще, очень много лишнего в обработчике, всё как-то запутано... Можно половину поубирать, добавив ещё одну проверку (RBIE) в пару с RBIF.
- Dima Lerich
- Открыл глаза
- Сообщения: 44
- Зарегистрирован: Пт июл 19, 2013 10:19:19
- Откуда: Владивосток
Re: Софтовый СОМ порт для PIC16F84
Как-то не считается. Что сделано мною в 10 лет, можете улучшать в свои 50. И Марк и кто хочет, может проявить себя на полную, дорабатывая ЧУЖОЕ. Это кстати вполне естественно, потому как СВОЕ сделать не получается. Ничего особенного, все нормально. Просто мне эта тема уже не интересна, что нужно было сделать, то и сделал в свое время. У меня много всяких таких вот решений, но они рождаются тогда, когда надо. И работают тогда, когда другие только МОГУТ улучшить, но вот проблема, не знают ЧТО именно надо улучшать. Я не спорю, естественно можно улучшать что угодно, в зависимости от задач. Но Вы же не знаете, для каких задач был написан код, значит не можете правильно и оценить сегодня, полтора десятилетия спустя. А я вот так думаю, что лучше делать (читай СОЗДАВАТЬ), чем бесплодно критиковать (НЕ КОНСТРУКТИВНО).
Если Вам это не интересно, можете не улучшать, мне от этого не жарко и не холодно, просто никак. А вот тем, кому надо, снимут код и будут им пользоваться, потому что код рабочий и окажется полезен для конкретной задачи. И им не важно, можно ли его еще улучшить или нет. Так уж человек устроен. А код обсуждать - это как хотите. Вам по-любому поздно, код давно свое дело сделал. Это жесткий факт.
Если Вам это не интересно, можете не улучшать, мне от этого не жарко и не холодно, просто никак. А вот тем, кому надо, снимут код и будут им пользоваться, потому что код рабочий и окажется полезен для конкретной задачи. И им не важно, можно ли его еще улучшить или нет. Так уж человек устроен. А код обсуждать - это как хотите. Вам по-любому поздно, код давно свое дело сделал. Это жесткий факт.
Иногда получается спаять пару проводов...
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Софтовый СОМ порт для PIC16F84
Выложите код для хайтека - не хочется засорять свой ПК микроси. Под какую версию Хайтеч разрабатывалось? Еще более поражен - у меня чтоб хоть что-то начало получаться на си ушло около года. Со скольких лет вы начали изучать си? ПК в 98 были достаточно дороги, у вас был, я так понимаю дома был ПК, я в то время только мог пользоваться на работе, дома был zx spectrum.
- Dima Lerich
- Открыл глаза
- Сообщения: 44
- Зарегистрирован: Пт июл 19, 2013 10:19:19
- Откуда: Владивосток
Re: Софтовый СОМ порт для PIC16F84
Давайте я отправлю Вам код в личку. Ну если интересно, могу дать некоторые пояснения.
Дело в том, что с тех пор прошло много лет, мой хайтек не работает корректно, не знаю почему и некогда с ним разбираться. Тем более что я перешел полностью на МикроСи. Там сервис лучше, хотя код пишет чуть менее компактно. Не знаю, точен ли код, прошло столько лет(!). А проверить сейчас не могу, настраивать старый софт - дело такое... Тем более под досом. Но код на хайтеке получается на десяток байт короче. Ну может это и важно.
Насчет ПК- тогда у нас дома было три (!) писишника, при этом один ноутбук. Ну естественно я играл, но кроме того, была документация по ПС и МК на русском, и мне казалось что я программирую... Ну почти как на большом ПК, работая с программатором. Вообще тогда была брошюрка кажется от ДОДЕКИ по ПИКам, в которой было все четко расписано и показано. Зато опыт, приобретенный на пиках, существенно помог в дальнейшем. Есть интересная мысль в одной старой книжке: ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА ОДНОКРИСТАЛЬНЫХ МИКРОКОНТРОЛЛЕРАХ (В.В.Сташин), изложенная на стр. 17, о программирующем профессионале. Когда я недавно ее увидел, многое прояснилось. Навыки программирования позволяют мне легко обходиться без программистов, оставаясь специалистом в своей области. Советую почитать.
Дело в том, что с тех пор прошло много лет, мой хайтек не работает корректно, не знаю почему и некогда с ним разбираться. Тем более что я перешел полностью на МикроСи. Там сервис лучше, хотя код пишет чуть менее компактно. Не знаю, точен ли код, прошло столько лет(!). А проверить сейчас не могу, настраивать старый софт - дело такое... Тем более под досом. Но код на хайтеке получается на десяток байт короче. Ну может это и важно.
Насчет ПК- тогда у нас дома было три (!) писишника, при этом один ноутбук. Ну естественно я играл, но кроме того, была документация по ПС и МК на русском, и мне казалось что я программирую... Ну почти как на большом ПК, работая с программатором. Вообще тогда была брошюрка кажется от ДОДЕКИ по ПИКам, в которой было все четко расписано и показано. Зато опыт, приобретенный на пиках, существенно помог в дальнейшем. Есть интересная мысль в одной старой книжке: ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА ОДНОКРИСТАЛЬНЫХ МИКРОКОНТРОЛЛЕРАХ (В.В.Сташин), изложенная на стр. 17, о программирующем профессионале. Когда я недавно ее увидел, многое прояснилось. Навыки программирования позволяют мне легко обходиться без программистов, оставаясь специалистом в своей области. Советую почитать.
Иногда получается спаять пару проводов...
- Dima Lerich
- Открыл глаза
- Сообщения: 44
- Зарегистрирован: Пт июл 19, 2013 10:19:19
- Откуда: Владивосток
Re: Софтовый СОМ порт для PIC16F84
Код отправил. Смотрите, должен работать под хайтек. Кстати на микроси работать легче, и если Вы не решили себя посвятить ДОСу, то смело можно переходить даже на микро си про. Ведь главное конечно что писать, а не на чем. Но на некотором софте просто удобнее.
Иногда получается спаять пару проводов...
- Dima Lerich
- Открыл глаза
- Сообщения: 44
- Зарегистрирован: Пт июл 19, 2013 10:19:19
- Откуда: Владивосток
Re: Софтовый СОМ порт для PIC16F84
Кстати еще одна деталь. Отмечу сразу, что со мной занимались, а ребенок я был один в семье, поэтому любые прихоти исполнялись. Программированием со мной занимался отдельно механик, математик по призванию, программист по природе. Сейчас ему уже под 60, но очень толковый кадр. Он и научил всему этому реместу. Кстати, тогда еще были БК-ашки в ходу, а ПК были редкостью, но зато с железом работало больше народу и делало массу интересных вещей. Сейчас как-то больше с софтом работают, а раньше с "потрохами обшались".
Иногда получается спаять пару проводов...
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Софтовый СОМ порт для PIC16F84
спасибо - проверил на xc8 + proteus удивительно, но работает
немного переделал:

немного переделал:
Спойлер
Код: Выделить всё
#include <pic.h>
#include <sys.h>
#define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))
// Driver for COM_PORT_PIC16F84A
// CopyRight (C) Dima Lerich, Vladivostok
#define sDelayTimer 169 // 9,618 Hz for 4 MHz
#define sTimer2 210 // 15000 Hz for 4 MHz
// PORT A
static bit TxData @ PORTBIT(PORTA, 1);
// PORT B
static bit RxData @ PORTBIT(PORTB, 7);
// RAM DATA
static bit TxEnabled=0, RxEnabled=0, fDone=0;
static bit RxBit, RxBitOld;
unsigned char TxByte, RxByte;
char numRxBit, numTxBit;
char PortB,tmp;
void interrupt timer(void)
{
GIE = 0;
if(T0IF)
{
TMR0 = sDelayTimer;
T0IF = 0;
if(TxEnabled)
{
if(numTxBit==0)
{
numTxBit=1;
TxData = 0;
}
else if(numTxBit>8)
{
TxData = 1;
numTxBit=0;
TxEnabled=0;
}
else
{
if(TxByte&1)
TxData = 1;
else
TxData = 0;
TxByte >>= 1;
numTxBit++;
}
}
if(RxEnabled)
{
if(numRxBit>8)
{
RxEnabled=0;
PortB=PORTB;
RBIF=0;
fDone=1;
}
else if(numRxBit<8)
{
RxByte>>=1;
if(RxData==1) RxByte+=128;
}
numRxBit++;
}
}
if(RBIF)
{
RBIF=0;
PortB=PORTB;
if(RxData==1)
RxBit=1;
else
RxBit=0;
if(!RxEnabled && numRxBit==0)
{
if(!RxBit && RxBitOld)
{
fDone=0;
RxByte=0;
numRxBit=0;
RxEnabled=1;
RBIE=0;
T0IF = 0;
TMR0 = sTimer2;
}
}
RxBitOld=RxBit;
}
if(!TxEnabled)
{
TxData = 1;
}
GIE = 1;
}
InitPic()
{
OPTION_REG = 0;
fDone=0;
TxData = 1;
numTxBit=0;
numRxBit=0;
RxEnabled=0;
TMR0 = sDelayTimer;
numRxBit=0;
TxEnabled=0;
RxEnabled=0;
T0SE=1;
T0CS=0;
PSA=1;
RBIE=0;
TRISB = 192;
TRISA = 1;
T0IE = 1;
GIE = 1;
}
void InitRx()
{
RxByte=0;
fDone=0;
numRxBit=0;
RxEnabled=0;
PortB=PORTB;
RBIE=1;
}
void SendRs(unsigned char x)
{
while(TxEnabled);
numTxBit=0;
TxByte=x;
TxEnabled=1;
}
char Command()
{
if(!fDone) return 0;
RBIE=0;
switch (RxByte)
{
case 0: break;
}
tmp=RxByte;
InitRx();
return 1;
}
main(void)
{
InitPic();
InitRx ();
while(1) {
if( Command()==1)
{
SendRs('O');
SendRs('K');
SendRs(tmp);
}
}
}
Спойлер

- Dima Lerich
- Открыл глаза
- Сообщения: 44
- Зарегистрирован: Пт июл 19, 2013 10:19:19
- Откуда: Владивосток
Re: Софтовый СОМ порт для PIC16F84
Ну а что тут удивительного? Код рабочий, все нормально, как и должно быть. В памяти код должен занимать около 200 байт, все работает устойчиво, можно ставить дополнительно рутины для обработки данных. У меня было нечто типа микроосцилографа. Потом уже перешел на 628 процы. Время прошло, но логика то не ржавеет.
Иногда получается спаять пару проводов...
- Dima Lerich
- Открыл глаза
- Сообщения: 44
- Зарегистрирован: Пт июл 19, 2013 10:19:19
- Откуда: Владивосток
Re: Софтовый СОМ порт для PIC16F84
Мне больше нравится все смотреть "живьем" на реально ощущаемом железе. Хотя понятно, софтовые заменители рулят, бесспорно. А если не секрет, для чего СОМ порт хотите применить?
Иногда получается спаять пару проводов...
Re: Софтовый СОМ порт для PIC16F84
Dima Lerich писал(а): а ребенок я был один в семье,
Вот это слабо повторить?
- Вложения
-
- RS232_16f84_19200.rar
- (10.92 КБ) 161 скачивание
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Софтовый СОМ порт для PIC16F84
А как потестить это, что нужно в терминалку ввести ? Или просто строка выводится ?
Re: Софтовый СОМ порт для PIC16F84
Аlex писал(а):А как потестить это, что нужно в терминалку ввести ? Или просто строка выводится ?
Вводи что хочешь , там тупой перевывод символов.
Сразу говорю эта хрень такая же как у супер_киндера - никакого практического применения .
Так поиграться.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Софтовый СОМ порт для PIC16F84
Ну это он сейчас тебе на МикроС за 5 минут сделает. Там есть какие-то подобные недобиблиотеки.dosikus писал(а):Вводи что хочешь , там тупой перевывод символов. .
Re: Софтовый СОМ порт для PIC16F84
Аlex писал(а):Ну это он сейчас тебе на МикроС за 5 минут сделает. Там есть какие-то подобные недобиблиотеки.
Кто ж спорит .
Вот только в моем примере не миКрос и либа не встроенная .
Ну конечно можно и что нибудь осмысленное сварганить, только не вижу смысла.
Камень г. мамонта ...
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Софтовый СОМ порт для PIC16F84
И будет это обычная безделушка, в которую ничего больше толкового не добавишь, т.к. программа будет тупо зациклена в ожидании импульса на RX. Такие уж вот недобиблиотеки в МикроС.Ну это он сейчас тебе на МикроС за 5 минут сделает