Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 13 odgovora
  • 5.187 pregleda

Najnovija ↓

Pomoc oko zadatak iz Mikrokontrolera 16.07.2011. u 21:36 · pre 186 meseci #1
Molio bih [es] Team da mi pomogne oko jednog zadatka iz Mikrokontrolera koji glasi : Bafer veličine 5 bajtova napuniti sa 0xFF. U prvu lokaciju posle kraja bafera upisati 0x00. Upisati u bafer 3,6,12,24. Izaći iz programske petlje kada se dođe do podatka 0x00 upisanog u bafer. Znam da se ova tema ponavljala kao i ovaj zadatak izvinjavam se u napred . Napisao sam kod do pola a od pola ne znam ni da beknem.

Code:

main

LFSR FSR0,buffer
movlw c_buffer_length
movwf Loop_counter
clrf WREG
main_loop0
movlw 0xFF
movwf POSTINC0
decfsz Loop_counter
bra main_loop0
movlw 0x00

U pitanju je PIC 18F4520 . Bio bih do neba zahvalan ako bi neko od [es] Team mogao da mi pomogne . Ako ne mozete da mi pomognete bar mi dajte neke smernice, literaturu na internetu ili mozda cak neki pokusaj resenja ovog zadatka stvarno ne mogu da resim drugu polovinu.Pozdrav i izvinite na uznemiravanju. Molio bih odgovor .Pozdrav
Re: Pomoc oko zadatak iz Mikrokontrolera 31.07.2011. u 01:15 · pre 185 meseci #2
Ae da probam da pomognem ako nije kasno :)

Prvo, da li sam razumeo dobro: Poenta je da se prvo bafer napuni 0xFF, a zatim u njega upisu brojevi 24, 12, 6, 3 i 0, i iskoci iz petlje?
Re: Pomoc oko zadatak iz Mikrokontrolera 31.07.2011. u 14:09 · pre 185 meseci #4
Znaci algoritam bi bio:

a) Inicijalizovati dva registra da cuvaju adresu i 'offset' bafera
b) Proci kroz ciklus od offset=4 do offset=0 i set-ovati* vrednost na 0xFF
c) Inicijalizovati pomocni registar na vrednost 24.
d) Proci kroz ciklus od offset=4 do offset=0, setovati* vrednost bafera (na datom offset-u) na vrednost pomocnog registra, zatim shiftovati vrednost desno bez prenosa (RRNCF ako je PIC18F4520)



* PIC kontroleri imaju mogucnost 'indirektnog' adresiranja registara u memoriji, koriscenjem FSR registra (file select register) [upisivanjem adrese zeljenog registra ovde] i citanjem ili pisanjem u INDF registar.

Dakle, recimo, ako stavimo da je adresa bafera 0x20, i hocemo da upisemo 0xFF u ceo registar islo bi:


while offset > 0
FSR = 0x20+OFFSET
INDF = 0xFF
DECR OFFSET

Re: Pomoc oko zadatak iz Mikrokontrolera 01.08.2011. u 00:18 · pre 185 meseci #6
Evo napisao sam deo koda jos je ostalo da napisem za Izaci iz programske petlje kada se dodje do podatka 0x00 upisanog u bafer.
Code:

Main

lfsr FSR0,buffer
movlw c_buffer_length
movwf loop_counter
clrf WREG

Main_loop0

movlw 0xFF
movwf POSTINC0
decfsz loop_counter
bra Main_loop0
movlw 0x00
movlw 3
Main_loop1
CPFSGT INDF0
Bra main_upisi
main_upisi
addlw 3
movwf POSTINC0
bra Main_loop1
Re: Pomoc oko zadatak iz Mikrokontrolera 01.08.2011. u 00:42 · pre 185 meseci #7
Ne znam koliko ces nauciti o programiranju u asembleru ako koristis neki visi programski jezik i zatim prevedes u Asembler.

Na osnovu izgleda koda, mislim da je C u pitanju? :) Mislim da je cak i nepotrebno zakomplikovan kod bas zato.
Re: Pomoc oko zadatak iz Mikrokontrolera 01.08.2011. u 10:18 · pre 185 meseci #9
Instrukcije

movlw 0x00
movlw 3


Pune W registar nulom, a zatim brojem tri.
Nigde ne upisujes te registre u buffer kroz onaj POSTINC registar.

Kasnije,

ADDLW 3 znaci da dodajes 3 na W registar, al' tvoj niz brojeva bi trebao da bude 3, 6, 12, 24 (svaki je 2 puta veci od prethodnog).
bolje bi bilo da shift-ujes bez carry-ja levo i time 'mnozis' sa dva.


Takodje, INDF0 registar drzi VREDNOST na adresi stavljenoj u FSR0 registar. Proveravas da li je INDF0 > 0 instrukcijom CPFSGT INDF0?

Re: Pomoc oko zadatak iz Mikrokontrolera 02.08.2011. u 20:56 · pre 185 meseci #10
Ispravite me ako gresim instrukcija movff WREG, buffer_end ovo verovatno znaci da se sadrzaj WREG prepise (kopira) u buffer_end a u to u mom zadatku trebalo da 0x00 prepisem u buffer_end (na poslednju lokaciju u baferu pa tek onda mogu da upisem 3,6,12,24). Zanimame da li sam upravu ako nisam onda gde sam pogresio.
Re: Pomoc oko zadatak iz Mikrokontrolera 03.08.2011. u 14:33 · pre 185 meseci #11
Evo napisao sam kod koji bi trebalo da valja ali samo je jos ostalo da napisem da izadjem iz programske petlje kada se dodje do podatka 0x00.

Main
lfsr FSR0,buffer
movlw c_buffer_length
movwf loop_counter
clrf WREG
Main_loop0
movlw 0xFF
movwf POSTINC0
decfsz loop_counter
bra Main_loop0
movlw 0x00
movff WREG,buffer_end
Main_loop1
movf 3
rlncf
rlncf
rlncf
movf INDF0,W
bra Main_loop1

Ne znam kako da napisem instrukciju za rotiranje registra f stao mi mozak pokusavao sam na razlicite nacine ali pokazuje gresku.
Re: Pomoc oko zadatak iz Mikrokontrolera 03.08.2011. u 17:52 · pre 185 meseci #12
Rotiranje je RLCF i RLNCF (with and without Carry) LEVO i RRCF RRNCF desno (with and without Carry).


Mozda pomogne :)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme