200 likes | 370 Vues
PIC mikrokontroller Loeng 4. Alar Ainla 5.oktoober.2004. Käsud (2). Kuidas k äsud paiknevad mälus ?. Käsukoodid. Pisikene ülesanne. Korrutada 00011001*00001010=? Vastus 11100001=225=25*9 Kuidas realiseerida korrutamist? Kuidas realiseerida jagamist?. Mäluarhitektuurid.
E N D
PIC mikrokontrollerLoeng 4 Alar Ainla 5.oktoober.2004
Pisikene ülesanne • Korrutada 00011001*00001010=? • Vastus 11100001=225=25*9 • Kuidas realiseerida korrutamist? • Kuidas realiseerida jagamist?
Mäluarhitektuurid • Vaatleme seda, kuidas protsessor näeb ja kasutab mälu! • Muutuja mälu • Programmi mälu • Stack (pinu) mälu • Data EEPROM
Muutuja mälu • Muutuja mäluruumis on ka erifunktsioonidega registrid • Käsu tasemel erifunktsioonidega registrid ei eristu tavalisest mälupesast • Hetkel PIC16 seerias ülimalt 368baiti mälu • Ka meie PICil (PIC16F876A) on 368baiti mälu • Kui sellele lisada veel registrid, siis on vaja vähemalt 9 biti aadressiks ... :S
Muutuja mälu (2) • Lahendus!!! • Mälu on jagatud bankadeks ja nende valimiseks on kuskil bitid
Muutuja mälu • SFR • GPR • CommonRAM
Muutuja mälu adresseerimine • Otsene (direct) • Viidaga (indirect)
indirect adresseerimine • Aadress peab olema kirjutatud spetsiaalsesse registrisse (FSR 0x04) • Tulemuse lugemine toimub teisest spetsiaalsest registrist (INDF 0x00) • IRP (1-2/2-3 bank)
Programmi mälu • Programmi mälus on programm! • Meie PICil on 14336 baiti = 8192x14bitti • Selleks et seda addresseerida on vaja 13bitti ...! • 13bitine loendur (PC) • Programmis (goto, call) ülimalt 11bitti • On 2k käsused blokid. (0-7FF,800-FFF,1000-17FF,1800-1FFF) • PCLATH (Program Counter Latch High). • Järjestik programm läheb algusest kuni lõpuni • Kui vähem mälu siis liiga kaugele adresseeriminewraparound
Programmi mälu (3) • Reset vector 0x0000 (ja PCLATH=0) • Interrupt vector 0x0004 (PCLATH muutumatu) • Kallibratsiooni informatsioon (retlw)
Programmi loendur (PC) • 13-bit • Madalam bait on PCL • Kõrgem on PCH (muudetav vaid läbi PCLATH)
GOTO arvutamine • Näiteks ADDWF PCL