Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » »Радиолюбитель
Программирование микроконтролеров,ремонт аудио/видео/бытовой техники,полезные устройства для дома,телефония, обсуждение статей журнала Радио

Ответ
 
Опции темы
Старый 07.04.2011, 15:56   #811   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Попробуйте сделать процедуру с проверкой удержания кнопки.
Код:
void ir()
{
if (RC5.received) {
cmd = RC5.command;
RC5.received = 0 ; 
  if (last_toggle == IR.toggle)
       return;
   else
       last_toggle = IR.toggle;

 if (cmd==16) vol_up();
if (cmd==17) vol_down();
if (cmd==11) rez_stb();
if (cmd==12) rez_mute();
if (cmd==32) rez_mode_up();
if (cmd==33) rez_mode_down();
}
}
  Ответить с цитированием
Старый 07.04.2011, 18:37   #812   
Форумец
 
Сообщений: 7
Регистрация: 07.04.2011

Andrey T вне форума Не в сети
Цитата:
Сообщение от petrd Посмотреть сообщение
Попробуйте сделать процедуру с проверкой удержания кнопки.
Код:
void ir()
{
if (RC5.received) {
cmd = RC5.command;
RC5.received = 0 ; 
  if (last_toggle == IR.toggle)
       return;
   else
       last_toggle = IR.toggle;

 if (cmd==16) vol_up();
if (cmd==17) vol_down();
if (cmd==11) rez_stb();
if (cmd==12) rez_mute();
if (cmd==32) rez_mode_up();
if (cmd==33) rez_mode_down();
}
}
После этого вообще команды не проходят.
  Ответить с цитированием
Старый 08.04.2011, 07:20   #813   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Andrey T Посмотреть сообщение
После этого вообще команды не проходят.
На первый взгляд криминала вроде нет. А какую версию компилятора используете?
  Ответить с цитированием
Старый 08.04.2011, 07:51   #814   
Форумец
 
Сообщений: 7
Регистрация: 07.04.2011

Andrey T вне форума Не в сети
Использую MikroC PRO for PIC 4.60.
Как быть с тем если происходит удержание кнопки, ведь тогда получается всегда будет last_toggle == IR.toggle и из процедуры программа будет вылетать.
  Ответить с цитированием
Старый 08.04.2011, 08:26   #815   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Andrey T Посмотреть сообщение
Использую MikroC PRO for PIC 4.60.
Как быть с тем если происходит удержание кнопки, ведь тогда получается всегда будет last_toggle == IR.toggle и из процедуры программа будет вылетать.
Да, будет вылетать, но при этом первая пришедшая команда будет обработана, а последующие нет. А Вы о чем хотите сказать, что Вам надо длительное и короткое нажатие раздельно обрабатывать?
  Ответить с цитированием
Старый 08.04.2011, 09:50   #816   
Форумец
 
Сообщений: 7
Регистрация: 07.04.2011

Andrey T вне форума Не в сети
Я хочу чтобы работа полностью соответствовала работе с обычной бытовой техникой, т.е. нажали кнопку параметр изменяется на 1, если удерживаем кнопку, требуемый параметр изменяется пока мы держим кнопку, нажали другую кнопку меняется другой параметр на 1 или тотже самый параметр только в другую сторону -1, если мы нажали и удерживаем параметр также начинает увеличиваться или уменьшаться в течении времени удержания.
  Ответить с цитированием
Старый 08.04.2011, 10:23   #817   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от Andrey T Посмотреть сообщение
Я хочу чтобы работа полностью соответствовала работе с обычной бытовой техникой,
Стойте. Это Вы так считаете, в стандарте такого нет.
Цитата:
Сообщение от Andrey T Посмотреть сообщение
т.е. нажали кнопку параметр изменяется на 1, если удерживаем кнопку, требуемый параметр изменяется пока мы держим кнопку, нажали другую кнопку меняется другой параметр на 1 или тотже самый параметр только в другую сторону -1, если мы нажали и удерживаем параметр также начинает увеличиваться или уменьшаться в течении времени удержания.
В стандарте говорится, что управляющий бит может использоваться в программе приемника как интерпретация функции автоповтора. Т.е. это остается на совести того кто будет использовать данный протокол.

Ближе к проблеме. Хочется разобраться с причиной, поэтому в коде умышленно предложил убрать повторные нажатия. Сначала надо решить одно, а потом переходить к другому.
  Ответить с цитированием
