Ответ: дейст для hi-tech picc необх создание самодельных putch/getch/подключение
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено _гоша 14 июля 2004 г. 17:27
В ответ на: Ответ: отправлено _гоша 14 июля 2004 г. 17:26


#include
#define RS232_ERROR 0x06
extern unsigned char errcode; // код ошибки
/*==================================================================================================*/
void uart_init(void)
{// Функция инициализации USART для приема-передачи 8-бит слов на скорости 9600 бит/сек (при Fosc = 20 МГц).
unsigned char baud;
baud= PORTA & 0x03;
TRISC7 = 1;
TRISC6 = 0;
TXSTA = 0xff; RCSTA = 0xff;
TXSTA = 0x00; RCSTA = 0x00;
TXSTA = 0x24; RCSTA = 0x90;
switch(baud)
{case 0: SPBRG=42; TXSTA = 0x24; RCSTA = 0x90; break; /* 57600 */
case 1: SPBRG=64; TXSTA = 0x24; RCSTA = 0x90; break; /* 38400 */
case 2: SPBRG=129; TXSTA = 0x24; RCSTA = 0x90; break; /* 19200 */
default:SPBRG=64; TXSTA = 0x20; RCSTA = 0x90; break; /* 9600 */
}
baud= RCREG;
return;

}
/*==================================================================================================*/
void putch(char c)
{while(!TXIF) /* сдвиговый регистр отправки пуст */
continue;
TXREG = c;
return;
}
/*==================================================================================================*/
char getch(void)
{char c;
while(1)
{while(!RCIF) /* данные получены и готовы для чтения*/
if(FERR || OERR) break;
if (FERR || OERR) // Ошибка при приеме - отсутствие стоп-бита.
{c=RCREG; //return 0;
while(!TXIF) /* сдвиговый регистр отправки пуст */
continue;
uart_init(); // Перезапуск приемника.
errcode= RS232_ERROR;
return 0;
}
break;
}
return RCREG;
}
/*==================================================================================================*/
/* getch() + эхо */
char getche(void)
{char c;
putch(c = getch());
return c;
}



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru