Отговори на тема  [ 143 мнения ]  Отиди на страница Предишна  1 ... 6, 7, 8, 9, 10
:: ВЪПРОСИТЕ НА DARKSHY :: 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен

Регистриран на: Съб Ное 28, 2009 5:50 am
Мнения: 391
Местоположение: Варна
Мнение 
Още снимки..


Прикачени файлове:
2.JPG
2.JPG [ 150.62 KiB | Прегледано 1009 пъти ]
`.JPG
`.JPG [ 150.55 KiB | Прегледано 995 пъти ]

_________________
Ангел Димитров 95
Пет Апр 02, 2010 6:22 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение 
Изцяло от грижа за здравето ти те моля да оставиш за момент литиевите батерии на страна. Не са един и двама останалите без съществени части от тялото си поради взрив на тези батерии. Има време за всичко, недей да избързваш...


Съб Апр 03, 2010 10:28 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Съб Ное 28, 2009 5:50 am
Мнения: 391
Местоположение: Варна
Мнение 
:)

Първият ми въпрос от 2011:

Как е по-добре:
Така:
Код:
#include <main.h>
#include <stdio.h>
#include "flex_lcd.c"

#define BUTTONS_COUNTER_MAX 1
#define LCD_COUNTER_MAX 50

unsigned int buttons_counter=0;
unsigned int lcd_counter=0;

volatile unsigned char buttons_go=FALSE;
volatile unsigned char lcd_go=FALSE;

#define NUM_ITEMS_IN_MENU 4

const char menu[NUM_ITEMS_IN_MENU][16] = { "SAY ACHKA",
                           "SAY 4040",
                           "TURN ON LED",
                           "TURN OFF LED" };
unsigned int index=0;

#int_TIMER1
void  TIMER1_isr(void)
{
   disable_interrupts(GLOBAL);
   
   buttons_counter++;
   if (buttons_counter==BUTTONS_COUNTER_MAX)
   {
         buttons_counter=0;
         buttons_go=TRUE;
   }
   
   lcd_counter++;
   if (lcd_counter==LCD_COUNTER_MAX)
   {
         lcd_counter=0;
         lcd_go=TRUE;
   }
   
   clear_interrupt(int_timer1);
   enable_interrupts(GLOBAL);
}

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_ccp1(CCP_OFF);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);

   set_tris_d(0xFF);
   lcd_init();

   while(1)
   {
      if(lcd_go)
      {
         disable_interrupts(GLOBAL);
         lcd_go=FALSE;
         
         printf(lcd_putc,"\fMENU\n%s",menu[index]);
         
         enable_interrupts(GLOBAL);
      }
      else if(buttons_go)
      {
         disable_interrupts(GLOBAL);
         buttons_go=FALSE;
         
         if(!input(LEFT))
         {
            delay_ms(100);
            if(!input(LEFT))
            {
               if(index==0)
                  index=NUM_ITEMS_IN_MENU-1;
               else
                  index-=1;
            }
         }
         
         if(!input(OK))
         {
            delay_ms(100);
            if(!input(OK))
            {
               printf(lcd_putc,"\f%s",menu[index]);
               delay_ms(2000);
            }
         }
         
         if(!input(RIGHT))
         {
            delay_ms(100);
            if(!input(RIGHT))
            {
               if(index==NUM_ITEMS_IN_MENU-1)
                  index=0;
               else
                  index+=1;
            }
         }
         
         enable_interrupts(GLOBAL);
      }
      else
      {
         delay_cycles(1);
      }
   }

}


или така:
Код:
#include <main.h>
#include <stdio.h>
#include "flex_lcd.c"

#define BUTTONS_COUNTER_MAX 1
#define LCD_COUNTER_MAX 50

unsigned int buttons_counter=0;
unsigned int lcd_counter=0;

volatile unsigned char buttons_go=FALSE;
volatile unsigned char lcd_go=FALSE;

#define NUM_ITEMS_IN_MENU 4

const char menu[NUM_ITEMS_IN_MENU][16] = { "SAY ACHKA",
                           "SAY 4040",
                           "TURN ON LED",
                           "TURN OFF LED" };
unsigned int index=0;

#int_TIMER1
void  TIMER1_isr(void)
{
   disable_interrupts(GLOBAL);
   
   buttons_counter++;
   if (buttons_counter==BUTTONS_COUNTER_MAX)
   {
         buttons_counter=0;
         buttons_go=TRUE;
   }
   
   lcd_counter++;
   if (lcd_counter==LCD_COUNTER_MAX)
   {
         lcd_counter=0;
         lcd_go=TRUE;
   }
   
   clear_interrupt(int_timer1);
   enable_interrupts(GLOBAL);
}

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_ccp1(CCP_OFF);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);

   set_tris_d(0xFF);
   lcd_init();

   while(1)
   {
      if(lcd_go)
      {
         lcd_go=FALSE;
         
         printf(lcd_putc,"\fMENU\n%s",menu[index]);
      }
      else if(buttons_go)
      {
         buttons_go=FALSE;
         
         if(!input(LEFT))
         {
            delay_ms(100);
            if(!input(LEFT))
            {
               if(index==0)
                  index=NUM_ITEMS_IN_MENU-1;
               else
                  index-=1;
            }
         }
         
         if(!input(OK))
         {
            delay_ms(100);
            if(!input(OK))
            {
               printf(lcd_putc,"\f%s",menu[index]);
               delay_ms(2000);
            }
         }
         
         if(!input(RIGHT))
         {
            delay_ms(100);
            if(!input(RIGHT))
            {
               if(index==NUM_ITEMS_IN_MENU-1)
                  index=0;
               else
                  index+=1;
            }
         }
      }
      else
      {
         delay_cycles(1);
      }
   }

}

_________________
Ангел Димитров 95


Пон Яну 10, 2011 12:43 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Най-добре е да постнеш пак през 2012-та.


Пон Яну 10, 2011 1:21 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Съб Ное 28, 2009 5:50 am
Мнения: 391
Местоположение: Варна
Мнение 
woody написа:
Най-добре е да постнеш пак през 2012-та.
Тогава да не кажеш "през 2013"?! :)

_________________
Ангел Димитров 95


Чет Яну 13, 2011 6:13 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Не, защото по планове 2012-та ще решим всички инжинерни проблеми.


Пет Яну 14, 2011 1:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение 
woody написа:
Не, защото по планове 2012-та ще решим всички инжинерни проблеми.

А граматичните проблеми ще ги решим през 2013-та, май....

_________________
Хайде де!


Пет Яну 14, 2011 5:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
По-скоро правописните, но да - прав си. Прекаленото ползване на английски ми се е отразило.
Грешки сме, хора правим.


Съб Яну 15, 2011 4:18 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 143 мнения ]  Отиди на страница Предишна  1 ... 6, 7, 8, 9, 10

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни