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

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

Ответ:

Отправлено stalker27 26 марта 2007 г. 09:15
В ответ на: Вы всеж проделайте задачу 5 - там есть пример и симуляция - посмотрите как читать поступающие смволы - далее вам нужно отсортировать их - что они приказывают и записать числа в порты - а порты настроить мастер CVAVR поможет и в конце задачи 1 есть управление ножками отправлено <font color=gray>avr123.nm.ru</font> 23 марта 2007 г. 17:21

Нашел этот пример,возможны опечатки. Здесь я быстрее разобрался, но, как я понил, для компиляции надо немного изменить код. Это тоже самое что в уроке 5? Как я могу использовать данный пример?

#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);
}
}



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

Ответы


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

Сообщение:

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

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

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

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