Старый 11.04.2011, 07:25   #818   
Форумец
 
Сообщений: 7
Регистрация: 07.04.2011

Andrey T вне форума Не в сети
Убрал последнее состояние стейт-машины, все работает как нужно. В итоге получился вот такой код:
Цитата:
void ir()
{
if (RC5_received) {
GIE_bit = 0;

if (cmd==12) rez_stb();
if (stb==0)
{
if (cmd==16) vol_up();
if (cmd==17) vol_down();
if (cmd==13) rez_mute();
if (cmd==32) rez_mode_up();
if (cmd==33) rez_mode_down();
}

RC5_received = 0 ; // Команда обработана
RC5_state = RC5_IDLE ;
GIE_bit = 1;
}
}

//------------------------------------------------------------------------------
// Обработчик прерывания
//------------------------------------------------------------------------------
void interrupt()
{
unsigned char time;

// прерывание по INT/RB0
if (INTF_bit)
{
INTEDG_bit = 1-INTEDG_bit ; //переключение INTEDG (фронт-спад INT)
INTF_bit = 0;

time = TMR0; // захват значения таймера
TMR0 = 0; // перезапуск таймера

switch (RC5_state)
{
////////// СВОБОДЕН. НИЧЕГО НЕ ПОЛУЧЕНО ////////////////////////////
case RC5_IDLE :
RC5_bits = 1; // already 1 bit (with value "1") received
RC5_bitCount = 1;
RC5_shortPulses = 0;
RC5_prevBit = 1;
RC5_state = RC5_DECODING;

T0IF_bit = 0; // сброс флага переполнения TMR0
T0IE_bit = 1; // разрешить прерывания TMR0
break ;

////////// ЗАФИКСИРОВАННО ИЗМЕНЕНИЕ. НАЧИНАЕМ ОБРАБОТКУ БИТ /////////
case RC5_DECODING : // Execution time is about 52 uS at 4 Mhz CPU clock
if ((time > 40) && (time < 120) && (RC5_received == 0))
{
if (time < 65) // обнаружен короткий импульс
{
RC5_shortPulses ++ ;
if (RC5_shortPulses == 2)
{
RC5_bits <<= 1; // сохраняем принятый бит
RC5_bits |= RC5_PrevBit;
RC5_bitCount ++ ;
RC5_shortPulses = 0;
}
} else if (time > 83){ // обнаружен длинный импульс
RC5_prevBit = 1- RC5_prevBit; // переключаем бит
RC5_bits <<= 1; // сохраняем принятый бит
RC5_bits |= RC5_PrevBit;
RC5_bitCount ++ ;
RC5_shortPulses = 0;
}

if (RC5_bitCount == 14)// если приняты все биты
{
//RC5_state = RC5_COMPLETED;
INTEDG_bit = 0; // следующее прерывание по спаду
cmd = (RC5_bits & 0b00111111) ;
RC5_received = 1 ;
T0IE_bit = 0; // отключить прерывания от TMR0
}
} else { // что-то не правильно с временами
RC5_state = RC5_IDLE; // начать сначала
INTEDG_bit = 0; // следующее прерывание по спаду
T0IE_bit = 0; // отключить прерывания от TMR0
}
break ;

/////////// ВСЕ БИТЫ ПРИНЯТЫ КОРРЕКТНО. Сохранение данных ///////////
/*case RC5_COMPLETED :
INTEDG_bit = 0; // следующее прерывание по спаду
toggle = ((RC5_bits>>11) & 0x01);
//IR.device = (RC5_bits>>6) & 0b00011111 ;
cmd = (RC5_bits & 0b00111111) ;
RC5_received = 1 ;
//RC5_state = RC5_IDLE ;
break ;*/
} // end switch
} // end INIF

// Прерывание TMR0
if (T0IF_bit) // Переполнение TMR0, тайм-аут
{
if ((RC5_state == RC5_DECODING) && (RC5_received == 0)) // что-то неправильно
{
RC5_state = RC5_IDLE; // начать с начала
INTEDG_bit = 0; // следующее прерывание по спаду
T0IE_bit = 0; // отключить прерывания TMR0
}
}
T0IF_bit = 0; // всегда сбрасывать флаг переполнения TMR0
} // конец обработчика прерывания
  Ответить с цитированием
