CodeVision AVR в вопросах и ответах
Re: CodeVision AVR в вопросах и ответах
Вот я в кучу собрал все глобальные переменные:
#include <mega16.h>
#asm
.equ __w1_port=0x12 ;PORTD
.equ __w1_bit=3
#endasm
#include <1wire.h>
#include <ds18b20.h>
#asm
.equ __i2c_port=0x15; PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <ds1307.h>
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#define MAX_DS18B20 8
#include <mega16.h>
#asm
.equ __w1_port=0x12 ;PORTD
.equ __w1_bit=3
#endasm
#include <1wire.h>
#include <ds18b20.h>
#asm
.equ __i2c_port=0x15; PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <ds1307.h>
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#define MAX_DS18B20 8
- Реклама
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
осталось эту кучу немного разгрестиMarchello писал(а):Вот я в кучу собрал все глобальные переменные:
у тебя в коде имеются конструкции #asm.......#endasm это ассемблерные вставки, которых у тебя несколько штук
Код: Выделить всё
#include <mega16.h>
#include <i2c.h>
#include <1wire.h>
#include <ds1307.h>
#include <ds18b20.h>
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __w1_port=0x12 ;PORTD
.equ __lcd_port=0x12 ;PORTD
.equ __i2c_port=0x15; PORTC
.equ __w1_bit=3
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#define MAX_DS18B20 8Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Re: CodeVision AVR в вопросах и ответах
Спасибо! Так гораздо нагляднее и все в едином месте!
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
теперь осталось тело функции main собрать воедино, только смотреть внимательно, чтоб переменные друг с другом не конфликтовали
обрати внимание на
- это бесконечный цикл, необходимый для того чтоб микроконтроллер не отработал один раз и встал, а выполнял работу постоянно, естественно две такие конструкции не могут выполняться, потому что из первой выйти уже нельзя
ну а все что вне этого цикла выполняется естественно 1 раз - это как бы подготовительные процедуры, которые нужны при старте
т.е. тебе нужно соединить все что вне while и все что внутри while
обрати внимание на
Код: Выделить всё
while(1)
{
....
}ну а все что вне этого цикла выполняется естественно 1 раз - это как бы подготовительные процедуры, которые нужны при старте
т.е. тебе нужно соединить все что вне while и все что внутри while
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
- Реклама
Re: CodeVision AVR в вопросах и ответах
народ кто нить пробывал реализовать через юарт слив данных с eeprom 24с1024 через TeraTerm терминал через x-modem. если кто делал выложите пожалуйста код.
Re: CodeVision AVR в вопросах и ответах
Подскажите пожалста как сделать так,чтобы массив читался с определенного элемента? Ну к примеру,записано в еепром какое-то число и нужно чтобы массив читался с этого числа. Естественно такое же число есть и среди элементов массива. А то я начинающий,неумеющий и не знающий как это сделать. Заранее спасибо.
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
eduardo
Код: Выделить всё
unsigned char flag = 0; //флаг, при нахождении нужного элемента устанавливается в 1
for(unsigned char i = 0; i < arraysize; i++)
{
if(array[i] == etalon) flag = 1;
if(flag == 1) readArray;
}
Последний раз редактировалось unalex Чт янв 24, 2013 04:42:57, всего редактировалось 1 раз.
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
или имелось ввиду начать читать с элемента с определенным номером?
тогда проще некуда
тогда проще некуда
Код: Выделить всё
for(unsigned char i = number; i < arraysize; i++) //пробегаем по массиву, начиная с нужного места
{
// ваш код
}Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Re: CodeVision AVR в вопросах и ответах
Спасибо. Буду пробовать.
Re: CodeVision AVR в вопросах и ответах
Со вторым вариантом разобрался,а вот с первым чтото не получается. Что такое etalon?unalex писал(а):или имелось ввиду начать читать с элемента с определенным номером?
тогда проще некудаКод: Выделить всё
for(unsigned char i = number; i < arraysize; i++) //пробегаем по массиву, начиная с нужного места { // ваш код }
Откуда он появился?
Re: CodeVision AVR в вопросах и ответах
Теперь и с первым кодом разобрался. Еще раз спасибо,хотя оно не булькает...
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
странная конструкция, понятно что она делает, но не понятно как это можно употребить.Я бы лучше сделал функцию, которая возвращает позицию, где найден символ.Хотя, конечно, возможно мой скудный опыт не позволяет в полной мере оценить преимущества вашего метода.unalex писал(а):eduardoКод: Выделить всё
unsigned char flag = 0; //флаг, при нахождении нужного элемента устанавливается в 1 for(unsigned char i = 0; i < arraysize; i++) { if(array[i] == etalon) flag = 1; if(flag == 1) readArray; }
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
имеется число(я назвал его эталон), задача: найти в массиве первое попавшееся число равное эталону и начиная с этого места читать массив
флаг нужен для того чтобы отследить что нужный элемент мы нашли
пробегаем по массиву, сравниваем с эталоном и проверяем флаг, если элемент массива не совпадает и флаг не установлен - идем дальше, если совпало - устанавливаем флаг совпадения, сразу после этого проверяем флаг, если он установлен, значит начиная с этой позиции будем читать(условно обозначил эту процедуру как readArray)
без флага программа будет только отлавливать числа, которые совпадают а остальные пропускать
такая конструкция позволяет использовать только один цикл и для поиска позиции и для чтения(или других процедур, например модификации или стирания)
вариант с возвращением позиции должен состоять из еще одного перебора массива, в котором как раз будет производиться это самое чтение
флаг нужен для того чтобы отследить что нужный элемент мы нашли
пробегаем по массиву, сравниваем с эталоном и проверяем флаг, если элемент массива не совпадает и флаг не установлен - идем дальше, если совпало - устанавливаем флаг совпадения, сразу после этого проверяем флаг, если он установлен, значит начиная с этой позиции будем читать(условно обозначил эту процедуру как readArray)
без флага программа будет только отлавливать числа, которые совпадают а остальные пропускать
такая конструкция позволяет использовать только один цикл и для поиска позиции и для чтения(или других процедур, например модификации или стирания)
вариант с возвращением позиции должен состоять из еще одного перебора массива, в котором как раз будет производиться это самое чтение
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Re: CodeVision AVR в вопросах и ответах
Всем привет! В программировании я полный ноль,только светодиодами моргать умею, но хочется большего( освоить таймеры ,формулы,переменные, массивы...) Подскажите с чего начать осваивание CVAVR и Мк, или может полезную литературу для начала.
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
http://www.123avr.com/ вот например.hfelyx писал(а):Всем привет! В программировании я полный ноль,только светодиодами моргать умею, но хочется большего( освоить таймеры ,формулы,переменные, массивы...) Подскажите с чего начать осваивание CVAVR и Мк, или может полезную литературу для начала.
«И всё-таки она вертится!»
Re: CodeVision AVR в вопросах и ответах
Спасибо за быстрый ответ! Но хотелось бы литературу в книжных форматах и проверенную на которых уже выучились люди(в смысле программисты)....
Главное ,чтоб доступно и понятно обьяснялось,по порядку...
Главное ,чтоб доступно и понятно обьяснялось,по порядку...
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
Вот
- Вложения
-
- Лебедев.jpg
- (141.47 КБ) 371 скачивание
«И всё-таки она вертится!»
Re: CodeVision AVR в вопросах и ответах
Спасибо! Если бедет что-то еще,буду признателен!!!
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: CodeVision AVR в вопросах и ответах
ИМХО это нечто безобразное, во первых привязка в СodeVision и VMLAB во-вторых никакой последовательности(в первом уроке уже предлаают копаться в ШИМ и USART чужого кода) не говоря уже о ляпсистом оформлении и наличию ошибокApparatchik писал(а):http://www.123avr.com/ вот например.
кстати хорошая оговорка на сайте
123avr.COM ( то что вы сейчас читаете) - втупление и первые эксперементы
я бы посоветовал просто почитать книги по С, для понимания таких вещей как циклы, массивы, и прочие конструкции, а потом применять это уже к конкретному микроконтроллеру
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


