Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Faoxis
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 114
1

Работа с дисплеем (ATMega128, Code Vision AVR)

22.12.2014, 22:52. Просмотров 1884. Ответов 7
Метки нет (Все метки)

Здравствуйте! При попытке настроить нужные ножки МК для работы с дисплеем, компилятор ругается на строку
C
1
.equ__lcd_port = 0xlB; PORTA
Что я делаю не так и как сделать правильно ? Среда разработки - Code Vision AVR. На всякий случай ниже приведу листинг всей программы:

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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
#include <MEGA128.H>
#include <stdio.h>
#include <delay.h>
#include <stdlib.h>
 
#asm
.equ__lcd_port = 0xlB; PORTA
#endasm
 
#include <lcd.h>
typedef unsigned char byte; 
int r=30; // ?aaeoneieana
unsigned char st[30] ; 
unsigned char h,l; 
unsigned int
ko=0,i = 0,t=0,distance=0,speed,mspeed,second=0,tsecond=0,minuta=0,tminuta=0,
hour=0,thour=0,k=0,km=0;
 
// Timer 0 overflow interrupt service routine 
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
        if(TCCR0==0x05)
        {
                l = TCNT1L;
                h = TCNT1H;  
                
                TCNT1H = 0;
                TCNT1L = 0;
                i = h * 256 + 1; // eiee?anoai eiioeunia ca naeoiao.
                t++; // n?ao?ee a?aiaie
                second++; // auaiaa?aiaie
                lcd_gotoxy(18,l); 
                itoa(second, st); 
                lcd_puts(st); 
                lcd_gotoxy(17, l); 
                itoa(tsecond, st); 
                lcd_puts(st); 
                lcd_gotoxy(15, l); 
                itoa(minuta, st); 
                lcd_puts(st);
 
                lcd_gotoxy(14, l); 
                itoa(tminuta, st); 
                lcd_puts(st); 
                lcd_gotoxy(12, l); 
                itoa(hour, st); 
                lcd_puts(st); 
                lcd_gotoxy(11, 1); 
                itoa(thour, st); 
                lcd_puts(st);
                
                if(second >= 9)
                {       
                        second=0; 
                        tsecond++;
                }
                if(tsecond>=6)
                {
                        tsecond=0; 
                        minuta++;
                }
                if( minuta>=9)
                {
                        minuta=0; 
                        tminuta++;
                }
                if( tminuta>=6)
                {
                        tminuta=0; 
                        hour++;
                }
                if(hour>=9)
                {
                        hour=0; 
                        thour++;
                }
                lcd_gotoxy(0,1);
                        lcd_putsf("BPEM?:");
 
 
                lcd_gotoxy( 13,1); 
                lcd_putsf(":");
                lcd_gotoxy(16,l); 
                lcd_putsf(":");
                
                //Auaia ?annoiyiey. 
                lcd_gotoxy(16,2); 
                itoa(k,st); 
                lcd_puts(st); 
                lcd_gotoxy(11,2); 
                itoa(km,st); 
                lcd_puts(st); 
                lcd_gotoxy(0,2);
  
                        lcd_putsf("?ACCTO?IEA:"); 
 
                distance=(2*3.14*r*i)/1000; 
                k=k+distance; 
                ko=ko+distance; 
                if (k>=1000)
 
                {               
                        k=k-1000;
                        km++;
 
                }
                lcd_gotoxy(14,2);
                lcd_putsf("km");
                lcd_gotoxy(19,2);
                lcd_putsf("m");
                lcd_gotoxy(0,0);
 
                // Auaiaiaiiaaiiienei?inoe
                lcd_putsf("NEI?INOU:");
                speed=(2*3.14*r*i)/1000;
                itoa(speed,st);
 
                lcd_gotoxy(11,0) ; 
                lcd_puts(st); 
                lcd_gotoxy(14,0); 
                lcd_putsf("m/s");
 
                // Auaian?aaiaenei?inoe
                lcd_gotoxy(0,3); 
                lcd_putsf("CpCKOPOCTb:"); 
                mspeed= ko/t; 
                itoa(mspeed,st); 
                lcd_gotoxy(11,3); 
                lcd_puts(st); 
                lcd_gotoxy(14,3);
                lcd_putsf("m/s");
        }  
        
        
}
 
// Declare your global variables here 
// External Interrupt 4 service routine 
interrupt [EXT_INT4] void ext_int4_isr(void)
{
        delay_ms( 100);// caaa??ea aey enee??aiey a?aaacaa 
        // Place your code here 
        //Eiiiea caionea nieaiiao?a 
        if (PINE.4 == 0)
        {
                l = 0;
                h=0;
                TCNT1H=0;
                TCNT1L=0;
                TCCR0=0x05;
        }
        
        lcd_clear();
}                          
 
