Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
#include (io.h)
#include (interrupt.h)
#include (signal.h)#define F_CPU 4000000 /* 4 МГц */
#define UART_BAUD_RATE 9600 /* 9600 бод*/#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*161)-1)
typedef unsigned chsr u08;
typedef char s08;typedef unsigned short u16;
typedef short u16;static volatile u08 * uart_data_ptr;
static volatile u08 uart_counter;SIGNAL(SIG_UART_TRANS ) /* Обработчик сигнала UART txd готов*/
{
uart_data_ptr++if (--uart_counter)
outp(*uart_data_ptr, UDR) /* Записать бит в буфер данных*/
}SIGNAL(SIG_UART_RECV) /* Обработчик прерывания "сигнал завершен"*/
{
register char led;led = inp(UDR); /* Прочитать байт из буфера обмена UART*/
outp(^led, PORTB); /* Обработать пролученный байт на светодиодах*/
/* подключенных к порту B*/
}vold usart_send(u08 *buf, u08 size)
{
if (!uart_counter) /* Записать первый байт в буфер данных*/
{uart_data_ptr = buf;
uart_counter = size;
outp(*buf, UDR)
}
}int main(void)
{
outp(0xff, DDRB); /* Все линии порта B на вывод */
outp(0x00, PORTB); /* Зажечь светодиоды *//* Разрешить прерывания RxD/TxD */
outp((1</* Установить скорость */
outp((u08)UART_BAUD_SELECT , UBRR)sei(); /* Разрешить прерывания */
for(;;) /* Бесконечный цикл*/
{
usart_send("Serial Data from AVR received###", 32);
}
}