Старый 11.04.2011, 19:02   #819   
КваДраНутыЙ
 
Аватар для VRTP
 
Сообщений: 1,435
Регистрация: 29.05.2010

VRTP вне форума Не в сети
Цитата:
Сообщение от Andrey T Посмотреть сообщение
Убрал последнее состояние стейт-машины, все работает как нужно. В итоге получился вот такой код:
Спасибо за такие комменты
МОЛОДЦА,удачи!
  Ответить с цитированием
Старый 12.04.2011, 07:19   #820   
Форумец
 
Сообщений: 7
Регистрация: 07.04.2011

Andrey T вне форума Не в сети
Цитата:
Сообщение от VRTP Посмотреть сообщение
Спасибо за такие комменты
МОЛОДЦА,удачи!
За комменты спасибо надо говорить petrd, это его код, я лишь доработал под себя.
  Ответить с цитированием
Старый 13.04.2011, 17:57   #821   
Мастер
 
Аватар для alarm801
 
Сообщений: 670
Регистрация: 12.12.2007
Возраст: 40

alarm801 вне форума Не в сети
Пытаюсь прошить pic18f252 вот этим программатором, пишет ошибку и всё. Читать читает, но не очищает! Что за х..ня??? Может кто нибудь подскажет???
Миниатюры
Нажмите на изображение для увеличения
Название: art2003-prog-top1.jpg
Просмотров: 13
Размер:	79.9 Кб
ID:	1261045  
  Ответить с цитированием
Старый 13.04.2011, 18:50   #822   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от alarm801 Посмотреть сообщение
Пытаюсь прошить pic18f252 вот этим программатором, пишет ошибку и всё. Читать читает, но не очищает! Что за х..ня??? Может кто нибудь подскажет???
Ваш программатор поддерживает только низковольтное программирование.
Если контроллер новый, то с завода он выходит с установленным битом конфигурации LVP, который разрешает низковольтовое программирование.
Если контроллер прошивался раньше или Вы с новья прошили его прошивкой со сброшенным в ней битом, то все, Ваш программатор ничего уже не сможет с ним сделать, для перепрограммирования нужен программатор с режимом высоковольтного программирования, чтобы снова установить бит LVP.
  Ответить с цитированием
Старый 13.04.2011, 19:50   #823   
Мастер
 
Аватар для alarm801
 
Сообщений: 670
Регистрация: 12.12.2007
Возраст: 40

alarm801 вне форума Не в сети
Подал внешнее питание при програмировании, вроде начал работать)))
  Ответить с цитированием
Старый 26.04.2011, 10:22   #824   
Форумец
 
Сообщений: 4
Регистрация: 29.03.2011

Вовка-Морковка вне форума Не в сети
Здравствуйте, petrd! Проиллюстрируйте, пожалуйста, на микроси для 16F628 работу компаратора, напряжение берём с переменного резистора а при сработке изменяется переменная (загорается светодиод).
  Ответить с цитированием
Старый 03.05.2011, 00:06   #825   
Форумец
 
Аватар для Butik
 
Сообщений: 36
Регистрация: 19.10.2010
Возраст: 57

Butik вне форума Не в сети
Вот небольшой пример на Си для 12F629- - это в общем заготовка для диммера с аналоговым входом- ну или для другого подобного устройства-суть не в этом для чего но тут используется компаратор с внутренним источником опорного напряжения.. Для 628 будет в принципе аналогично- там только два компаратора- вот и все.. Если что не так- то пардон- сам только учусь... Если что- пусть господа знатоки покритикуют

Код:
unsigned short t,old_GPIO;

void init() {
  CMCON  = 0x07;
  TRISIO   = 0x28;
  OPTION_REG = 0b11000101;
  INTCON.GIE        = 0;
   }

void main() {
init() ;
    do {
   old_GPIO = GPIO;
   if(old_GPIO.F5 == 1)
   {TRISIO =0x28;
   old_GPIO.F1 = 1;
   old_GPIO.F4 = 0;
   GPIO = old_GPIO;}

  if(old_GPIO.F5 == 0)
  {
  CMCON = 0x04;
  VRCON = 0xA3;
  TRISIO = 0x2A;
  TMR0 = 0;
  Delay_us(10);
  if(CMCON.F6==1){
  t = TMR0;
  old_GPIO.F4 =1;
  GPIO = old_GPIO;}
  }
    }  while(1);

}
Миниатюры
Нажмите на изображение для увеличения
Название: Документ1.jpg
Просмотров: 131
Размер:	11.3 Кб
ID:	1292017  
  Ответить с цитированием
