|
|
  |
Изменение текста программы при смене компилятора и чипа |
|
|
|
Nov 14 2010, 08:02
|
Частый гость
 
Группа: Участник
Сообщений: 139
Регистрация: 17-08-07
Пользователь №: 29 855

|
По мне, так проще все делать сразу в Programer_Notepad, без студии. Студия полезна как дебаггер, для пошаговой отладки (интерфейс удобный) и еще удобный программатор, а писать и компилить все-таки PN удобнее, ИМХО. А по-поводу автора, так может ему программу внук писал  .
Сообщение отредактировал 314 - Nov 14 2010, 08:04
|
|
|
|
|
Nov 14 2010, 10:23
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401

|
Всё установил как рекомендовали и спасибо за ссылочку.Литературки по студии немного накропал по инету(ну в смысле первые шаги и пр.)буду изучать.Жаль что через 5 часов уезжать на вахту. Да,об исходнике.Попробовал я его прокомпилить в IAR Systems Embedded Workbench 5.4 результат 70 ошибок и 0 предупреждений  вот так.Буду писать прогу под эту схему с нуля.
|
|
|
|
|
Nov 23 2010, 20:33
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
чё, опять IAR? вроде ж соскакивать с него решили... __eeprom указывает, что переменная будет храниться в EEPROM Код #ifdef DEBUG; void sb(byte data); void phex(byte ch); #define CRLF sb(13);sb(10) #endif нет, ну про #ifdef и #define то там пару страниц от силы прочитать.... ёмаё ))) объявление прототипа функций. Код void sb(byte data); void phex(byte ch); Код CRLF; препроцессор развернет в Код sb(13);sb(10);
--------------------
The truth is out there...
|
|
|
|
|
Nov 24 2010, 16:18
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401

|
Цитата(sigmaN @ Nov 23 2010, 23:33)  чё, опять IAR? вроде ж соскакивать с него решили... __eeprom указывает, что переменная будет храниться в EEPROM Код #ifdef DEBUG; void sb(byte data); void phex(byte ch); #define CRLF sb(13);sb(10) #endif нет, ну про #ifdef и #define то там пару страниц от силы прочитать.... ёмаё ))) объявление прототипа функций. Код void sb(byte data); void phex(byte ch); Код CRLF; препроцессор развернет в Код sb(13);sb(10); Всё это в общих чертах я понимаю,но не пойму при чем здесь DEBUG и вообще можно же просто обьявить функцию.А в книге пишут что это (#ifdef ... #endif)условная компиляция???Что эт за зверь?
|
|
|
|
|
Nov 25 2010, 21:49
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
Цитата не пойму при чем здесь DEBUG Программа пишется с учётом отладки(к примеру вывод значений по UART в нужных местах). Куски кода, отвечающие за отладку делают внутри ifdef DEBUG. Таким образом, если символ DEBUG определен - компилятор скомпилирует то, что между ifdef и endif, а если нет - то пропустит. Для него тогда просто не существует этого кода. Препроцессор его вырежет, т.к. условие не выполнилось, DEBUG не определен(nod defined). Вот. Таким образом релиз программы делается без отладочного вывода путем простого комментирования строки #define DEBUG где-то в самом начале программы ) А ещё символы дефайнить можно из свойств проекта... В общем это уже не так важно. Цитата Или это для того чтобы занести значение в старший байт? Да, TH ложится в старший байт, TCNT0 в младший. Я ооочень подробно там всё описал с примерами. Едва ли я смогу что-то новое придумать ) Там прям в двоичном виде кажется давал примеры же!
--------------------
The truth is out there...
|
|
|
|
|
Nov 28 2010, 10:54
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
Цитата Если не записать 0 в старший байт,то туда запишется значение TCNT0 ,поскольку сначала должен записываться именно старший байт? Как это? Откуда это? Ничего не понял. Имеется ввиду, что будет, если просто написать return TCNT0; ? Так вот если просто присвоить 16ти битной переменной(у нас это значение функции) то этот TCNT0 пойдет, естественно, в младший байт, а в старшем будут нули сами собой. Ибо мы то присваиваем ЗНАЧЕНИЕ. Т.е. TCNT0 было равно к примеру 150. Мы и присваиваем переменной 150. Если переменная 16бит - то будет один старший байт нулей, а в младшем наши 150. Если переменная 32бита - будет три байта нулей, а в четвертом(самом младшем) будут наши 150. И значение переменной во всех случаях будет таки равно 150 и никак иначе. И записать их можно в любом порядке(с помощью битовых операций, в которые, как мне кажется, Вы до сих пор так толком и не "въехали)".
--------------------
The truth is out there...
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|