Отговори на тема  [ 47 мнения ]  Отиди на страница Предишна  1, 2, 3, 4
PIC12F509 - написах код ама работи само на симулация 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Дек 17, 2019 5:51 pm
Мнения: 13
Мнение Re: PIC12F509 - написах код ама работи само на симулация
Благодаря на всички участници в темата. КОДА МИ ЗАРАБОТИ и проблема е разрешен!
Вероятната причина беше в CONFIG-a както спомена ToHu
И благодаряние на Stoimen за работещия HEX аз успях да копирам настройките на процесора и получих работещ моя първоначален код с леки изменения!
stefan63 помогна доста - да се разплета от кълчищата :lol:

На дадената схема, светодиодите са към Vcc, в експерименталното шаси са към GND, и входовете са GP5 и GP4, a изходите GP1,GP0, но в крайния вариант няма да има светодиоди изобщо, а ще се управляват 2 елемента от ИС CD4066.

Освен ако някой няма нещо да добави, може да считаме темата за успешно приключена!

Ето и пълния работещ код!
Код:
/*
PIC12F509 buttons to
rotary encoder truth table.
===========================
Count UP   OUTA  OUTB
===========================
<1.1> =     H  -  H
<1.2> =     L  -  H
<2.1> =     L  -  L
<2.2> =     H  -  L
===========================
Count DN   OUTA  OUTB
===========================
<1.1> =     H  -  H
<1.2> =     H  -  L
<2.1> =     L  -  L
<2.2> =     L  -  H
===========================
*/
// CONFIG
#include <pic.h>
__CONFIG(0x0FEA);
#define _XTAL_FREQ 4000000
#include <stdint.h>
#define UP GPIObits.GP5
#define DN GPIObits.GP4
unsigned int j;
#define loop4_ms 8  // 8 is number of loop iterations for 1 ms at 4 MHz

//**********functions****************



void pause_ms(unsigned int given_ms);               // pause_ms(n); function same as delay_ms(n);
int REP;        //Repeat cycle 'n' times
//**********mapping steps************

unsigned char const STEPS_MAP[4] = {0b11,0b10,0b00,0b01};
int step=0;

//main code
void main(void) {   
    TRIS   = 0b110000;          // Set GP0,GP1,GP2,GP3 as outputs, GP5, GP4 as input (0 => Output, 1 => input)
    GPIO   = 0b000000;        // Set GPIO = 0 for all outputs
   OPTION = 0b11000000;      //Set functions for MCU pins - 0xC0
 
do
     {
         if (UP)            //Check if switch  is closed
           {
             pause_ms(90);   //wait for 90ms  (switch debouncing)
             if (UP)         //Check if switch is still closed
                {
                 for(REP=0; REP<=1; REP++)        //Repeat steps until 'n'
               {
                GPIO = (STEPS_MAP[step]);     //Load current state
                pause_ms(250);                  //Pulse time
              step++;                        //Count +
              if (step>3)step=0;

               }
              REP;                //End REP

                }
           }

          else
             {
                 GPIO = (STEPS_MAP[step]);
             }
          if (DN)            //Check if switch  is closed
           {
             pause_ms(90);   //wait for 90ms  (switch debouncing)
             if (DN)         //Check if switch is still closed
                {
                  for(REP=0; REP<=1; REP++)
              {
               GPIO = (STEPS_MAP[step]);     //Load current state
               pause_ms(250);                  //Pulse time
                 step--;                        //Count -
                 if (step<0)step=3;
             }
                 REP;                //End REP
                }
           }
          else
             {
                 GPIO = (STEPS_MAP[step]);
             }
     }

   while(1);

}
//end main code

   void pause_ms( unsigned int given_ms ) {  // pause for given_ms milli seconds
   
   unsigned long j, max_time = given_ms * loop4_ms;
    for(j=0; j < max_time; j++);          // Make waiting for about given_ms msec

};


Вто Дек 24, 2019 11:14 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пон Дек 15, 2014 10:05 pm
Мнения: 324
Мнение Re: PIC12F509 - написах код ама работи само на симулация
Не знам дали е от copy-paste или наистина така е написан кода (говоря за отстоянията), ама създаде нов тип подредба - миш-маш. Подравни ги малко редовете, че така като му хвърля едно око отдалеч и все едно гледам онези README файлове , в които авторът прави някакви изображения от символи (# @ ! ; /\ и т.н).


Вто Яну 14, 2020 8:17 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 47 мнения ]  Отиди на страница Предишна  1, 2, 3, 4

Кой е на линия

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


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

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