}
/*-------------------------------------------------------------*/
void send_stat(void) /* Послать статус устройства в host-компьютер */
{
/*
SendCommandHost("STAT","%02X;%02X;%02X;%03X;%02X;%02X",
COMF,STATE,arqf,hiIFree,hi_count,connector);
*/
SendCommandHost("STAT","%02X;%02X;%02X;%03X;%02X;%X;%X",
COMF,STATE,arqf,hiIFree,hi_count,MODEM_STATE,connector);
}
/*-------------------------------------------------------------*/
/*-------------------------------------------------------------*/
/* Mode */
/* 0 - ARQ */
/* 1 - CFEC */
/* 2 - SFEC */
/*-------------------------------------------------------------*/
UCHAR convert(char ch) // Конвертер в NBDP
{
if(ch == ERR_SMBL) return ERR_SMBL;
{
int index = table2;
if(index)
{
struct CVT *cvt;
cvt = &CVT_TABLE;
switch(SHIFT)
{
case 0: return cvt->_LET;
case 1: return cvt->_FIG;
case 2: return cvt->_RUS;
}
}
}
return ERR_SMBL;
}
/*-------------------------------------------------------------*/
void NBDP_Init(void) // Инициализация NBDP (вызывается из main.c)
{
SetID(1,"32610",SIS5,NULL,1);
SetID(2,"123456789",SIS9,SCS9,1);
strcpy(SIS9,"\x2e\x33\x65\x33\x27\x39\x2e\x71\x69");
strcpy(SCS9,"\x17\x4e\x69");
/*-------------------------------------------------------------*/
StandBy();
}
3. Программа serial.c
Содержит функции для работы с последовательным портом.
#include <stdarg.h>
#include <string.h>
#include <drivers.h>
/*-------------------------------------------------------------*/
#define MAX_CMD_LEN 127
unsigned int CMDS, /* command rx state */
CMDL; /* command rx pointer */
char CMD; /* command rx buffer */
/*-------------------------------------------------------------*/
int chr;
int SerialDriver(void) // проверка работы и инициализация последоват. порта
{
/*int chr;*/
repeat:
if(get_char(&chr))
{
if(CMDS) /* command receiving */
{
if(CMDL>=MAX_CMD_LEN)
{
SendHostError(0,0);
reset_state:
CMDL=CMDS=0;
return 0;
}
if((CMD == ';') && (chr == '@')) /* EOC */
{
CMD = chr;
CMD = 0;
HostCommandParser(&CMD);
goto reset_state;
}
else
{
CMD = chr;
goto repeat;
return 0;
}
}
else /* command waiting */
{
if(chr=='$')
{
CMDL=0;
CMD = chr;
CMDS=1;
goto repeat;
}
}
}
return 0;
}
/*-------------------------------------------------------------*/
extern unsigned int No;
char BUFFER;
int SendCommandHost(char *cmd, char *fmt, .) // функция для передачи
// команд в терминал
{
/* Make data string to out */
/*int len;*/
va_list argptr;
/* Out the packet header: $CMD;channel_no; */
out_char('$');
out_string(cmd/*,strlen(cmd)*/);
out_char(';');
out_char(No + 0x30);
out_char(';');
/* Out the variable part */
va_start(argptr, fmt);
/*len =*/ vprinter(&BUFFER, fmt, argptr);
va_end(argptr);
out_string(BUFFER/*,len*/);
/* Out the end part of packet */
out_string(";@\r\n"/*,4*/);
return 0;
}
/*-------------------------------------------------------------*/
int SendCommandHostDBG(int level, char *fmt, .)
{
/* Make data string to out */
/*int len;*/
va_list argptr;
if(!(dip_sw & DIP_SW4)) return 0; /* not output debug */
if(level > DebugLevel) return 0;
/* Out the packet header: $CMD;channel_no; */
out_string("$DBG;"); out_char(No + 0x30); out_char(';');
/* Out the variable part */
va_start(argptr, fmt);
vprinter(&BUFFER, fmt, argptr);
va_end(argptr);
out_string(BUFFER);
/* Out the end part of packet */
out_string(";@\r\n");
return 0;
}
Критичные по быстродействию функции выполняем на языке ассемблер под ADSP 2181.
Sin.dsp
Функции разложения на синус и косинус используемые при модуляции и демодуляции для вычисления "налету".
.MODULE/RAM _SIN_COS_INTEGER_;
{---------------------------------------------------------------
Sine/Cosine approximation for 1.15 format
int Y = sin_i(int X)
int Y = cos_i(int X)
---------------------------------------------------------------
---------------------------------------------------------------
Calling parameters
AR = X in scaled 1.15 format
M1 = 1
L1 = 0
Return values Перейти на страницу: 2 3 4 5 6 7 8 9
Советуем почитать:
Разработка микропроцессорного устройства для проверки и диагностики двигателя внутреннего сгорания автомобиля Современную микроэлектронику трудно представить без такой важной составляющей, как микроконтроллеры. Микроконтроллеры незаметно завоевали весь мир. Микроконтроллерные технологии очень эф ...
Волоконно-оптические кабели ...
Система дублирования видеопотока в компьютерном классе Разработка дипломного проекта является завершающим этапом обучения в техникуме, который показывает, какого уровня специалист подготовлен в результате обучения. Это сложная многогранная р ...