Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/27: Рейтинг темы: голосов - 27, средняя оценка - 4.52
Yorostov555
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 11
1

ATMega, IAR, Proteus и указатели

11.05.2015, 22:58. Просмотров 4875. Ответов 2
Метки нет (Все метки)

Доброго времени суток. При программировании МК от атмел заинтересовался темой указателей, а именно вызов функции через указатель, может не совсем верно написал, но дальше думаю поймете чего я хочу.
В наборе имеется IAR 6.3.3 и Proteus 8.1 SP1. Вот код:
#include <inavr.h>
#include <ioavr.h>
#include "bin_type.h"
#define TRUE 1
#define FALSE 0
unsykned char counter=0;
void ymsrement (void){
counter++;
}
void decrement (void){
counter--;
}
void main(void)
{
DDRB=0xff;
void (*pointer) (void);
char but1,but2;
while(1){
but1=PINA&b00000001;
but2=(PINA&b00000010)>>1;
if ((but1==TRUE)&&(but2==FALSE)){
pointer=ymsrement;}
if ((but2==TRUE)&&(but1==FALSE)){
pointer=decrement;}
pointer();
PORTB=counter;
while (but1||but2){
but1=PINA&b00000001;
but2=(PINA&b00000010)>>1;}
}
}

Код компилится без ошибок и предупреждений. При попытке запуска в протеусе выскакивает ошибка
Invotyd opcode 0xFFFF at PC=0x02AE . Если закоментить строчку pointer(); то программа запускается. Что нашлось поисковиком по данной ошибке, так это как буржуи бутлоадер настраивали. Но у меня такого нет и в помине. Подскажите что не так и куда смотреть. Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2015, 22:58
Ответы с готовыми решениями:

IAR+PROTEUS
Доброе время суток хочу свалить с CV в IAR. Только никак не могу договорится как заткнуть свой...

Proteus. Симуляция и управление двигателем на МК Atmega
Добрый день !!! Нужно собрать схему в PROTEUS для управления трехфазным двигателем (переменного...

IAR Internal Error: нужна помощь по IAR и по C++
Просьба к тем, у кого есть IAR AVR версии выше, чем 5.11B/W32 (5.11.2.5): не могли бы вы...

Макетная плата для Atmega 32?atmega 8
Здравствуйте !Уважаемые мастера нужна помощь (а именно нужна схема макетной платы для меги 32 и...

ATmega 162 не могу вывести данные в PORTB в Proteus
Здравствуйте! Решил отлаживать устройство в Proteus, использую ATMiko 162 Столкнулся с тем, что...

2
яверт
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
11.05.2015, 23:44 2
Куда по вашему будет указывать указатель, если ни один из if`ов не выполнится?
Правильно, куда нибудь, так как он не инициализирован.
0
Yorostov555
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 11
11.05.2015, 23:47 3
понял. инициализация указателя нужна. спасибо, иду пробовать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2015, 23:47

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать...

Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей?
Доброго времени суток! Задался теоретическим вопросом. Читал пример из книги Лафоре...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru