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

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

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

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

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

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

Цифровые сигнальные процессоры Вопросы, связанные с применением цифровых сигнальных процессоров: программирование, отладочные средства, алгоритмы...

 
Опции темы

Помогите переписать с winavr на cvavr

Непрочитано 14.03.2011, 19:52  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: помогите переписать с winavr на cvavr

Программа просто пипец. Можно как пособие о том, как НЕ НАДО писать программы использовать.
Под CV выглядеть будет примерно так:
Код:
#include ‹mega8.h›

#define nop() {asm("nop");}
unsigned int s = 5000;//переменная для задержки
//unsigned int x,i;//перечисление переменных


interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (s ‹ 60000) s += 5000;
}


interrupt [EXT_INT1] void ext_int1_isr(void)
{
if(s › 5000) s -= 5000;
}


void delay(unsigned int t)
{
while(t--) nop (); 
}

void main(void)
{
unsigned int tmp;

DDRB = 0xFF; // на выход
DDRD = 0x00;  // Типа на вход порт
// проверяйте это и сделайте в соответствии со своей схемой


// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Low level
GICR|=0xC0;
MCUCR=0x00;
GIFR=0xC0;

// Global enable interrupts
#asm("sei")

while(1)
{
 for(i=0; i‹8; i++) 
 {
  PORTB = 0b00000001 ‹‹ i;
  #asm("cli")
  tmp = s; 
  #asm("sei")
  delay(tmp); 
  }
}
}
Дребезг в кнопках будет приводить к забавным эффетам
Реклама:

Последний раз редактировалось kison; 14.03.2011 в 19:58.
kison вне форума  
Непрочитано 14.03.2011, 19:59  
OlegNZH
Почётный гражданин KAZUS.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: помогите переписать с winavr на cvavr

я уж ,грешным Телом, подумал- может это тест? кто больше ошЫбок выявит...
OlegNZH вне форума  
Непрочитано 14.03.2011, 20:13  
vituha40
Частый гость
 
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vituha40 на пути к лучшему
По умолчанию Re: помогите переписать с winavr на cvavr

сократил ошибки до двух


#include ‹mega8.h›
#define nop() {asm("nop");}
unsigned int s = 5000; //ïåðåìåííàÿ äëÿ çàäåðæêè
unsigned int i; //ïåðå÷èñëåíèå ïåðåìåííûõ
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (s ‹ 60000) s += 5000;
}


interrupt [EXT_INT1] void ext_int1_isr(void)
{
if(s › 5000) s -= 5000;
}


void delay(unsigned int t)
{
while(t--) nop ();
}

void main(void)
{
unsigned int tmp;

DDRB = 0xFF; // íà âûõîä
DDRD = 0x00; // Òèïà íà âõîä ïîðò
// ïðîâåðÿéòå ýòî è ñäåëàéòå â ñîîòâåòñòâèè ñî ñâîåé ñõåìîé


// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Low level
GICR|=0xC0;
MCUCR=0x00;
GIFR=0xC0;

// Global enable interrupts
#asm("sei")

while(1)
{
for(i=0; i‹8; i++)
{
PORTB = 0b00000001 ‹‹ i;
#asm("cli")
tmp = s;
#asm("sei")
delay(tmp);
}
};
}
vituha40 вне форума  
Непрочитано 14.03.2011, 20:14  
vituha40
Частый гость
 
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vituha40 на пути к лучшему
По умолчанию Re: помогите переписать с winavr на cvavr

нет не тест это я просто на стадии учебы по програмированию
vituha40 вне форума  
Непрочитано 14.03.2011, 20:23  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Помогите переписать с winavr на cvavr

