31. julija, 2004

PIC od začetka – uvod

Indirektno naslavljanje se manj uporablja, je pa zelo koristno npr. pri programiranju serijskega vmesnika. Vse kar moramo narediti, da pridemo indirektno do podatka v nekem registru, je, da vpišemo njegov naslov v register FSR. Naslov je dolg 8 bitov, zato moramo uporabiti naslove, kot so zapisani v tabeli z organizacijo RAM pomnilnika. Glede tega nam ni treba skrbeti, saj sem že prej napisal, da prevajalnik avtomatsko uporablja 8-bitne naslove v konstantah. Osmi bit v FSR registru namreč določa banko, v kateri se register nahaja. Podatek v registru nato preberemo iz registra INDF oz. ga vanj vpišemo. Kar koli spremenimo v registru INDF, se bo spremenilo tudi v registru, katerega naslov je v registru FSR. Še primer v zbirniku:

 movlw 0x0C ;Vpis naslova registra, ki ga bomo brali, v W
 movwf FSR ;Naslov prenesemo v register FSR
 movf INDF,W ;Vsebino INDF shranimo v W (torej je v W sedaj ;vrednost registra na naslovu 0x0C)
 movlw 0xA0 ;V register W damo vrednost 0xA0
 movwf INDF ;Na naslovu 0x0C je sedaj vrednost 0xA0 (indirektni vpis)

Instrukcija movf kopira vrednost v registru, ki je prvi parameter instrukcije, v register, ki je podan z drugim parametrom. Prvi parameter je lahko kateri koli register oz. njegov naslov, drugi parameter pa je lahko f ali W. Če je drugi parameter f, se vrednost registra kopira nazaj v isti register, če pa je W, se vrednost kopira v register W. Parametra f in W sta tudi definirani konstanti (W=0, f=1). Morda se vam zdi nenavadno, da lahko kopiramo register v samega sebe, vendar pride ta možnost prav pri testiranju, ali se v registru nahaja vrednost 0 (zaenkrat tega ne bomo potrebovali). Če indirektno beremo podatek iz INDF registra, dobimo vrednost 0, če pa indirektno vpišemo podatek v INDF, se izvede instrukcija nop (no operation, torej ta instrukcija ne naredi ničesar). Shemo indirektnega naslavljanja lahko vidite na sliki 8.

Uporaba MPSIM simulatorja

Za simulacijo moramo program najprej prevesti, kakor sem prej napisal. Nato lahko program izvajamo po korakih s klikanjem na ikono z odtisi podplatov. Program lahko resetiramo s klikom na ikono čipa, izvajanje brez ustavljanja pa sprožimo z ikono zelenega semaforja. Ikona rdečega semaforja program ustavi. Simulacija omogoča, da med izvajanjem programa spremljamo vsebino SFR in GPR registrov ter tudi vsebino programskega pomnilnika ter podatkovnega EEPROM-a. Posamezne pomnilnike lahko opazujemo tako, da odpremo okna za njihovo opazovanje. Vklapljamo jih iz menija Window. Tukaj najdete ukaze za opazovanje programskega pomnilnika (Program Memory), EEPROM podatkovnega pomnilnika (EEPROM Memory), celotnega RAM pomnilnika (File Registers) in SFR registrov (Special Function Registers). Z ukazom Modify lahko spreminjate vrednost katere koli lokacije v katerem koli pomnilniku.

Ko imamo na disku program v .hex datoteki, potrebujemo samo še programator, s katerim bomo program vpisali v čip. Načrtov za take programatorje je na Internetu ogromno, pa še material je zelo poceni. Programi, ki znajo uporabljati tak programator, so prav tako zastonj na Internetu. Sam uporabljam JDM programator s programom IC Prog. Načrt programatorja najdete v naslednjem poglavju, program IC Prog pa si lahko brezplačno snamete s spletnega naslova www.ic-prog.com.