Fórum témák

» Több friss téma
Cikkek » Nulláról a robotokig - PIC Mikrovezérlők I rész
Nulláról a robotokig - PIC Mikrovezérlők I rész
Szerző: Topi, idő: Jún 12, 2007, Olvasva: 119630, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   14 / 24

Most egy a D porton lévő LED-sort fogunk villogtatni ide oda. Áramkör ugyan az mint az előzőekben.

Íme a program darabokban:

  1. LIST P=16F877
  2.  #INCLUDE "P16F877.INC"
  3.  __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF

Ez a fejléc tudatja a fordítóval a config biteket és hogy milyen processzorra fordítson. _XT_OSC = Kristály oszcillátor, ami <= 4MHz
_CP_OFF = Kód védelem kikapcsolás (CodeProtect)
_WDT_OFF = Watchdog kikapcsolás
_LVP_OFF = Alacsony feszültségű programozás kikapcs (Low Voltage Programming)

A Watchdog arra való, hogy magától resetelődjön a processzor ha véletlen lefagyna. De ezt egy WDT regiszter irányítja, amit bekapcsolt WDT esetén egyfolytában törölni kellene. Amikor ez a regiszter túlcsordul, resetel a processzor.

  1. CBLOCK 0x20   ;A 0x20 egy szabad memória rész kezdő címe
  2.  T1
  3.  T2
  4.  T3
  5. ENDC

Itt deklaráljuk a változókat amiket használni fogunk. Ezek a T1, T2, T3. Mind egy bájt, és egy regiszterre mutat.

  1. ORG 0

Ez a kezdő pozíció, itt indul a program. Megszakítás esetén az ORG 4 "lapon" fogunk dolgozni.

  1. START
  2.  BCF STATUS,RP1
  3.  BSF STATUS,RP0   ;BANK1-be átlépünk
  4.  ;PORTA Digitális I/O-vá tétel
  5.  MOVLW 0x06  
  6.  MOVWF ADCON1   ;Mindegyik PORTA digitális
  7.  MOVLW B'00011111'  ;Betöltjük az akksiba a TRISA-ba írandót
  8.  MOVWF TRISA   ;Beállítjuk a PORTA-t bemenetre (beírjuk a TRISA-ba)
  9.  MOVLW B'00000000'  ;Betöltjük az akksiba a TRISD-be valót
  10.  MOVWF TRISD   ;Beletöltjük (mind kimenet a nulla miatt)
  11.  BCF STATUS,RP0   ;BANK0-ba visszalépünk

Induló rész.... Innentől már nem magyarázom el külön, minden megértést segítő hozzászólás benne van a forráskódban. Innen letölthető: asm_elso.zip

A PORTA-t digitálissá kell átállítani, mivel az alapértelmezett az analóg bemenet. Ezért kell az az ADCON1-es rész! Ne hagyd ki, mert különben mindig nulla lesz a PORTA minden értéke!

Magát a programot MPLAB-al tudjuk lefordítani, de ezt előbb már láthattuk.

Ha ez már működik, akkor átírjuk egy kicsit a programokat, hogy lásd hogy is működik a bemenetek kezelése. Gomb1 megnyomására jobb oldalra fog futni a fény, Gomb2 megnyomására bal oldalra fog futni a fény.

Következzen az assembly-s ledvillogtatónk 2. része... Lapozz...


A cikk még nem ért véget, lapozz!
Következő: »»   14 / 24
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem