Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 02.04.2010, 22:36  
Alex_NEMO
Частый гость
 
Регистрация: 04.03.2005
Сообщений: 36
Сказал спасибо: 238
Сказали Спасибо 34 раз(а) в 8 сообщении(ях)
Alex_NEMO на пути к лучшему
Вопрос Простенький проект на PIC12F683 (MicroC PIC v8.2.0.0.) - HELP!

Мужики, помогите - что-то туго мне программированеи контроллеров дается, на элементарном туплю...
Не получается по каждому нажатию менять "картинку" на индикаторе, и то что находится в switch/case... Ткните носом - где "накосячил".
Ещё вопрос - как сделать что бы после "не нажимания" кнопок секунд 10 (типа - закончили выбор) сохранить "выбор" в EEPROM, что бы при след. включении cчитать и "применить" это значение? Понимаю что надо использовать таймер, вопрос как? Если можно - конкретный пример.
Код:
////////////////////////////////////////////////////////////
//                                                        //
// КОНТРОЛЛЕР PIC12F683  (внутренний генератор 4Mhz)      //
//                                                        //
////////////////////////////////////////////////////////////

#define REG_PIN_DATA  GPIO.F4 // DATA 4094/74xx164
#define REG_PIN_CLK   GPIO.F5 // CLK  4094/74xx164
#define sw            GPIO.F3 // Button In

#define RESET         GPIO.F0

#define REG_DATA_ON   REG_PIN_DATA = 1;
#define REG_DATA_OFF  REG_PIN_DATA = 0;
#define REG_CLK  {REG_PIN_CLK = 1; asm nop; asm nop; REG_PIN_CLK = 0;}

unsigned short zz, oldstate;

// unsigned char digs[5]={0x3F, 0x06, 0x5B, 0x4F, 0x00}; // Общ. катод
unsigned char digs[5]= {0xC0, 0xF9, 0xA4, 0xB0, 0xFF}; // Общ. анод

void Register(char tmp)   // Процедура загрузки в регистр
{
  char i, dig;

  dig = digs[tmp];
  for(i=8; i›0; i--)
    {

      if(dig & 0x80)
        {
          REG_DATA_ON
        }
      else
        {
          REG_DATA_OFF
        }

      dig ‹‹=1;
      REG_CLK
    }
}

void Register_init(void)  // Процедура иниц. регистра
{
  char i;

  for(i=0; i‹8; i++)
    {
      REG_DATA_OFF;
      REG_CLK
    }
}

void SW(void)
{
//              zz++;
//              if (zz › 3) zz = 0;
              switch (zz)  {
                case 0:
                {
                  Register(0);
                  break;
                }
                case 1:
                {
                  Register(1);
                  break;
                }
                case 2:
                {
                  Register(2);
                  break;
                }
                case 3:
                {
                  Register(3);
                  break;
                }
                default : Register(4);
                }
}

void main()
{

  GPIO = 0;

  CMCON0 = 0b00000111;
  ANSEL  = 0b00000000;
  TRISIO = 0b00001000;

  do
    {
      Register(4);
      zz = 0;
  if (Button(&GPIO, 3, 10, 0)) oldstate = 1;
  if (oldstate && Button(&GPIO, 3, 10, 1))
    {
              zz++;
              if (zz › 3) zz = 0;
              SW();
              RESET = 1;
              Delay_ms(500);
              RESET = 0;
              oldstate = 0;
            }
    }
  while (1);
}
Проект с исходником во вложении, и схема в Протеусе.
Вложения:
Тип файла: zip My_proj.zip (17.7 Кб, 101 просмотров)
Реклама:

Последний раз редактировалось Alex_NEMO; 02.04.2010 в 22:45.
Alex_NEMO вне форума  
Непрочитано 03.04.2010, 00:30  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Простенький проект на PIC12F683 (MicroC PIC v8.2.0.0.) - HELP!

Сообщение от Alex_NEMO Посмотреть сообщение
Ещё вопрос - как сделать что бы после "не нажимания" кнопок секунд 10 (типа - закончили выбор) сохранить "выбор" в EEPROM, что бы при след. включении cчитать и "применить" это значение?
А шо там непанятна? просто как двери...

Организовываем счётчик на 10 секунд... и считаем его на уменьшение. Когда нажимаются клавиши то в счётчик опять записываем 10 секунд... когда клавиши не жмём и счётчик таки досчитает до "0", запускаем запись в ЕЕПРОМ...

вы сначала АЛГОРИТМ проработайте... кна бумаге.. с квадратиками с ромбиками... очень но помогает по началу... а потому же пишите...
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 03.04.2010 в 00:32.
picavr вне форума  
Непрочитано 05.04.2010, 13:10  
Alex_NEMO
Частый гость
 
Регистрация: 04.03.2005
Сообщений: 36
Сказал спасибо: 238
Сказали Спасибо 34 раз(а) в 8 сообщении(ях)
Alex_NEMO на пути к лучшему
Восклицание Re: Простенький проект на PIC12F683 (MicroC PIC v8.2.0.0.) - HELP!

Сообщение от picavr Посмотреть сообщение
вы сначала АЛГОРИТМ проработайте... кна бумаге.. с квадратиками с ромбиками... очень но помогает по началу... а потому же пишите...
picavr, большое спасибо за наводку! "Проанализировал" код с помощью проги Code Visualizer - сразу понял, где "косяк"! Оказывается, я сам обнулял переменную "zz" в самом начале бесконечного цикла и выводил на индикатор "3".
перенес строки:
Код:
  Register(4);
  zz = 0;
в облась инициализации/объявления переменных - все запахало как надо!
Бум дальше с EEPROM разбираться и со счетчиком!
Alex_NEMO вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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


Часовой пояс GMT +4, время: 07:15.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot