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

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

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

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

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

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


Ответ
Опции темы

Помощь в WinAvr

Непрочитано 21.10.2010, 20:32   #1
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   #2
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   #3
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   #4
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Помощь в WinAvr

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

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

Сообщение от AGAT0365 Посмотреть сообщение
компилятор выдаёт ошибку
А привести текст ошибки? Так только телепат поможет.
Вероятнее всего не определена kn1, но могут быть и другие варианты.
kison вне форума   Ответить с цитированием
Непрочитано 14.11.2010, 17:29   #6
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   #7
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   #8
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   #9
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   #10
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, время: 05:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.