Author Topic: Дали сте за: Скратен курс за учење како да програмирате PIC- микроконтролер ?  (Read 10379 times)

Offline DX-er

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 6340
  • Gender: Male
    • Докажи дека си човек и речи стоп за убиствата на бебиња! Ако не си човек, требало и тебе да те абортираат :)
Како што кажува насловот, гласајте на анкетата дали сте за вакво нешто.
Чувството кога некој ограничен со размислувањето ке зборува за двојни стандарди/демократија/правила... бљак...

кликни тука за инфо околу форумот.

Offline bicikle

  • Топ Експерт
  • *****
  • Posts: 4080
  • Gender: Male
of corse!  Веќе  имаше неколку барања во општи муаети како од мене  така и од други членови, биб ило многу корисно, може и цел курс, секако доколку се најде.

Offline gladiator

  • Стручњак
  • ***
  • Posts: 253
  • Gender: Male
па тоа царе со нетрпение го чекам  ;D кога ке почнеме?

Offline DX-er

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 6340
  • Gender: Male
    • Докажи дека си човек и речи стоп за убиствата на бебиња! Ако не си човек, требало и тебе да те абортираат :)
Јас како почетник во оваа област ке ја започнам темата со моето скромно знаење, ке почнам со нај користениот микроконтролер PIC16F84A 04 кој има внатрешен осцилатор и кристална 4MHz кој никогаш не се користи и секогаш мора да се стави надворешен кристал со истата фрекфенција. Овој пик има 18 нозе од кој 13 може да се искористат како I/O (тоа се влезно-излезни порти). Поседува флеш меморија од 1024. RAM меморија од 64 бајти. Според производителот самиот пик може да се програмира и брише до 1000 пати а податоците да се чуваат 40 години (вероватно после се бришат па треба пак да се програмира) Пикот поседува и EEPROM меморија ок 64 бајти и која може да се програмира и брише  1 000 000 пати и податоците да бидат безбедни 40 години. Процесотор на овој пик е од 0 до 20MHz како и кај повекето пикови од сличен тип. Постои и STAK од 8 нивоа.  Работната волтажа му е од 2 до 6 волти а потрошувачката е 2mA при напон од 5 волти и такт од 4MHz. Овој микроконтролер поддржува и SLEEP мод кој заштедува на потрошувачка на ел. Струја. Архитектурата е RISC  тип (reduced instruction set) а тоа значи дека има мал број на инструкции кои може да ги заврши (35) но сепак се извршуваат максимално брзо.

Еве и мало објаснување околу пиновите на пикот

Пин 1 = RA2 I/O порта  A, TTL тип.

Пин 2 = RA3 I/O порта  A, TTL тип.

Пин 3 = RA4 I/O порта  A, TTL тип. Служи и за влез на TMRO бројачот (еј што добро име TMRO) Каде е I а пак ST тип (schmitt trigger) кога е 0 а тогаш е open drain

Пин 4 = MCLR (инвертиран MCLR, се пише и како -MCLR), ресет пин (ресет кога е на најниско ниво) или се донесе напон за програмирање.

Пин 5 = маса од напојување

Пин 6 = RB0/INT, I/O порта B, TTL/ST

Пин 7 = RB1, I/O порта B, TTL тип

Пин 8 = RB2, I/O порта B, TTL тип

Пин 9 = RB3, I/O порта B, TTL тип

Пин 10 = RB4, I/O порта B, прекинувач при промена на ниво, TTL тип

Пин 11 = RB5, I/O порта B, прекинува при променливи нивоа, TTL тип

Пин 12 = RB6, I/O порта  B прекинува при променливи нивоа, такт при програмирање, TTL/ST (ST при програмирање).

Пин 13 = RB7, I/O порта  B, прекинува при променливи нивоа, такт при програмирање, TTL/ST (ST при програмирање).

Пин 14 = плусот од напојувањето

Пин15 = OSC2/CLKOUT, се спојува на еден крај од кристалот, ако па користи RC осцилатор, на овој пин се појавува 1/4 фрекфенција на осцилаторот.

Пин 16 = OSC1/CLKIN, се спојува на еден крај од кристалот, илиRC, или се носи спојни такт, ST/CMOS тип (ST кај RC осцилаторот ).

Пин 17 =  RA0, I/O порта A, TTL тип
.
Пин 18 = RA1, I/O порта A, TTL тип

Следи опис на специјалните функции. Нека се надоврзат поискусните.
Чувството кога некој ограничен со размислувањето ке зборува за двојни стандарди/демократија/правила... бљак...

кликни тука за инфо околу форумот.

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
Еве една програма во PICBasic,за нејзина реализација се користи ЛЦД екран 2*16,микроконтролер PIC16F84A,3 диоди и 3 тастери.Овој програм служи како пример и прикажува на ЛЦД екранот,кој тастер е притиснат.
Code: [Select]
DEFINE  LCD_DREG    PORTB           'izbor na koja porta ke bide priklucen LCD displejot,na PORTB
DEFINE  LCD_DBIT     0                    'izbor na koi pinovi ke bide priklucen displejot
DEFINE  LCD_RSREG  PORTB 
DEFINE  LCD_RSBIT   4                 'RS pinot ke bide priklucen na porta B odnosno pin 4
DEFINE  LCD_EREG    PORTB
DEFINE  LCD_EBIT     5                 'E(enable) pinot ke bide priklucen na porta B odnosno pin5
DEFINE  LCD_BITS     4                 'kolku magistrali koristi ovoj LCD ekran od mikrokontrolerot(4)
DEFINE  LCD_LINES   2                 'kolku liniski e ovoj LCD displej
DEFINE  OSC 4                                 'izbor na oscilator od 4MHz
 
TRISA = %00000111                        'izbro na I\O pinovi na portA
TRISB = %00000000                        'izbor na I\O pinovi na portB

           W1 Var byte                          'promenliva za naredbata BUTTON
           Symbol L3 = PORTA.5            'novo ime za PORTA.5(LED DIODA3)
           Symbol L2 = PORTA.4            'novo ime za PORTA.4(LED DIODA2)
           Symbol L1 = PORTA.3            'novo ime za PORTA.3(LED DIODA1)
           Symbol T1 = PORTA.2            'novo ime za PORTA.2(TASTER1)
           Symbol T2 = PORTA.1            'novo ime za PORTA.1(TASTER2)
           Symbol T3 = PORTA.0            'novo ime za PORTA.0(TASTER3)
           
 
           Lcdout $fe, 1,   " Primer so LCD displej"  'izbrisi LCD displej i prikazi PRIMER SO LCD DISPLEJ
   Pause 2000                                             'pauza od 2 sekundi
                                                       
Main:
           PORTA = $00                                            'stavi gi na "0" celata PORTA     

           W1 = 0                                                     'stavi go na "0" promenlivata W1
           button T1,0,255,0,W1,1,Tekst1               'BUTTON komanda,ako e pritisnat tasterot ripni na TEKST1
           
           W1 = 0                                                    'stavi  ja na "0" promenlivata W1
           button T2,0,255,0,W1,1,Tekst2              'BUTTON komanda,ako e pritisnat tasterot ripni na TEKST2
           
           W1 = 0                                                    'stavi ja na "0" promenlivata W1 
           button T3,0,255,0,W1,1,Tekst3              'BUTTON  komanda,ako e pritisnat tasterot ripni na TEKST3
           
           Goto Main                                                'vrati se na Main


Tekst1:                                                        'tekst 1 
       L1 = 1                                           'kreni na "1" L1 
               Lcdout $fe, $C0, "Pritisnat e T1"  'ispisi na LCD displejot PRITISNAT E T1
       Pause 2000                                  'pauza od 2 sek.
               L1 = 0                                           ' spusti na "0" L1
               Return                                          'vrati se


Tekst2:                                                         'tekst 2
       L2 = 1                                            'kreni na "1" L2
               Lcdout $fe, $C0, "Pritisnat e T2"   'ispisi na LCD displejot PRTITSNAT E T2
       Pause 2000                                   'pauza od 2 sek.
               L2 = 0                                            'spusti na "0" L2
               Return                                           'vrati se


Tekst3:                                                          'tekst 3
               L3 = 1                                             'kreni na "1" L3
       Lcdout $fe, $C0, "Pritisnat e T3"    'ispisi na LCD displejot PRITISNAT E T3
       Pause 2000                                    'pauza od 2 sek.
               L3 = 0                                             'spusti na "0" L3
               Return                                            'vrati se
                         
           End                                                     'kraj na programata
овој код исто така може да се употреби со друг микроконтролер како 628А,627 итн.
Неговата функција е,кога ќе се притисне одреден тастер,на ЛЦД екранот ќе се прикаже
кој тастер е притиснат и соодветна диода ќе се вклучи и по 2 секунди ќе се исклучи.

Offline DX-er

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 6340
  • Gender: Male
    • Докажи дека си човек и речи стоп за убиствата на бебиња! Ако не си човек, требало и тебе да те абортираат :)
Сколс и другите членови кои знаат да програмираат, може ли да направиме мал туторијал за програмирање? Во некој од програмите, дали микро Ц, дали асемблер или микробејзик..
Потоа ставете линк со програмата во која програмирате и линк од конвертор во HEX.
Чувството кога некој ограничен со размислувањето ке зборува за двојни стандарди/демократија/правила... бљак...

кликни тука за инфо околу форумот.

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
може,но некако да биде во оваа тема,да се смени насловот.Или вие како сакате.Ја имам полно примерчиња од кои учам.Па нема да ми биде тешко да споделам тука.Како што имаат другите форуми,зошто да нема и овој форум?! ;) ;D ;D

