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

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

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

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

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

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

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

 
Опции темы

Простенький проект на PIC12F683 (MicroC PIC v8.2.0.0.) - HELP!

Непрочитано 02.04.2010, 22:36  
Alex_NEMO
Частый гость
 
Регистрация: 04.03.2005
Сообщений: 36
Сказал спасибо: 264
Сказали Спасибо 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.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 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
Сказал спасибо: 264
Сказали Спасибо 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, время: 13:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.