Старый 04.05.2011, 19:50   #826   
КваДраНутыЙ
 
Аватар для VRTP
 
Сообщений: 1,435
Регистрация: 29.05.2010

VRTP вне форума Не в сети
Цитата:
Сообщение от Butik Посмотреть сообщение
Вот небольшой пример на Си для 12F629
Отличная штуковина,а комменты где?????Может на твоём примере многое почерпну.
Доведи дело до логического конца,буду благодарен.
  Ответить с цитированием
Старый 05.05.2011, 14:17   #827   
Форумец
 
Аватар для Butik
 
Сообщений: 36
Регистрация: 19.10.2010
Возраст: 57

Butik вне форума Не в сети
вот фрагмент с комментариями если что не понятно- идея там простая- из напряжения сети формируются импульсы частотой 100 герц, которые подаются на вход синхронизации. При положительной полуволне сетевого напряжения происходит заряд конденсатора, а при отрицательной - разряд конденсатора , фиксация состояния компаратора а также считывание состояния таймера TMR0.... Идея далеко не нова- фрагмент чисто учебный . За основу взят стандартный пример применения AN958 PIC 10F202,204 с официального сайта Microchip-
http://www.microchip.com/stellent/id...pnote=en021266
поищи в сети - там правда все на асемблере- вот я для развития и пытаюсь перевести подобное на Си плюс адаптировать для сети 50Гц а не 60 как в штатах

Код:
unsigned short t,old_GPIO;
  // НАЧАЛЬНАЯ ИНИЦИАЛИЗАЦИЯ
void init() {
  CMCON  = 0x07;   // все выводы контроллера-цифровые
  TRISIO   = 0x28; //выводы GPIO5,3-на ввод, остальные - на вывод
  OPTION_REG = 0b11000101;/* подтягивающие резисторы- выключены,
  активный фронт внешнего прерывания-передний,такиовый сигнал для таймера-
   внутренний. предделитель- перед TMR0, коэффициент деления- 1:64 */
  INTCON.GIE        = 0; //прерывания запрещены
   }

void main() {
init() ;  // НАЧАЛЬНАЯ ИНИЦИАЛИЗАЦИЯ
    do {
   old_GPIO = GPIO; // считывания состояния портов
   if(old_GPIO.F5 == 1)// если на входе синхронизации полуволна положительная
   {TRISIO =0x28; // то настраиваем GPIO,1 на вывод
   old_GPIO.F1 = 1;  // и выставляем на него лог 1 для зарядки конденсатора
   old_GPIO.F4 = 0; //  выключаем светодиод
   GPIO = old_GPIO;} //

  if(old_GPIO.F5 == 0) //  если на входе синхронизации полуволна положительная
  {
  CMCON = 0x04; // то конфигурируем компаратор с внутренним ИОН
  VRCON = 0xA3; //
  TRISIO = 0x2A;// настраиваем  GPIO,1  как аналоговый вход компаратора
  TMR0 = 0;     // сбрасываем таймер
  Delay_us(10);  // задержка 10мксек для установки режима компаратора
  if(CMCON.F6==1){  // ждем разряда конденсатора ниже напряжения ИОН
  t = TMR0;         // считываем показание таймера
  old_GPIO.F4 =1;   //  включаем светодиод
  GPIO = old_GPIO;}  //
  }
    }  while(1);   // бесконечный цикл

}
кстати- в сети где то читал- что существует перевод упомянотого AN958 на русский язык с адаптацией под 50гц, но опять же на ассемблере. Но пока не нашел. Впрочем описаний подобных устройств в сети немало Можно и готовое устройство подобрать если уж очень нужно
  Ответить с цитированием
Старый 05.05.2011, 17:29   #828   
КваДраНутыЙ
 
Аватар для VRTP
 
Сообщений: 1,435
Регистрация: 29.05.2010

VRTP вне форума Не в сети
Butik
Спасибо!
  Ответить с цитированием
Старый 05.05.2011, 20:04   #829   
Форумец
 
Сообщений: 4
Регистрация: 29.03.2011

