Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 21.10.2010, 20:32  
WartKert
Частый гость
 
Регистрация: 12.07.2009
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
WartKert на пути к лучшему
По умолчанию Помощь в WinAvr

Недавно начал изучать мк. Прочитал теорию и тд. Теперь пишу первую свою программу. Пытаюсь подключить дисплей к мк. Написал ф-ию передачи команды:
Код:
void Wr_com (unsigned char command) {	
	DDRC=127;
	PORTC=0;
	unsigned char Temp_data;
	Clearbit(RS);
	Clearbit(RW);
	Temp_data=((command››1) & 0xF0);
           Data_port |=Temp_data;	   //Передаются старшие биты
           Setbit(E);		
           _delay_us(5);
           Clearbit(E);
           _delay_us(40);
           ???                         //необходимо поменять местами биты
           ???
           ???
           Setbit(E);
           _delay_us(5);
           Clearbit(E);
           _delay_us(30);
           DDRC=7;
	PORTC=120;
Т.к. использую 4х разрядное подключение, необходимо поменять местами в байте биты (7-4 на 3-0). Есть ли WinAvr для этого функция? Или использовать дополнительно 2 переменные и раскидывать на них, потом на итоговую переменную?
Реклама:
WartKert вне форума  
Непрочитано 21.10.2010, 20:47  
maruda_v
Частый гость
 
Регистрация: 21.09.2009
Сообщений: 40
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
maruda_v на пути к лучшему
По умолчанию Re: помощь в WinAvr

Почему бы не использовать побитовый сдвиг
Temp_data=Temp_data‹‹4
maruda_v вне форума  
Непрочитано 13.11.2010, 16:06  
AGAT0365
Прописка
 
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
AGAT0365 на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Здравствуйте, изучаю WinAVR после CV компилятор выдаёт ошибку
if(0==kn1)
{
printf("%3u\r",35);
while(kn1==0);
_delay_ms(50);
}
на строках с if и while. Может надо файл библиотечный. Подскажите.
AGAT0365 вне форума  
Непрочитано 13.11.2010, 21:41  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Помощь в WinAvr

На операторе while(kn1==0); зациклитесь. Вообще, он бесполезен здесь, уберите.

Что такое kn1?
=GM= вне форума  
Непрочитано 13.11.2010, 21:59  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Сообщение от AGAT0365 Посмотреть сообщение
компилятор выдаёт ошибку
А привести текст ошибки? Так только телепат поможет.
Вероятнее всего не определена kn1, но могут быть и другие варианты.
kison вне форума  
Непрочитано 14.11.2010, 17:29  
AGAT0365
Прописка
 
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
AGAT0365 на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Вот привожу весь ,типо проект.
#include ‹avr/interrupt.h› // прерывание
#include ‹avr/io.h› // библиотека I/O
#include ‹util/delay.h› // библиотеки пауз
#include ‹avr/pgmspace.h›

#include ‹avr/boot.h›



// Standard Input/Output functions
#include ‹stdio.h›
#define kn1 PINC.0
#define kn2 PINC.1
#define kn3 PINC.2
#define zel PORTD.6
#define kpa PORTB.0
#define cve PORTD.7


void proba (void)
{
if(kn1==0)
{
printf("%3u\r",35);
while(kn1==0);
_delay_ms(50);
}
if (kn2==0)
{printf("%3u\r",80);
while (kn2==0);
_delay_ms(50);
}

if (kn3==0)
{printf("%3x\r",20);
while (kn3==0);
_delay_ms(50);

}
}
void uart (void)
{
while (!(UCSRA & 1‹‹RXC));
kpa=0;
proba();

}



int main(void)
{
/
PORTB=0x01;
DDRB=0x01;

PORTC=0x07;
DDRC=0x00;

PORTD=0xC0;
DDRD=0xC0;

TCCR0=0x00;
TCNT0=0x00;

TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

MCUCR=0x00;

TIMSK=0x00;

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;

ACSR=0x80;
SFIOR=0x00;

while (1)
{

uart();

}
}
Авот что выдаёт компилятор:
UARTproba.c:--:error:expected ')' before numeric constant
и так везде где есть операторы if,while
AGAT0365 вне форума  
Непрочитано 14.11.2010, 18:43  
Cybermaker
Вид на жительство
 
Регистрация: 21.08.2007
Сообщений: 318
Сказал спасибо: 12
Сказали Спасибо 67 раз(а) в 61 сообщении(ях)
Cybermaker на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Замените дефайны на:

#define kn1 (PINC && (1‹‹0))
#define kn2 (PINC && (1‹‹1))
#define kn3 (PINC && (1‹‹2))
#define zel (PORTD && (1‹‹6))
#define kpa (PORTB && (1‹‹0))
#define cve (PORTD && (1‹‹7))
Cybermaker вне форума  
Непрочитано 14.11.2010, 20:28  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Сообщение от Cybermaker Посмотреть сообщение
Замените дефайны на:

#define kn1 (PINC && (1‹‹0))
#define kn2 (PINC && (1‹‹1))
#define kn3 (PINC && (1‹‹2))
#define zel (PORTD && (1‹‹6))
#define kpa (PORTB && (1‹‹0))
#define cve (PORTD && (1‹‹7))
А разве не на
#define kn1 (PINC & (1‹‹0))
#define kn2 (PINC & (1‹‹1))
#define kn3 (PINC & (1‹‹2))
#define zel (PORTD & (1‹‹6))
#define kpa (PORTB & (1‹‹0))
#define cve (PORTD & (1‹‹7))
harchenko_pavel вне форума  
Непрочитано 14.11.2010, 21:28  
Cybermaker
Вид на жительство
 
Регистрация: 21.08.2007
Сообщений: 318
Сказал спасибо: 12
Сказали Спасибо 67 раз(а) в 61 сообщении(ях)
Cybermaker на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Сообщение от harchenko_pavel Посмотреть сообщение
А разве не на
#define kn1 (PINC & (1‹‹0))
#define kn2 (PINC & (1‹‹1))
#define kn3 (PINC & (1‹‹2))
#define zel (PORTD & (1‹‹6))
#define kpa (PORTB & (1‹‹0))
#define cve (PORTD & (1‹‹7))
Сорри - именно так. Си не родной мне язык
Cybermaker вне форума  
Непрочитано 15.11.2010, 09:36  
AGAT0365
Прописка
 
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
AGAT0365 на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Спасибо. А вот такое "kpa=0" тоже не поддерживает,видимо как то через побитовые операции?
AGAT0365 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06
На WinAVR + AVR Studio c CVAVR Vetal-soft Embedd С 87 03.03.2013 20:31
WinAVR: Cи vs C++ vovan_zh Микроконтроллеры, АЦП, память и т.д 3 08.10.2010 23:06
WinAVR не нравится символ '\' vovan_zh Микроконтроллеры, АЦП, память и т.д 10 10.09.2010 20:48
помогите начинающему по WinAVR umkamaks Микроконтроллеры, АЦП, память и т.д 4 05.05.2010 21:01


Часовой пояс GMT +4, время: 16:38.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot