Hjælp Pic 16f84a

Hej har pr=F8vet at lave dette program til et diagram, som i f=F8rste omgang bare skal f=E5 en diode til at lyse. men det virker ikke? er der ikke en af jer, som kan fort=E6lle hvad jeg g=F8r forkert ? :/

output bennet er RB1 eller ben 7.

Jeg bruger 4 mhz crystal er 2 * 22 pf kondensatorer, som er tilsluttet pin 15 og 16. ;=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ; ; Configuration Bits ; ;=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

_CP_ON EQU H'000F' _CP_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _PWRTE_OFF EQU H'3FFF' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _LP_OSC EQU H'3FFC' _XT_OSC EQU H'3FFD' _HS_OSC EQU H'3FFE' _RC_OSC EQU H'3FFF'

bsf 03h,8 ;Skift til Bank 1 movlw b'00000000' ;S=E6tter alle Port b movwf 86h ;benene til output bcf 03h,8 ;skifter tilbage til Bank 0

movlw 01h movwf 06h

H=E5ber virkelig p=E5 der er en som vil hj=E6lpe mig lidt :)

Reply to
nowack7
Loading thread data ...

Normalt gider jeg ikke læse maskinkode, men du skal tage stilling til hvad der sker når de viste instruktioner er udført. Enten må du stoppe processoren, eller sende den i en løkke, hvor den bliver. Ellers ved du INTET om hvad der sker.

Bo //

Reply to
Bo Bjerre

I MPLab kan du køre programmet i stepmode med eet step ad gangen og overvåge statusflag o.s.v. Svinger x-tal osc.?

--
MVH.
Finni
Reply to
F.Syndergaard

Men i en RIGTIG processor standser programmet ikke, bare fordi der ikke er flere instruktioner.

Bo //

Reply to
Bo Bjerre

Hej ...

Det er dejligt at der stadig er nogle der kan se det smarte i at programmere i maskinkode, selv om det kan være noget af en mundfuld at starte på, men når man først får det ind under huden så er det svært at komme uden om. Jeg har ikke lige tid til at analysere hvad du gør forkert i dit eget lille forsøg men her er et godt lille eksempel der burde virke, en diode på PORTB 0 og en på PORTB 7, og du skulle gerne se at de blinker /Carsten

TITLE "test1" list P=16f84 __config 0x3FFA noexpand

include "p16c84.inc"

list

CBLOCK 0C ; Variabel definering Counter ; counter1 ENDC

list ;First the powerup code

org 00h ;origon i linie 0 goto START ;går til start org 06h ;origon i linie 06 ; Main program

start bsf STATUS, RP0 movlw b'00000000' movwf TRISA ;set all port A som output movlw b'00000000' movwf TRISB ;set all port B som output

movlw 0x00 movwf counter1 ; counter1 settes to 0

movlw 0xff movwf counter ;counter settes til 256

loop decfsz counter, 1 ;counter tælles ned med 1 og næste linje springes over hvis 0 goto $-1

incf counter1, 1 ;counter1 tælles op med 1 movf counter1, 0 ;værdien af counter1 plaseres i W movwf PORTB goto loop

end

MHV Carsten

Reply to
Carsten

der har lige sneget sig en lille fejl ind i det første eksempel, den skulle være rettet nu. Sådan går det når man skal lave små eksempler som ikke gør brug af makroer.

TITLE "test1" list P=16f84 __config 0x3FFA noexpand

include "p16c84.inc"

list

CBLOCK 0C ; Variabel difinering Counter ; counter1 ENDC

list ;First the powerup code

org 00h ;origon i linie 0 goto START ;går til start org 06h ;origon i linie 06 ; Main program

start bsf STATUS, RP0 movlw b'00000000' movwf TRISA ;set all port A som output movlw b'00000000' movwf TRISB ;set all port B som output bcf STATUS, RP0

movlw 0x00 movwf counter1 ; counter1 settes to 0

movlw 0xff movwf counter ;counter settes til 256

loop decfsz counter, 1 ;counter tælles ned med 1 og næste linje springes over hvis 0 goto $-1

incf counter1, 1 ;counter1 tælles op med 1 movf counter1, 0 ;værdien af counter1 plaseres i W movwf PORTB goto loop

end

--
MHV
Carsten
Reply to
Carsten

Bo: Hvad mener du ? det lyder interessant ! vil du ikk uddybe det lidt ?

Finni: hvor v=E6lger jeg det step mode?

Carsten: mange tak for det, jeg vil pr=F8ve at br=E6nde og lave print efter det, og s=E5 afl=E6se dine instruktioner n=F8je !

// Kevin

Reply to
nowack7

skrev i en meddelelse news: snipped-for-privacy@b1g2000hsg.googlegroups.com... Bo: Hvad mener du ? det lyder interessant ! vil du ikk uddybe det lidt ?

Finni: hvor vælger jeg det step mode?

Carsten: mange tak for det, jeg vil prøve at brænde og lave print efter det, og så aflæse dine instruktioner nøje !

// Kevin

Stepmode vælger du i MPlab som er et udviklingsværktøj som gratis kan downloades fra Microchip. Men det er måske for voldsomt til et lille øveprojekt. Men prøv at tænke over hvad Bo svarer.... I din kodestump mangler du en "goto loop" og en "end" . Men jeg er ikke nogen ørn til dette.

--
MVH.
Finni
Reply to
F.Syndergaard

Hvad er interessant ?

en PIC standser ikke bare fordi du ikke giver den flere instruktioner.

Så enten må du sende den ind i en loop, hvor den bliver, eller osse må du give den en HALT eller STOP instruktion (ved ikke om en PIC har den slags??)

Bo //

Reply to
Bo Bjerre

finni: jeg bruger mplap ;) derfor jeg spurgte :)

Bo: ja det der l=F8d interessant var at du vidste hvad jeg gjorde forkert og derfor vil jeg jo gerne have det uddybet...

Men ja okay hvis jeg skal s=E6tte den ind i et loop, skal jeg s=E5 bare skrive 'go to start' ? og hvis jeg skal stoppe processoren skriver jeg vel 'end' til sidst i min kode?

// Kevin

Reply to
nowack7

Som Bo så rigtigt er inde på mangler du et loop, men jeg er overbevist om at hvis programmet ellers var skrevet rigtigt ville det ikke betyde noget, hvis du kikker på det lille eksempel jeg har skrevet og det du kar skrevet er der en himmel vid forskel i starten, du får aldrig fortalt compileren hvilken processor den skal compile til du lister forskellige Configuration Bits, men du vælger ikke et af dem, du får aldrig defineret starten af programmet.

Hvad har du af udstyr til at programmere/brænde pic processoren med ?

/Carsten

Reply to
Carsten

t om at

vet

n
n
f

Okay jeg er ogs=E5 li startet og er meget forvirret over det hele.. Men det med configurations bits var noget jeg fik af en l=E6rer men han er ikke til at blive klog p=E5? han sagde bare jeg skulle skrive det ind i starten og s=E5 sagde han ik mere... ?

Skriver i MPlap og min br=E6nder er Picstart plus. s=E5 det fejler ingenting..

Reply to
nowack7

Okay jeg er også li startet og er meget forvirret over det hele.. Men det med configurations bits var noget jeg fik af en lærer men han er ikke til at blive klog på? han sagde bare jeg skulle skrive det ind i starten og så sagde han ik mere... ?

Skriver i MPlap og min brænder er Picstart plus. så det fejler ingenting..

Er det en ældre udgave af MPlab? I så fald ligger stepmode under en knap med to grønne fødder. Conf. bits sætter du jo i MPlab så sætter den dem selv ind. Og du kan rette dem lige før du brænder pic´en i brænderprogrammet. Det kan godt være din lærer er svær at forstå men der findes tonsvis af vejledninger på nettet, også for os begyndere, du kan læse. F.eks.

formatting link

formatting link

--
MVH.
Finni
Reply to
F.Syndergaard

"end" fortæller oversætteren, at der ikke er mere tekst at oversætte. et er ikke en instruktion til procesoren, men et direktiv til oversætteren. Det svarer lidt til et punktum efter en særning i en bog.

Jeg synes jeg har fortalt hvad du kan gøre:

"Så enten må du sende den ind i en loop, hvor den bliver, eller osse må du give den en HALT eller STOP instruktion (ved ikke om en PIC har den slags??)"

Bo //

Reply to
Bo Bjerre

e. et

.

m=E5

okay mange tak for hj=E6lpen det vil jeg s=E5 pr=F8ve :)

og igen tak til jer andre ogs=E5 :)

Reply to
nowack7

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.