Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mikrokontroler pic16F84

[es] :: Elektronika :: Mikrokontroleri :: Mikrokontroler pic16F84

[ Pregleda: 2751 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pesoholicar90
Milos Mladenovic
Fakultet inzenjerskih nauka
Kragujevac

Član broj: 297822
Poruke: 2
*.dynamic.isp.telekom.rs.



Profil

icon Mikrokontroler pic16F8422.01.2012. u 17:52 - pre 149 meseci
POTREBNA POMOC!!!!!
Napraviti program za kvadriranje brojeva od 1 do 15. broj se unosi u binarnom obliku inkrementiranjem ili dekrementiranjem. Nije moguće pojavljivanje broja većeg od 15 ni manjeg od 1. Zadatak realizovati pomoću mikrokontrolera PIC16F84 na asembleru.

PORTB Prikaz binarnog broja
PORTA.0 Inkrementiranje broja
PORTA.1 dekrementiranje broja
PORTA.2 Prikaz rezultata
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3871
adsl-74-160.teol.net.



+334 Profil

icon Re: Mikrokontroler pic16F8422.01.2012. u 18:22 - pre 149 meseci
Milose,
ne ide to tako kako si zamislio.
1.Otvaras dvije teme za isto pitanje.
2. Nisi se potrudio da makar pocnes pisati program, nego ocekujes da ti neko uradi tvoj zadatak.

Moras sam poceti, pa ce se vec neko naci da ti pomogne, iako se ovdje slabo koristi asembler, ali ima ko zna.
 
Odgovor na temu

pesoholicar90
Milos Mladenovic
Fakultet inzenjerskih nauka
Kragujevac

Član broj: 297822
Poruke: 2
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler pic16F8429.01.2012. u 18:06 - pre 148 meseci
evo koda....samo me zanima da li radi kako treba
#include p16f84.inc ; inicijalizacija procesora koji ce se koristiti
processor 16f84
org 5 ; program pocinje od pozicije 5 u memoriji
cinil1 equ 0x18 ; prvi cinilac
cin1 equ 0x19 ; prvi cinilac/pomocna promenljiva
cin2 equ 0x20 ; drugi cinilac/pomocna promenljiva
proizvod equ 0x21 ; proizvod
stanje equ 0x22 ; pomocna promenljiva za upis prethodnog stanja PORTA
delay equ 0x23 ; pomocna promenljiva za definisanje kasnjenja
brojac equ 0x24 ; brojac
pombr equ 0x25 ; pomocni brojac inicijalizacija
clrf PORTA ;
clrf PORTB ;
clrf stanje ;
clrf cinil1 ;
bsf STATUS,RP0 ; prebaciti se u banku 1 memorije
movlw 0x1f ; definisanje da je PORTA ulazni
movwf TRISA ; nazivi registara pisu se velikim slovom
movlw B'00000000' ; definisanje da je PORTB izlazni
movwf TRISB ; vratiti se iz banke 1 memorije
bcf STATUS,RP0


start

btfsc PORTA,4 ; provera da li je pritisnut taster za reset cinilaca
call reset ; pozovi potprogram za reset

btfsc PORTA,0 ; provera da li je pritisnut poziv 1. cinioca, ako jeste
goto cinilac1 ; idi na upis 1 cinioca



clrf stanje ; pripremi stanje za sledecu operaciju
movf proizvod,0 ; prikazi proizvod na PORTB ako nisu pritisnuti tasteri 0,1
movwf PORTB
clrf proizvod ; resetuj proizvod
mnozenje

movf cinil1,0 ; prebacivanje cinioca 1 u pomocnu promenljivu
movwf cin1
movf cinil1,0 ; prebacivanje cinioca 1 u pomocnu promenljivu
movwf cin2
clrf brojac ; resetuj brojac
clrf pombr ; resetuj pomocni brojac
btfsc cin2,0 ; provera da li je prva cifra drugog cinioca 1
call zbir1 ; ako jeste uradi podprogram sa labelom zbir1
btfss cin2,0 ;
call zbir0 ; u suprotnom uradi podprogram sa labelom zbir0
incf brojac,1 ; inkrementiraj brojac

petlje

rlf cin1,1 ; rotiraj sadrzaj cinioca 1 ulevo i smesti ga u njega samog
bcf cin1,0 ; resetuj prvi bit cinioca 1
btfsc STATUS,C ; proveri da li je bit C 1
call provera ; ako jeste uradi podprogram sa labelom provera
rrf cin2,1 ; rotiraj sadrzaj cinioca 2 udesno i smesti ga u njega samog
btfsc cin2,0 ; provera da li je prv bit drugog cinioca 1
call zbir2 ; ako jeste uradi podprogram sa labelom zbir2
btfss cin2,0 ;
call zbir0 ; u suprotnom uradi podprogram sa labelom zbir0
incf brojac,1 ; inkrementiraj brojac
btfsc brojac,3 ; ako je brojac stigao do 8
goto start ; idi na pocetak ciklusa
goto petlje ; idi na podprogram sa labelom petlje
zbir1

movf cin1,0 ; smesti sadrzaj cinioca 1 u akumulator
movwf proizvod ; saberi to sa proizvodom
return ; vrati se ispod mesta poziva

zbir2

movf cin1,0 ; smesti sadrzaj cinioca 1 u akumulator
addwf proizvod ; dodaj sadrzaj akumulatora proizvodu
return ; vrati se ispod mesta poziva



zbir0

clrw ; obrisi sadrzaj akumulatora
addwf proizvod ; dodaj sadrzaj akumulatora proizvodu
return ; vrati se ispod mesta poziva



provera

rrf cin2,1 ; rotiraj sadrzaj cinioca 2 udesno i smesti ga u njega samog
incf pombr,1 ; inkrementiraj pomocni brojac
btfsc cin2,0 ; provera da li je prvi bit drugog cinioca 1
bsf PORTB,3 ; setuj cetvrti bit PORT-a B
btfsc pombr,7-brojac ; provera da li su ispitani svi bitovi drugog cinioca
goto start ; ako jesu idi na start programa
goto provera ; u suprotnom idi na proveru
return ; vrati se ispod mesta poziva

cinilac1

btfsc PORTA,2 ; proveri da li je pritisnut taster za inkrementiranje
call inkr1 ; idi na inkrementiranje
btfss PORTA,2 ;
bcf stanje,2 ; ciklus inkrementiranja zavrsen
btfsc PORTA,3 ; proveri da li je pritisnut taster za dekrementiranje
call dekr1 ; idi na dekrementiranje
btfss PORTA,3 ;
bcf stanje,3 ; ciklus dekrementiranja zavrsen
movf cinil1,0 ; prikazi 1 cinilac na PORTB
movwf PORTB
goto mnozenje ; idi na mnozenje


reset ; potprogram za brisanje cinilaca
clrf cinil1

return



inkr1 ; potprogram za inkrementiranje 1 cinioca
btfss stanje,2 ; proveri da li je taster 2 bio pritisnut, ako nije
incf cinil1,1 ; inkrementiraj 1 cinilac
bsf stanje,2 ; jedno inkrementiranje zavrseno
call pauza ; sacekaj da se kontakti smire
return
dekr1 ; potprogram za dekrementiranje 1 cinioca
btfss stanje,3 ; proveri da li je taster 3 bio pritisnut, ako nije
decf cinil1,1 ; dekrementiraj 1 cinilac
bsf stanje,3 ; jedno dekrementiranje zavrseno
call pauza ; sacekaj da se kontakti smire
return


pauza ; potprogram za pravljenje kasnjenja
movlw 0xff
movwf delay
petlja
decfsz delay,1 ; kasnjenje je oko delay * 2 mikrosekundi
goto petlja ; za oscilator od 4MHz
return

; konfiguraciona rec
__config B'11111111110001' ; nema zastite koda, powerup dozvoljeno,
; wd iskljucen, xt oscilator

end ; kraj programa
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Mikrokontroler pic16F8430.01.2012. u 14:51 - pre 148 meseci
Izprogramiras PIConju, ubodes na protobord i proveris. Nista lakse. (ili propustis kroz neki simulator)
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Mikrokontroler pic16F84

[ Pregleda: 2751 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.