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

Исправление программы написанной на Code Vision под Atmel Studio

17.05.2017, 15:55. Просмотров 626. Ответов 3
Метки нет (Все метки)

День добрый, имеется рабочая программа для Code Vision. Необходимо внести коррективы для того, чтобы она правильно считывалась в Atmel Studio. Адреса включенных библиотек исправил но он ругается на присваивание значения портов например "PORTB.2=1;PORTC.0=1;".
Есть ли какие то идеи, по поводу того, как данные команды написать в Atmel Studio.
Прикладываю текст программы :
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <avr/io.h>
#include <avr/iom8.h>
#include <stdio.h>
#include <util/delay.h>
 
 
int i=0,j=0,n,f=1,d=0;
char temp[12]={0,0,0,0,0,0,0,0,0,0,0,0};//массив для введенного пароля
 unsigned  char passw[5]={'5','0','1','8','4'};
//char passw[5];                                                          //EEPROM
char but[1]={0};//массив для хранения нажатой кнопки
//char portState[4]= {0b11110111,0b11101111,0b11011111,0b10111111};//маска для опроса строк клавиатуры
//char inputState[3]={0b00000001,0b00000010,0b00000100};//маска для опроса столбцов клавиатуры
 
char portState[4]= {0b00000001,0b00000010,0b00000100,0b00001000};//маска для опроса строк клавиатуры
char inputState[3]={0b11101111,0b11011111,0b10111111};//маска для опроса столбцов клавиатуры
 
//unsigned char mass2[4][3]={{'1','2','3'},//Массив с символами для каждой клавиши, сохраняется в програмной флеш памяти, а не в ОП
//                           {'4','5','6'},
//                           {'7','8','9'},
//                           {'*','0','#'}};
 
unsigned char mass2[3][4]={{'1','4','7','*'},
{'2','5','8','0'},
{'3','6','9','#'}
};
 
 
int ton[12] = {1,2,3,4,5,6,7,8,9,10,11,12};
//eeprom char eep_passw[5]={'7','7','7','7','7'};                           //EEPROM
 
