Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 01.05.2017
Сообщений: 2
1

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

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

Author24 — интернет-сервис помощи студентам
День добрый, имеется рабочая программа для 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2017, 15:55
Ответы с готовыми решениями:

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

Как получить листинг программы написанный на Atmel Studio 7
Не могу получить листинг программы который написал, программа работает все замечательно, проект...

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

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

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

3
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
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
0 / 0 / 0
Регистрация: 01.05.2017
Сообщений: 2
18.05.2017, 09:05  [ТС] 3
Voland_, спасибо за ваш ответ. Но не могли бы вы подсказать аналогичную команду для Си языка?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2017, 09:33
Помогаю со студенческими работами здесь

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

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

Выполнение программы в Visual Studio Code
Не могу выполнить программу в VS, хотя все расширения установил. Что делать? Пишет - &quot;Не удается...

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

Внешние программы windows и Visual Studio Code
Подскажите, что не так с VS Code - автопереключение раскладок с помощью всяких свитчеров в ней не...

Работа с индикатором (Code Vision AVR)
Помогите разобраться с програмой. Она должна выводит на индикатор 4 цифры но никак не могу её...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru