Author Topic: Туторијал за програмирање во mikroBasic PRO for PIC  (Read 8788 times)

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: Туторијал за програмирање во mikroBasic PRO for PIC
« Reply #75 on 23.04.2012, Monday, 21:01:48 (Edited 23.04.2012, Monday, 21:22:04) »
како хероглифи ти ги вади ?
пошто пишувани се со кирилична поддршка мене без проблем ми ги отвора :)
ај ќе видам што можам да направам за да го средам проблемот

го поставив во пдф кодот во темата, мислам дека тој нема да прави проблеми со јазикот во коментарите :)
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: Туторијал за програмирање во mikroBasic PRO for PIC
« Reply #76 on 01.12.2012, Saturday, 17:40:20 (Edited 01.12.2012, Saturday, 17:59:29) »
Има некој идеа околу кодов ?
ми вади проблем со знакчето < , а ми треба да споредам две ситуаци, ако едната постигне вредност помала од другата да се зголеми за да се изврши друга операција :D
(разгледај го кодот ќе ти стане јасно)

Code: [Select]
dim redica as char[10]
dim px as char
dim jx as char
dim sx as char
dim ix as char
dim still as char
dim n as byte
'***Движење***
sub structure skrol(dim a as char, dim b as char, dim c as char, dim d as char, dim e as char)
dim count as short
count=6
 while (count>0)
    redica[0]= not a
    a=b b=c c=d d=e e=255
    reset_shift()
   for (sx=0 to sx<still sx++)      <------------- Овде појаву проблем и сегде кај што е < знакот
     for (ix=0 to ix<0 ix++)
         px=1
          for (jx=0 to jx<9 jx++)
           PORTB= not (array[ix] and (px)
           delay_ms(.1)
           px<<=1
           end for
      clock()
      end for
   end for
  for (ix=9 to ix>0 ix--)
     array[ix]=array[ix-1]
   end for
  count--
 wend
end sub
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Zan

  • Експерт
  • ****
  • Posts: 883
Кодот е многу лошо преведен од C. Можеби ако го поставиш оригиналниот код, некој ќе може да го преведе подобро.
Жан

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
еве го оригиналниот :D
Code: [Select]
char array[10],p,j,s,i,still;
void clock(){ RB6=1;RB6=0;}
void reset(){ RB7=1;RB7=0;}
void scroll(char a,char b,char c,char d,char e)            //display function //
{
    short int count=6;
    while(count>0)
    {
        array[0]=~a;
        a=b;b=c;c=d;d=e;e=255;
        reset();
        for(s=0;s<still;s++)
        {
            for(i=0;i<10;i++)
            {
                p=1;
                for(j=0;j<9;j++)
                {
                    PORTD=~(array[i]&(p));__delay_ms(.1);p<<=1;
                }
                clock();
            }
        }
        for(i=9;i>0;i--)
        {
            array[i]=array[i-1];
        }
        count--;
    }
}
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Zan

  • Експерт
  • ****
  • Posts: 883
Еве пробав да преведам иако не го познавам баш најдобро C јазикот. Вака како што е, кодот се компајлира , но не знам дали ќе работи. Можеби има грешки.

Code: [Select]
'char array[10],p,j,s,i,still;
dim MyArray as char[10]
dim p as char
dim j as char
dim s as char
dim i as char
dim still as char



'void clock(){ RB6=1;RB6=0;}
sub procedure clock
    PORTB.6 = 1
    PORTB.6 = 0
end sub



'void reset(){ RB7=1;RB7=0;}
sub procedure MyReset
    PORTB.7 = 1
    PORTB.7 = 0
end sub


'void scroll(char a,char b,char c,char d,char e)            '//display function //
sub procedure scroll(dim a, b, c, d, e as char)


'{
    'short int count=6;
    dim count as integer
    count = 6
   
    while(count > 0)
    '{
        'array[0]=~a;
        MyArray[0] = Not(a)
        'a=b;b=c;c=d;d=e;e=255;
        a = 255
        b = 255
        c = 255
        d = 255
        e = 255
       
        'reset();
        MyReset
       
       
        'for(s=0;s<still;s++)
        while s < still
        '{
            s = s + 1
       
            'for)i=0;i<10;i++)
            for i = 0 to 9
            '{
                p = 1
                'for(j=0;j<9;j++)
                for j = 0 to 8
                '{
                    'PORTD=~(array[i]&(p));__delay_ms(.1);p<<=1;
                    PORTA = Not(MyArray[i] and p)   ' <-- go kompajlirav za 16F628A kojsto nema PORTD
                    Delay_us(100)
                    p = p << 1
                '}
                next j
                'clock();
                clock
            '}
            next i
        '}
       
        wend
       
        'for(i=9;i>0;i--)
        for i = 9 to 0 step -1
        '{
            'array[i]=array[i-1];
            MyArray[i] = MyArray[i - 1]
        '}
        next i
        'count--;
        count = count -1
    '}
    wend
'}
end sub
Жан

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
сега ќе го пробам, ако е ок, ќе има видео што поточно прави, ако не е ОК, ќе барам кај нечини да го едитирам :D
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Zan

  • Експерт
  • ****
  • Posts: 883
Секаде каде што има дефинирано "char" во кодот, пробај да ствиш "byte". Мислам дека повеќе ќе одговара.
Жан

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
не сака да работи тоа што треба, ми дава некој чудни скролања само :D

треба да си ја преиспитам малку конфигурацијата на склопов :D
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Zan

  • Експерт
  • ****
  • Posts: 883
Може линк до проектот, да видиме за што се работи  ;D
Жан

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
нема линк, составувам од повеќе делови мое
еве ако те интересира како изгледа мојот код, се составив уште за движењето, тоа го позајмувам од повеќе делови ама некако не може да се вклопи нај нај :D

морав во html формат да ја ставам, оти ми се губат коментарите инаку :D, не дека се важни нешто ама по средена изгледа вака :D
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Zan

  • Експерт
  • ****
  • Posts: 883
Кој PIC го користиш и како го тестираш кодот, дали имаш хардвер или во симулатор? Не е лошо да поствиш и шема од уредот или објаснување што има поврзано на PIC-от. Претпоставувам дека има некое коло shift register и LED диоди.
Жан

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
користам 16F887 со шифт регистар и лед матричен дисплеј во атачмент е од proteus симулацијата, само малку ми е измешана не ми е баш нај нај исцртана оти незнам точно како работи дисплејот, односно не знам која нога шо му е, знам како работи, ама некако чудно ми се поврзани диодиве :D
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Zan

  • Експерт
  • ****
  • Posts: 883
Пробав да направам нешто, но не ми успеа  :'( Мислам дека симулаторот не може добро да ја прикаже матрицата. Подобро би било да се експериментира со вистински хардвер.
Жан

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
и јас на тоа се мислев, ќе видам ова кинезиве што ќе речат, барав некој матрици па да видиме што како, друго се имам :D
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!