Например TDA7294

Форум РадиоКот • Просмотр темы - Rs232 и Atmega16 на Си
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 15:34:27

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Rs232 и Atmega16 на Си
СообщениеДобавлено: Ср янв 31, 2018 17:29:59 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 49
Зарегистрирован: Чт ноя 21, 2013 14:05:26
Сообщений: 342
Откуда: Україна
Рейтинг сообщения: 0
Мужики!!
Я в этом деле не силен, и по этому прошу помощи.
Я не пойму как передать слово и сравнить его.
Умею передавать, получать и сравнивать только одну циферку или буквочку.
А как передавать и получать целые слова? Как их сравнивать??


Вот код на Си

Спойлер
Код:
#include <avr/io.h>
#include <util/delay.h>

//*** Инициализация UART ***//
void uart_init(void)
{
   //скорость обмена данными
   UBRRH = 0;  //старший байт
   UBRRL = 103; //младший байт
   //8 бит данных, 1 стоп бит, без контроля четности
   UCSRC = ( 1 << URSEL ) | ( 1 << UCSZ1 ) | ( 1 << UCSZ0 );
   //разрешить прием и передачу данных
   UCSRB = ( 1 << TXEN ) | ( 1 <<RXEN );
}

//*** Прием данных по UART ***//
unsigned char uart_receive(void)
{
   while ( ! ( UCSRA & ( 1 << RXC )));
   return UDR;
}

//*** Передача данных по UART ***//
void uart_transmit(unsigned char data)
{
   while ( ! ( UCSRA & ( 1 << UDRE )));
   UDR = data;
}

//*** Главная программа ***//
int main(void)
{
   DDRD = 0x00;    //установим все порты DDRD как входы
   PORTD = 0x00;   //установим логический 0 на все порты DDRD

   DDRC = (1 << 5) | (1 << 4); //установим порты PC5 и PC4 регистра DDRC на выход
   PORTC &= ~(1 << 5) | ~(1 << 4); //установим сигнал низкого уровня (логическай 0) на выводы PC5 и PC4 регистра DDRC

   char data;
   
   uart_init();
   
   while(1)
   {
      data=uart_receive();
      
      if(data=='A')
      {
         PORTC |= (1 << 5);    //устанавливаем логическую 1 на порт PC5 регистра DDRC
      }
      if(data=='B')
      {
         PORTC &= ~(1 << 5); //устанавливаем логический 0 на порту PC5 регистра DDRC
      }

      if(data=='1')
      {
         PORTC |= (1 << 4);    //устанавливаем логическую 1 на порт PC4 регистра DDRC
      }
      if(data=='0')
      {
         PORTC &= ~(1 << 4); //устанавливаем логический 0 на порту PC4 регистра DDRC
      }
      
      uart_transmit(data);

   };
}


Спасибо


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Rs232 и Atmega16 на Си
СообщениеДобавлено: Чт фев 01, 2018 16:13:35 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 87
Зарегистрирован: Вс янв 09, 2011 23:05:37
Сообщений: 450
Откуда: СССР
Рейтинг сообщения: 0
Допустим есть слово

Код:
const char *const keyWord = {"Hello!"};


которое нужно найти в буфере приема

Код:
char buffer[] = {"Hello!"};


Код:
if (!strncmp(buffer, keyWord, strlen(keyWord)))
{
   // Совпадение   
}


или без библиотеки поэлементно в цикле сравнить два массива символов.

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Rs232 и Atmega16 на Си
СообщениеДобавлено: Пт фев 02, 2018 01:12:07 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 49
Зарегистрирован: Чт ноя 21, 2013 14:05:26
Сообщений: 342
Откуда: Україна
Рейтинг сообщения: 0
А если в принятом буфере, кроме нужного слова, еще какой то мусор?? Типа там, начало, перенос и т д, как отсеять??


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Rs232 и Atmega16 на Си
СообщениеДобавлено: Пт фев 02, 2018 04:06:58 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 87
Зарегистрирован: Вс янв 09, 2011 23:05:37
Сообщений: 450
Откуда: СССР
Рейтинг сообщения: 0
http://all-ht.ru/inf/prog/c/func/strstr.html

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y