// External Interrupt 5 service routine 
interrupt [EXT_INT5] void ext_int5_isr(void)
{
        // Place your code here 
        //Eiiiea inoaiiaee nieaiiao?a
        if (PINE.5 == 0)
        {
                TCCR0=0x00;
        }
} 
 
 
void main(void)
{
    byte command_addr = 0;
// Declare your local variables here 
//Input/Output Ports initialization 
 
///Port D initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Funcl=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x80; 
 
// Port E initialization
// Func7=In Func6=In Func5=In Func4=InFunc3=In Func2=In Funcl=OutFunc0=In
// State7=P State6=P State5=P State4=P State3=T State2=T State1=1State0=T
PORTE=0xF2;
DDRE=0X02;
 
 
 
 
 
 
 
// External Interrupt(s) initialization
// INT4: On
//INT4 Mode: Falling Edge 
//INT5: On
// INT5 Mode: Falling Edge 
// INT6: On
// INT6 Mode: Falling Edge 
// INT7: On
// INT7 Mode: Falling Edge 
EICRA=0x00;
EICRB=0xAA;
EIMSK=0xF0;
EIFR=0xF0;
 
// Timer(s)/Counter(s) Interrupt(s) initialization 
TIMSK=0x01;
ETIMSK=0x00;
DDRE=0x01;  
 
// USORT0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USORT0 Receiver: On
// USORT0 Transmitter: On
// USORT0 Mode: Asynchronous
// USORT0 Baud Rate: 57600
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x07; 
 
 
// LCD module initialization 
lcd_init(20);
 
// Global enable interrupts 
#asm("sei")
 
lcd_gotoxy(0,2);
lcd_putsf("HA?METE NOA?O");
 
while (1)
{
};
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2014, 22:52
Ответы с готовыми решениями:

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

Работа с ATMega128 . AVR studio
Всем привет! Я написал код на ассемблере , но не знаю как написать точно такой же код на C....

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

Управление блоком светодиодов (Code Vision AVR)
Имеется следующее задание: Запрограммировать мигание блоков светодиодов с портом B в Code Vision...

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

7
raxp
10190 / 6573 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
22.12.2014, 23:20 2
...модель дисплея и схему всех подключений в тему.
0
Voland_
1656 / 1045 / 98
Регистрация: 04.01.2010
Сообщений: 3,551
22.12.2014, 23:45 3
Faoxis, конкретно в вашей строке проблема в отсутствующем пробеле. Но вообще вам надо еще подключить библу для экрана, и расписать куда вы подключите его ноги. Воспользуйтесь мастером в CV AVR, он вам сам все повставляет в код программы.

Добавлено через 1 минуту
...упс, инклуд нужный не заметил. Тогда проблема в пробеле.
PS: только добавляйте в следующий раз как именно ругается компилятор. Непонятно же.
0
Faoxis
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 114
23.12.2014, 00:28  [ТС] 4
Не понял. Где конкретно отсутствует пробел ? Никогда не подключал дисплей
0
23.12.2014, 00:28
raxp
10190 / 6573 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
23.12.2014, 00:32 5
Жду выполнения требований.
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
23.12.2014, 08:20 6
Цитата Сообщение от Voland_ Посмотреть сообщение
Тогда проблема в пробеле.
Заинтриговал
Цитата Сообщение от Faoxis Посмотреть сообщение
Никогда не подключал дисплей
а причем тут дисплей?
Цитата Сообщение от raxp Посмотреть сообщение
Жду выполнения требований.
Поддерживаю
Цитата Сообщение от Faoxis Посмотреть сообщение
.equ__lcd_port = 0xlB; PORTA
Assembler
1
.equ __lcd_port = 0xlB; PORTA
Найдите два отличия или одно
0
Voland_
1656 / 1045 / 98
Регистрация: 04.01.2010
Сообщений: 3,551
23.12.2014, 10:09 7
кстати:
Цитата Сообщение от Faoxis Посмотреть сообщение
lcd_putsf("?ACCTO?IEA:");
рашен буквы сложновато будет вывести или отредактировать - неясно пока.
ЗЫ: в Keil 4.70 та же проблема - комменты в коде в кириллице не видны, а при редактировании в UTF8 неправильно расцениваются кодом (т.к. по факту другая кодировка, не CP1251). Кто знает как это починить - тому спасибо и плюсик .
0
pyzhman
851 / 502 / 71
Регистрация: 15.05.2012
Сообщений: 2,856
23.12.2014, 20:53 8
Цитата Сообщение от Faoxis Посмотреть сообщение
.equ__lcd_port = 0xlB;
Эту строчку генерит визард. По идее. Раз неверная - значит содрано откуда-то (настоящий автор так пошутил).
0
23.12.2014, 20:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2014, 20:53

Секундомер на Assembler от 0 до 999 (AVR Studio, atmega128)
Разработка МП системы, высвечивающей в трех разрядах ЖК-индикатора десятичный секундомер в...

Cумма элементов массива (ATMega128, AVR Studio 4)
Инициализировать массив натуральных чисел от 0 до 900 и найти сумму его эл-ов. .include...

Исправление программы написанной на Code Vision под Atmel Studio
День добрый, имеется рабочая программа для Code Vision. Необходимо внести коррективы для того,...


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

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

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