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

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

Ответ:

Отправлено ++ 11 сентября 2008 г. 12:31
В ответ на: Tms320F2812 отправлено Diablo777Dragon 11 сентября 2008 г. 12:23


/*******************************************************************************/
/* RS-232 */
/* FILE *STDIN == RS-232; */
/* FILE *STDOUT == RS-232; */
/*******************************************************************************/
#include <DSP281x_Device.h>
extern unsigned char errcode, msg_code;
/*==================================================================*/
/* инициализация регистров упр обменом по RS232 кристалла */
/* 115200, 8 бит, нет контроля четности, нет упр протоколом передачи*/
void my_uart_init()
{SciaRegs.SCICCR.all = 0x0007; /*RS232-A */
SciaRegs.SCICTL1.all = 0x0023;
SciaRegs.SCICTL2.all = 0x0000;
SciaRegs.SCILBAUD = 0x00a1; /* BRR= (LSPCLK/(Baud * 8)) -1; == 0xa1 */
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCICTL1.all = 0x0023;
SciaRegs.SCIPRI.all = 0x0008;
SciaRegs.SCIFFTX.all= 0x0000;
SciaRegs.SCIFFTX.all= 0xE000;
SciaRegs.SCIFFRX.all= 0x0000;
SciaRegs.SCIFFRX.all= 0x2010;
SciaRegs.SCIFFCT.all= 0x0000;
/*RS232-B */
/* ScibRegs.SCICCR.all = 0x0007;
ScibRegs.SCICTL1.all = 0x0023;
ScibRegs.SCICTL2.all = 0x0000;
ScibRegs.SCILBAUD = 0x00a1;
ScibRegs.SCIHBAUD = 0x0000;
ScibRegs.SCICTL1.all = 0x0023;
ScibRegs.SCIPRI.all = 0x0008;
ScibRegs.SCIFFTX.all= 0x0000;
ScibRegs.SCIFFTX.all= 0xE000;
ScibRegs.SCIFFRX.all= 0x0000;
ScibRegs.SCIFFRX.all= 0x2010;
ScibRegs.SCIFFCT.all= 0x0000;*/
return;
}
/*==================================================================================================*/
/* putc(stdout==rs-232-a, c) */
void my_putch_a(char c)
{while(! SciaRegs.SCICTL2.bit.TXEMPTY) continue;
SciaRegs.SCITXBUF= c;
return;
}
/*==================================================================================================*/
/* putc(stdout==rs-232-b, c) */
/*void my_putch_b(char c)
{while(! ScibRegs.SCICTL2.bit.TXEMPTY) continue;
ScibRegs.SCITXBUF= c;
return;
}*/
/*==================================================================================================*/
/* kbhit(stdin==rs-232-a, c) */
char my_kbhit_a(void)
{if(SciaRegs.SCIFFRX.bit.RXFIFST) return 1;
return 0;
}
/*==================================================================================================*/
/* kbhit(stdin==rs-232-b, c) */
/*char my_kbhit_b(void)
{if(ScibRegs.SCIFFRX.bit.RXFIFST) return 1;
return 0;
}*/
/*==================================================================================================*/
/* getch(stdin==rs-232-a, c) */
char my_getch_a(void)
{while(!SciaRegs.SCIFFRX.bit.RXFIFST) continue;
while(SciaRegs.SCIRXST.bit.RXERROR || SciaRegs.SCIFFRX.bit.RXFFOVF)
{SciaRegs.SCIFFRX.all= 0x0000;
SciaRegs.SCIFFRX.all= 0x4000;
SciaRegs.SCIFFRX.all= 0x2010;
}
errcode= msg_code=0;
return SciaRegs.SCIRXBUF.all;
}
/*==================================================================================================*/
/* getch(stdin==rs-232-b, c) */
/*char my_getch_b(void)
{while(!ScibRegs.SCIFFRX.bit.RXFIFST) continue;
while(ScibRegs.SCIRXST.bit.RXERROR || ScibRegs.SCIFFRX.bit.RXFFOVF)
{ScibRegs.SCIFFRX.all= 0x0000;
ScibRegs.SCIFFRX.all= 0x4000;
ScibRegs.SCIFFRX.all= 0x2010;
}
return ScibRegs.SCIRXBUF.all;
}*/
/*==================================================================================================*/
/* putch(stdout==rs-232-a, getch(stdin==rs-232-a, c)) */
char my_getche_a(void)
{char c;
my_putch_a(c = my_getch_a());
return c;
}
/*==================================================================================================*/
/* putch(stdout==rs-232-b, getch(stdin==rs-232-b, c)) */
/*char my_getche_b(void)
{char c;
my_putch_b(c = my_getch_b());
return c;
}*/
/*==================================================================================================*/
/* puts(stdout==rs-232-a, *str) */
void my_puts_a(char * s)
{unsigned long i;
while(*s)
{my_putch_a(*s); s++;
for(i=0; i<0x3ffL; i++) continue;
}
my_putch_a(0x0d);
for(i=0; i<0x7ffL; i++)continue;
my_putch_a(0x0a);
for(i=0; i<0x7ffL; i++)continue;
return;
}
/*==================================================================================================*/
/* puts(stdout==rs-232-b, *str) */
/*void my_puts_b(char * s)
{unsigned long i;
while(*s)
{my_putch_b(*s); s++;
for(i=0; i<0x3ffL; i++) continue;
}
my_putch_b(0x0d);
for(i=0; i<0x7ffL; i++)continue;
my_putch_b(0x0a);
for(i=0; i<0x7ffL; i++)continue;
return;
}*/
//=====================================================================================
/* gets(stdin==rs-232-a, *str) */
char my_gets(char *s, char source)
{char *s1 = s;
char c;
c=0;
while(1)
{c= /*(source)? my_getche_b() :*/ my_getche_a();
switch(c)
{case '\b': if(s == s1) break;
my_putch_a(' ');
my_putch_a('\b');
s1--;
break;
case 'U'-'@':
while(s1 > s)
{my_putch_a('\b');
my_putch_a(' ');
my_putch_a('\b');
if(s1-- < s) s1=s;
}
break;
case '\n':
case '\r': *s1 = 0;
return 1;
default: *s1++ = c;
break;
}
}
return 0;
}





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

Ответы


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

Сообщение:

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

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

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

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