Offline Devil

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

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

Offline DX-er

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 6340
  • Gender: Male
    • Докажи дека си човек и речи стоп за убиствата на бебиња! Ако не си човек, требало и тебе да те абортираат :)
може,но некако да биде во оваа тема,да се смени насловот.Или вие како сакате.Ја имам полно примерчиња од кои учам.Па нема да ми биде тешко да споделам тука.Како што имаат другите форуми,зошто да нема и овој форум?! ;) ;D ;D
Супер, сподели со нас бидејки има повекемина заинтересирани што гласале дека сакаат да учат. Да наслковот ке го смениме, само нека остане уште некој ден заради анкетата, да ги асоцира лугето на анкетата а после ке го смениме.

Епа отворете една нова тема во овај дел на форумот
кај што ќе давате точни кодови (доколку има шема и шема ) со коментар се разбира на кодот да има (обавезно ова инаку не се прифаќа :))
и кратко објаснување што треба да прави
не мора да се некој сложени кодови, јас сум малку зафатен моментало ама кога ќе имам можност и јас нешто ќе напишам ;D
Важи, кога можеш пиши:)
Чувството кога некој ограничен со размислувањето ке зборува за двојни стандарди/демократија/правила... бљак...

кликни тука за инфо околу форумот.

Offline Devil

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

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

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
PICBASIC.Еве сега за да започнеме да пишуваме програма во програмскиот јазик PICBasic потребно е да имате софтверски и хардверски дел.За софтверскиот дел потребно е да имате некој компјутер,пентиум 3.На него ќе ги инсталирате следниве програми:MicroCode studio,MPLAB и некој програматор,јас го користам PICFLASH од микроелектроника.Од страна на хардверот треба да се има програматор,тој може да биде познатиот развоен системEasy PIC6,5....или пак некој JDM програматор.Исто така некоја околина на која што можете да ги тестирате функциите кои што претходно сте ги програмирале во микроконтролерот.
Претходниот код е во PICBasic компајлерот,тој код треба да го копирате во MicroCode Studio програмата и да го компајлирате кодот во готов хекс фајл.Во следните постови ќе биде прикажано како да се започне да се програмира,пишување на програм и компајлирање на кодот во готов хекс,одтаму програмирање и тестирање. :D

Offline DX-er

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 6340
  • Gender: Male
    • Докажи дека си човек и речи стоп за убиствата на бебиња! Ако не си човек, требало и тебе да те абортираат :)
На адреса 00h се наоѓа регистер со име INDF; тоа не е физички регистер, користат за индиректни адресни во врска со регистерот  SFR за индиректно адресирање
01h - TMR0, 8-bitni тајмер / RTC
02h - PCL, ниски бајт на PC (програма бројач)
03h - STATUSСодржи битови кои укажуваат на состојбата на аритметичко-логички уред (ALU), ресетирање статус и битови за адресирање на повисоки локации на RAM меморија.
04h - FSR, индикатор за индиректно адресирање на RAM меморија
05h – PORTA Тоа се, всушност, пинови на порта А
06h - PORTB, , пинови на порта B
07h – не се користи
08h - EEDATA, Податоци во Регистарот  на EEPROM
09h - EEADR, регистер на адреси на EEPROM
0Ah - PCLATH, висок бајт на PC
0Bh – INTCON Регистарот за контрола на прекинувајње
80h - INDF, исто како и 00h
81h - OPTION, управувачки  регистер за прескалер, надворешен прекинувач, TMR0 i pull- up отпорници на портата B Б
82h - PCL, како и 02h
83h - STATUS, како и 03h
84h - FSR, како и 04h
85h - TRISA, регистар за дефинирање на насоката (влез или излез) пинот на портот А
86h - TRISB, регистар за дефинирање на насоката на пинот на портот B
87h - Не се користи
88h - EECON1, контрола на регистарот за работа со EEPROM-om
89h - EECON2, втора контрола со регистрирате (не е физички регистар)
8Ah - PCLATH, како и 0Ah
8Bh - INTCON, како и 0BH
Чувството кога некој ограничен со размислувањето ке зборува за двојни стандарди/демократија/правила... бљак...

кликни тука за инфо околу форумот.

Offline gladiator

  • Стручњак
  • ***
  • Posts: 253
  • Gender: Male
од каде можам за ги спуштам потребните програми за PICBASIC програмскиот јазик ?

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
утре,сабајле ќе поставам линк,од каде што може се да се симне.
И нова програма ќе поставам за ЛЕД диоди,може и за што било.

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
имате за PICBASIC бесплатна програма Swordfish BASIC се вика, плус го поддржува PicKit 2 програматорот
а се останато е исто
Jас не сум себичен, помагам. Помагај и ти !

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