Вовка-Морковка вне форума Не в сети
Спасибо, буду разбираться!
  Ответить с цитированием
Старый 11.05.2011, 20:26   #830   
Форумец
 
Сообщений: 4
Регистрация: 29.03.2011

Вовка-Морковка вне форума Не в сети
Здравствуйте, уважаемые форумчане!
Никто не пробовал подключать индикатор от убитого DVD к пику?
Там, вроде, I2C и пример в хелпе к микроси есть, но какой адрес устройства и
какие данные/команды посылать?
  Ответить с цитированием
Старый 13.05.2011, 17:10   #831   
Форумец
 
Сообщений: 7
Регистрация: 17.10.2009

_vka вне форума Не в сети
Всем привет!!!
Запустил GLCD WG240128 пишет , рисует , просто класс!!! Но вот проблема с меню ,не знаю как мне передать из одного пункта меню 3 значения. подскажите в каком направлении копать??? на форуме микрочипа нашел кусок меню написанный petrd
если есть возможность прокоментируйте как это работает, заранее спасибо
typedef struct typeMenu{
unsigned char *Name;
struct typeMenu *Prev;
struct typeMenu *Next;
struct typeMenu *Down;
struct typeMenu *Up;
unsigned char Flag: 1;
};

extern struct typeMenu Menu_0;
extern struct typeMenu Menu_1;
extern struct typeMenu Menu_2;
extern struct typeMenu Menu_3;
extern struct typeMenu Menu_4;
extern struct typeMenu Menu_4_1;

struct typeMenu Menu_0 ={"Menu_0", &Menu_4, &Menu_1, 0, 0, 0};
struct typeMenu Menu_1 ={"Menu_1", &Menu_0, &Menu_2, 0, 0, 0};
struct typeMenu Menu_2 ={"Menu_2", &Menu_1, &Menu_3, 0, 0, 0};
struct typeMenu Menu_3 ={"Menu_3", &Menu_2, &Menu_4, 0, 0, 0};
struct typeMenu Menu_4 ={"Menu_4", &Menu_3, &Menu_1, &Menu_4_1, 0, 0};
struct typeMenu Menu_4_1 ={"Menu_4_1", 0, 0, &Menu_4, 0, 0};
  Ответить с цитированием
Старый 31.05.2011, 20:37   #832   
Форумец
 
Аватар для UR5XCA
 
Сообщений: 13
Регистрация: 31.05.2011
Возраст: 33

UR5XCA вне форума Не в сети
Привет всем участникам форума , у меня есть проблема на счет програмирования в MicroC используя стандартный код для управления ЖКИ 16/2 я попробывал написать код бегущей строки вроде-бы все вышло решил добавить побольше текста вышла абракодабра какая-то причем она меняется при движении строки убрал пару знаков все стало нормально пробывал как в 4-х битном так и 8-ми не помогает
  Ответить с цитированием
Старый 31.05.2011, 20:52   #833   
Форумец
 
Аватар для UR5XCA
 
Сообщений: 13
Регистрация: 31.05.2011
Возраст: 33

UR5XCA вне форума Не в сети
В последствии я так понял что переполнен стек так как MicroC выдает ошибку и отказывается компилировать также пробывал просто выводить текст на индикатор при большом объеме тоже не хочет стало ясно что это проблема самого компилятора посоветуйте как выйти из этой ситуации строго не судите так как на си только учусь програмировать, а начинал с ассемблера
  Ответить с цитированием
Старый 31.05.2011, 21:23   #834   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Приведенная Вами информация - ни о чем не говорит. Код показывайте.
  Ответить с цитированием
Старый 31.05.2011, 22:08   #835   
Форумец
 
Аватар для UR5XCA
 
Сообщений: 13
Регистрация: 31.05.2011
Возраст: 33

UR5XCA вне форума Не в сети
char *text = "mikroElektronika";

void main() {
Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); // Lcd_Init_EP5, see Autocomplete