//----------------------------------------
void zvon(unsigned int x,unsigned int n)
{
    float y=0;
    while (y<n)
    {
        PORTB.1=1;
        delay_ms(1);
        PORTB.1=0;
        delay_ms(x);
        y+=x+1;
    }
}
//----------------------------------------
unsigned char getkey()
{
    for(i=0; i<3; i++)
    {
        //  PORTD=portState[i];//Установка порта, подключенного к i-й строке в 0 с помощью маски
        PORTD=inputState[i];
        for(j=0; j<4; j++)
        {
            if(((PIND & portState[j])==0)) //Проверка состояния j-го порта, подключенного к j-й кнопки,путем побитового умножения на маску
            {
                while((PIND&portState[j])!=portState[j]){};//Если кнопка нажата,
                {
                    
                    zvon(ton[i*3+j],100);
                    return(mass2[i][j]);  //то вернуть ее символ
                    delay_ms(120);
                }
                
            }
        }
    } return(' ');//Вернуть символ пробела, если нет нажатых кнопок
}
void main(void)
{
    DDRB=0b00000111; PORTB=0b00000000;
    //DDRD=0b11111000; PORTD=0x00;
    DDRD=0b01110000; PORTD=0x00;
    DDRC=0b0000001;  PORTC=0b0000010;
    zvon(3,110);
    zvon(2,100);
    zvon(1,90);
 
    //for (ep=0;ep<5;ep++)
    //  {
    //    passw[ep] = eep_passw[ep];                                             //EEPROM
    //  }
    
    
    while (1)
    {          PORTB.0=1;
        PORTB.2=1;
        delay_ms(3000);
        PORTB.0=0;
        PORTB.2=0;
        out1:
        for(n=0;n<12;n++)
        { while ( (temp[n]=getkey())==' ' ) { //  PORTB.0=0;
            //  delay_ms(400);
            //  PORTB.0=1;
            if( PINC.1==0 )    // Button one
            {
                PORTB.2=1;
                PORTC.0=1;
                delay_ms(320);
                PORTC.0=0;
                zvon(1,600);
                PORTB.2=0;
                
                
                } {;}
            }
 
            if (temp[n]=='#')
            {
                if(n<5)f=0;
                goto re;
            }
            if (temp[n]=='*')
            {
                goto out;
            }
            if (temp[n]!=passw[n])
            {
                f=0;
            }
        }
        while ((but[0]=getkey())!='#')
        {
            if(but[0]=='*') goto out;
        }
        
        re:
        if(f==1)
        {                          //__Pass ok!!!
            PORTB.2=1;
            PORTC.0=1;
            delay_ms(320);
            PORTC.0=0;
            zvon(1,900);
            d=0;
        }
        else
        {                           //__Pass error!!!
            PORTB.0=1;
            zvon(4,800);
            d++;
            
            if(d==3)
            {                        //__Block system!!!     melody???
                PORTB.0=1;
                delay_ms(20000);
                d=0;
            }
        }
        
        delay_ms(6000);
        PORTB.2=0;
        PORTB.0=0;
        out: f=1;
        goto out1;
        
        
    }
    
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2017, 15:55
Ответы с готовыми решениями:

Ищу библиотеки под ATMel Studio 6.2 (Arduino Due)
Решил перейти на новую платформу, Arduino Due. Кроме того, не пользуюсь средой разработки Arduino...

Запуск моей программы, написанной в Visual Studio 2015, на другом компьютере
Здравствуйте! Просмотрела все темы с такой же проблемой на этом форуме, решения не нашла. Написала...

code vision avr
Здрасти, где тут включается окно, на которое выводится информация об ошибках при компиляции. Оно...

Code Vision проблема
У меня Code vision при cntr+F9(bild) выдаёт следующую ошибку. ...

Запуск под Win 7 программы написанной под Win NT
Приветствую! Я не программист, поэтому пишу к вам. Есть программа с названием WinCC.exe и база...

3
Voland_
1665 / 1053 / 99
Регистрация: 04.01.2010
Сообщений: 3,566
17.05.2017, 17:54 2
Цитата Сообщение от Maksrassabin Посмотреть сообщение
он ругается на присваивание значения портов например "PORTB.2=1;PORTC.0=1;".
ну эти команды в CVAVR обозначают управление определенными битами порта. то есть например, команда
"PORTB.2=1;" означает, что нужно в порте PORTB установить 2й бит. Вы должны заменить Си-командой, которая сделает то же самое, но без применения суффиксов ".NN", т.к. это не трушный Си, а вольность Code Vision.
Что касается остальных возможных проблем - давайте действовать последовательно. А главное - осознанно.

Добавлено через 2 минуты
и уберите, пожалуйста "goto" из сишного кода ). За это меня били линейкой по рукам в институте, и лично я не могу на это спокойно смотреть . Тем более, в вашем коде он не нужен совершенно.
1
Maksrassabin
0 / 0 / 0
Регистрация: 01.05.2017
Сообщений: 2
18.05.2017, 09:05  [ТС] 3
Voland_, спасибо за ваш ответ. Но не могли бы вы подсказать аналогичную команду для Си языка?
0
ValeryS
Модератор
7743 / 5751 / 748
Регистрация: 14.02.2011
Сообщений: 19,698
Завершенные тесты: 1
18.05.2017, 09:33 4
Цитата Сообщение от Maksrassabin Посмотреть сообщение
Voland_, спасибо за ваш ответ.
Maksrassabin, правила п 3.6
Если какой-либо пост на форуме показался вам полезным, то вы можете выразить свою благодарность, нажав кнопку "Спасибо" внизу самого поста.
Цитата Сообщение от Maksrassabin Посмотреть сообщение
Но не могли бы вы подсказать аналогичную команду для Си языка?
для этого нужно изучить операции "И" "ИЛИ" "НЕ", двоичное , а равно шестнадцатеричное, представление числа

например
вместо
C
1
PORTC.0=1;
пишем
C
1
PORTC|=1;
вместо
C
1
PORTC.0=0;
пишем
C
1
PORTC&=0xFE;
1
18.05.2017, 09:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2017, 09:33

Исправление ошибки в программе написанной на с++ builder 6
Пишу курсовой(калькулятор) , вроде все работает, но есть одна ошибка. При нажатии на...

видео уроки по code vision
Всем привет!! ребята подскажите ,есть ли на русском языке видео уроки по кодэ вижын,если да то...

Перенос программы из Code Block в Microsoft Visual Studio
можно ли программу из code block запустить на MVS. Просто перенеся код из code block в Microsoft...


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

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

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