Замените:
Код:
void delay(unsigned int t)
{
while(t--) {#asm("nop")} 
}
Хотя проверить не могу - у меня CV кривой и вообще ничего не собирает.
kison вне форума  
Непрочитано 14.03.2011, 20:30  
OlegNZH
Почётный гражданин KAZUS.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Помогите переписать с winavr на cvavr

# - перед asm- решает (во второй строке)
OlegNZH вне форума  
Непрочитано 14.03.2011, 20:30  
vituha40
Частый гость
 
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vituha40 на пути к лучшему
Радость Re: Помогите переписать с winavr на cvavr

es es es получилось без ошибок теперь в протеус загоню
огромное спасибо потом отпишусь что получится
vituha40 вне форума  
Непрочитано 14.03.2011, 20:33  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Помогите переписать с winavr на cvavr

Сообщение от vituha40 Посмотреть сообщение
нет не тест это я просто на стадии учебы по програмированию
Может тогда оставить WinAVR?
kison вне форума  
Непрочитано 15.03.2011, 09:57  
vituha40
Частый гость
 
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vituha40 на пути к лучшему
По умолчанию Re: Помогите переписать с winavr на cvavr

теперь хочу вывести переменную на дисплей и у меня получается
две функции void main (void)
и компилятор ругается на нее что делать??
#include ‹mega8.h›
#include ‹lcd.h›
#include ‹delay.h›
#asm
.equ __lcd_port=0x12; PORTD /* ÆÊÈ äèñïëåé ïîäêëþ÷èëè ê ïîðòó I/O D */
#endasm
#define nop() {asm("nop");}
unsigned char j=0; /* îïðåäåëÿåì ïåðåìåííóþ äëÿ õðàíåíèÿ ïîëîæèòåëüíîãî ÷èñëà îò 0 äî 255 */
unsigned int s = 5000; //ïåðåìåííàÿ äëÿ çàäåðæêè
unsigned int i; //ïåðå÷èñëåíèå ïåðåìåííûõ
interrupt [EXT_INT0] void ext_int0_isr(void)
void main(void) /* Îñíîâíàÿ ôóíêöèÿ "main", ñ êîòîðîé íà÷èíàåòñÿ âûïîëíåíèå âñåé ïðîãðàììîé ïðîöåäóðû */

{
lcd_init(16);
lcd_clear();
lcd_gotoxy(1,0);
lcd_putsf("Initialization");
while(1) /* âûïîëíÿåì öèêë ïîêà îïåðàòîð iF íå âûïîëíèò óñëîâèå j==16 */
{
delay_ms(500);
j++;
lcd_gotoxy(j-1,1); /* çàïîëíÿåì ñèìâîëîì 2-óþ ñòðîêó îò 0 äî 15 */
lcd_putchar(0xff); /* Ñèìâîë çàïîëíåííîãî çíàêîìåñòà èç òàáëèöû êîäîâ ñèìâîëîâ */
if (j==16) {break;} /* åñëè óñëîâèå if âûïîëíèëîñü, òî ïðåðûâàåì âûïîëíåíèå öèêëà while */
}
while(1){/* áåñêîíå÷íûé öèêë */};
}
{
if (s ‹ 60000) s += 5000;
}


interrupt [EXT_INT1] void ext_int1_isr(void)
{
if(s › 5000) s -= 5000;
}
void delay(unsigned int t)
{
while(t--) {#asm("nop")}
}
void main(void)
{
unsigned int tmp;
DDRB = 0xFF;
DDRD = 0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Low level
GICR|=0xC0;
MCUCR=0x00;
GIFR=0xC0;

// Global enable interrupts
#asm("sei")

while(1)
{
for(i=0; i‹8; i++)
{
PORTB = 0b00000001;
#asm("cli")
tmp = s;
#asm("sei")
delay(tmp);
PORTB = 0b00000000;
delay (200);
}
};
}
vituha40 вне форума  
Непрочитано 15.03.2011, 09:59  
vituha40
Частый гость
 
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vituha40 на пути к лучшему
По умолчанию Re: Помогите переписать с winavr на cvavr

win avr у меня установлен просто я хочу научится на что нибудь одном
а задачи написаны на разных языках а совместить написанное неполучается
vituha40 вне форума  
 
Опции темы

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

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 KBH-I Коллекция глюков 19 07.06.2011 01:16
Помогите с массивами в WinAvr Sho_otnik Микроконтроллеры, АЦП, память и т.д 7 07.01.2011 11:56
помогите начинающему по WinAVR umkamaks Микроконтроллеры, АЦП, память и т.д 4 05.05.2010 21:01


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


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