LCD_Cmd(LCD_CLEAR); // Clear display
LCD_Cmd(LCD_CURSOR_OFF); // Turn cursor off
LCD_Out(1,1, text); // Print text to LCD, 1st row, 1st column
Delay_ms(1000);
LCD_Out(2,6,"mikroE"); // Print text to LCD, 2nd row, 6th column
text = "RADIO AMATER UR5XCA";
LCD_Out(3,1,text);
LCD_Out(4,1,"RADIO AMATER UR5XCA");
Delay_ms(1000);
LCD_Cmd(LCD_CLEAR);
LCD_Cmd(LCD_CURSOR_OFF);
LCD_Out(5,2,"LIZUNOV KIRILL");
LCD_Out(6,1,"MY CALL UR5XCA");
LCD_Out(7,1,"123456");
}
  Ответить с цитированием
Старый 31.05.2011, 22:18   #836   
Форумец
 
Аватар для UR5XCA
 
Сообщений: 13
Регистрация: 31.05.2011
Возраст: 33

UR5XCA вне форума Не в сети
Это я немного добавил текста решил попробывать когда в последнем выходе на 7-ю строку оставляю один знак то код компилируется я так понял что MicroC для хранения информации выводимой на экран ЖКИ использует стек в моем примере на 16F877A в разделе статистика видно стеки с 0-го по 15-й если я использую много текста то в GPR после 15-го стека появляется lstr2_LCD Test и так далее.
  Ответить с цитированием
Старый 31.05.2011, 22:23   #837   
Форумец
 
Аватар для UR5XCA
 
Сообщений: 13
Регистрация: 31.05.2011
Возраст: 33

UR5XCA вне форума Не в сети
А еще после неудачной компиляции в окне Message Text появляется Const truncated lstr2_LCD но прошивка создается в режиме симуляции в Proteus могут отсутствовать некоторые строки вроде самые первые в компиляторе оно как-то заменяет ели писать больше текста то пропадет предыдущий написаный ранее.
  Ответить с цитированием
Старый 31.05.2011, 22:45   #838   
Форумец
 
Сообщений: 1,525
Регистрация: 19.02.2009
Возраст: 52
Записей в дневнике: 1

petrd вне форума Не в сети
Это не проблема компилятора, это проблема Ваших знаний языка Си и особенностей данного компилятора. Пока не пройдет компиляция без ошибок, на hex (coff) файлы нет никакого смысла смотреть и тем более их куда-то совать в симуляторы и прошивать ими контроллеры
Цитата:
char *text = "mikroElektronika";
Перевод с Си на более понятный - переменная text указывает на строку типа char, т.е. переменная text содержит адрес начала строки mikroElektronika (это будет адрес буквы m), а конец строки будет определяться терминальным нулем. Исходя из этого мне кажется, что запись
Цитата:
text = "RADIO AMATER UR5XCA"
не совсем правильная и проблемы связаны с ней.
Почитайте про указатели в Си и загляните в ассемблерный листинг - узнаете много интересного.
  Ответить с цитированием
Старый 31.05.2011, 22:59   #839   
Форумец
 
Аватар для UR5XCA
 
Сообщений: 13
Регистрация: 31.05.2011
Возраст: 33

UR5XCA вне форума Не в сети
Подскажите пожалуйста книжку или учебник по MicroC так как на си я никогда не програмировал этот код результат получаса разбирательств с компилятором до этого я сидел в MPlab5.7
  Ответить с цитированием
Старый 31.05.2011, 23:25   #840   
Форумец
 
Аватар для UR5XCA
 
Сообщений: 13
Регистрация: 31.05.2011
Возраст: 33

UR5XCA вне форума Не в сети
char;

void main() {
Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); // Lcd_Init_EP5, see Autocomplete

LCD_Cmd(LCD_CLEAR); // Clear display
LCD_Cmd(LCD_CURSOR_OFF); // Turn cursor off
LCD_Out(1,1,"abcdefg"); // Print text to LCD, 1st row, 1st column
Delay_ms(1000);
LCD_Out(2,6,"mikroE"); // Print text to LCD, 2nd row, 6th column

LCD_Out(3,1,"hklmnop");
LCD_Out(4,1,"RADIO AMATER UR5XCA");
Delay_ms(1000);
LCD_Cmd(LCD_CLEAR);
LCD_Cmd(LCD_CURSOR_OFF);
LCD_Out(5,2,"LIZUNOV KIRILL");
LCD_Out(6,1,"MY CALL UR5XCA");
LCD_Out(7,1,"123456");
Delay_ms(1000);
LCD_Cmd(LCD_CLEAR);
LCD_Cmd(LCD_CURSOR_OFF);
LCD_Out(1,2,"rstuw");

}
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind