pic 16f690 digital i/o på porta, jag lyckas inte!
- peterjansson20
- Inlägg: 66
- Blev medlem: 12 april 2010, 09:07:16
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
funkar fint!
????
både i pic en och i simulatorn
flyttar värdet på porten till w
borde inte funka eller?
????
både i pic en och i simulatorn
flyttar värdet på porten till w
borde inte funka eller?
- peterjansson20
- Inlägg: 66
- Blev medlem: 12 april 2010, 09:07:16
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
funkar fint!AndersG skrev:Menar du:
?Kod: Markera allt
movf PORTA,w movwf PORTC
Har du testat koden i MPLABS simulator?
både i pic en och MPLABS simulator
men jag hittar inte instruktionen i referensbladet.
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
Så det funkar nu?
Du hade skrivit "movfw", inte "movwf", Notera även att "movf register, dest", dvs vill du flytta från registret till W eller till registret själv. Därför skall du inte utelämna det. se
Du hade skrivit "movfw", inte "movwf", Notera även att "movf register, dest", dvs vill du flytta från registret till W eller till registret själv. Därför skall du inte utelämna det. se
Kod: Markera allt
MOVF Move f
Syntax: [ label ] MOVF f,d
Operands: 0 ≤ f ≤ 127
d ∈ [0,1]
Operation: (f) → (dest)
Status Affected: Z
Description: The contents of register ‘f’ is
moved to a destination dependent
upon the status of ‘d’. If d = 0,
destination is W register. If d = 1,
the destination is file register ‘f’
itself. d = 1 is useful to test a file
register since status flag Z is
affected.
Words: 1
Cycles: 1
Example: MOVF FSR, 0
After Instruction
W = value in FSR
register
Z = 1
- peterjansson20
- Inlägg: 66
- Blev medlem: 12 april 2010, 09:07:16
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
ja programmet läser "porta" och lägger värdet på "portc"
med movfw som instruktion.
men jag skall ändra till movf porta,w för att allt skall vara rätt och riktigt.
men "ra5" och "ra4" läses som 0 oavsett om det ligger en etta eller nolla på.
med movfw som instruktion.
men jag skall ändra till movf porta,w för att allt skall vara rätt och riktigt.
men "ra5" och "ra4" läses som 0 oavsett om det ligger en etta eller nolla på.
Senast redigerad av peterjansson20 13 april 2010, 11:55:42, redigerad totalt 1 gång.
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
> funkar fint!
> ????
> både i pic en och i simulatorn
> flyttar värdet på porten till w
> borde inte funka eller?
Förstår du själv någonting av vad du skriver ?
Använder du "Förhandsgranska" ?
Du borde även läsa på lite om användadet av stor bokstav
där det ska vara det och vanlig interpunktur (punkt, komma o.s.v)
Det är väldigt dålig stil att bara kasta ihop något
hastigt ihophafsat och posta det så där. Om du skriver
din kod med samma eftertanke så förvånar det inte
att dugg att du har problem. Så skärp till dig lite så
får du både bättre svar här och lättare att få koden
att fungera.
Nog om det...
AndersG> Vad är "movfw" ?
Se MPASM manualen, kapitel :
"A.6 12-BIT/14-BIT INSTRUCTION WIDTH PSEUDO-INSTRUCTIONS".
> men jag hittar inte instruktionen i referensbladet.
Vilken instruktion är det du talar om och vad är "referensbladet" ?
Om det är databladet för processorn du menar så har den bara med de
intruktioner som själva processorn känner igen. I MPASM manualen
finns även de "pseudo-instructions" som MPASM känner igen och som
översätts till motsvarande "riktiga" PIC instruktioner. Se kapitlet ovan.
Om det är "MOVFW <f>" du menar så fungerar den, den översätts av MPASM
till "MOVF <f>, W". Men personligen vet jag inte om det gör koden tydligare...
> ja programmet läser "porta" och lägger värdet på "portc"
> men "ra5" och "ra4" läses som 0 oavsett om det ligger en etta eller nolla på.
OK. Så det fungerar alltså inte. Fixa en uppsnyggad och rensad kod och
posta den med code-taggarna så får vi se...
> ????
> både i pic en och i simulatorn
> flyttar värdet på porten till w
> borde inte funka eller?
Förstår du själv någonting av vad du skriver ?
Använder du "Förhandsgranska" ?
Du borde även läsa på lite om användadet av stor bokstav
där det ska vara det och vanlig interpunktur (punkt, komma o.s.v)
Det är väldigt dålig stil att bara kasta ihop något
hastigt ihophafsat och posta det så där. Om du skriver
din kod med samma eftertanke så förvånar det inte
att dugg att du har problem. Så skärp till dig lite så
får du både bättre svar här och lättare att få koden
att fungera.
Nog om det...
AndersG> Vad är "movfw" ?
Se MPASM manualen, kapitel :
"A.6 12-BIT/14-BIT INSTRUCTION WIDTH PSEUDO-INSTRUCTIONS".
> men jag hittar inte instruktionen i referensbladet.
Vilken instruktion är det du talar om och vad är "referensbladet" ?
Om det är databladet för processorn du menar så har den bara med de
intruktioner som själva processorn känner igen. I MPASM manualen
finns även de "pseudo-instructions" som MPASM känner igen och som
översätts till motsvarande "riktiga" PIC instruktioner. Se kapitlet ovan.
Om det är "MOVFW <f>" du menar så fungerar den, den översätts av MPASM
till "MOVF <f>, W". Men personligen vet jag inte om det gör koden tydligare...
> ja programmet läser "porta" och lägger värdet på "portc"
> men "ra5" och "ra4" läses som 0 oavsett om det ligger en etta eller nolla på.
OK. Så det fungerar alltså inte. Fixa en uppsnyggad och rensad kod och
posta den med code-taggarna så får vi se...
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
Ah.. Jag skulle dock undvika den då det är lätt att förväxla med movwf."A.6 12-BIT/14-BIT INSTRUCTION WIDTH PSEUDO-INSTRUCTIONS".
Annars, testa med något i stil med:
Kod: Markera allt
Start:
BANKSEL TRISC
clrf trisc
MOVLW 0ff
MOVWF TRISA ; make IO Pin B.0 an output
BANKSEL PORTA
CLRF PORTA ;Init PORTA
BANKSEL ANSEL
CLRF ANSEL ;digital I/O
BANKSEL ANSELH
CLRF ANSELH ;digital I/O
BANKSEL PORTA
MainLoop:
movf PORTA,w
movwf PORTC
goto MainLoop ; Do it again...
end
- peterjansson20
- Inlägg: 66
- Blev medlem: 12 april 2010, 09:07:16
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
Nedanstående fungerar OK i MPLAB/SIM.
Det som jag lägger på RA0-5 kopieras till RC0-5.
Det som jag lägger på RA0-5 kopieras till RC0-5.
Kod: Markera allt
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
org 0
banksel TRISC
clrf TRISC
MOVLW h'ff'
MOVWF TRISA
banksel ANSEL
CLRF ANSEL
MainLoop
movf PORTA, W
movwf PORTC
goto MainLoop
end
- peterjansson20
- Inlägg: 66
- Blev medlem: 12 april 2010, 09:07:16
- peterjansson20
- Inlägg: 66
- Blev medlem: 12 april 2010, 09:07:16
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
Grund problemet var att jag bara kunde läsa in data från "RA3"
Med
BANKSEL ANSELH
CLRF ANSELH ;digital I/O
Så gick det att läsa "RA0" - "RA3"
Men inte "Ra4" och "Ra5"
Med komandot movfw som visade sig vara ett felaktigt komando gick det att läsa "PORTA"
i MPLAB SIM.
Men med komandot
MOVF PORTA,W
Så går det inte att läsa av PORTA men det fungerar på en programerad pic.
Jag tog beslutet att flytta min puls givare från "RA4" och "RA5" Till "RA1" och "RA2".
Så var problemet löst.
Jag kommer att lösa problemet senare och ge er de svar ni önskar!
Med
BANKSEL ANSELH
CLRF ANSELH ;digital I/O
Så gick det att läsa "RA0" - "RA3"
Men inte "Ra4" och "Ra5"
Med komandot movfw som visade sig vara ett felaktigt komando gick det att läsa "PORTA"
i MPLAB SIM.
Men med komandot
MOVF PORTA,W
Så går det inte att läsa av PORTA men det fungerar på en programerad pic.
Jag tog beslutet att flytta min puls givare från "RA4" och "RA5" Till "RA1" och "RA2".
Så var problemet löst.
Jag kommer att lösa problemet senare och ge er de svar ni önskar!
Re: pic 16f690 digital i/o på porta, jag lyckas inte!
jag minns något som skrevs om att ibland kan MPLAB klydda med att låsa MCLR som inte gick att rubba varken in eller ut
hände bara när man körde via IDE och pickit2 med 16f690
RA3 är ju MCLR annars som ska stängas av med _MCLRE_OFF i configen om man vill använda den som I/O (nåväl bara I
)
kan det också vara en del av problemet kanske...
hände bara när man körde via IDE och pickit2 med 16f690
RA3 är ju MCLR annars som ska stängas av med _MCLRE_OFF i configen om man vill använda den som I/O (nåväl bara I

kan det också vara en del av problemet kanske...
- peterjansson20
- Inlägg: 66
- Blev medlem: 12 april 2010, 09:07:16