Nybörjare på Pic
-
- Inlägg: 700
- Blev medlem: 23 augusti 2003, 20:42:38
Nybörjare på Pic
Har nu lyckats att få en Pic 16F628A att blinka en lysdiod!
Vad kan man mer göra för enkelt så man kan lära sig???
Hörttals om att man skriver en text till en LCD
Vad kan man mer göra för enkelt så man kan lära sig???
Hörttals om att man skriver en text till en LCD
Gratulerar till att du fick igång programmeraren!
Du kan ju fortsätta med att blinka med 8 lysdioder. Tona och scrolla kors och tvärs.
Koppla in knappar för att styra saker. Lär dig avstudsa dem utan att äta upp all processortid.
Har du en LCD med HD44780 styrchip så koppla in den och försök få ut lite text!
Du kan ju fortsätta med att blinka med 8 lysdioder. Tona och scrolla kors och tvärs.
Koppla in knappar för att styra saker. Lär dig avstudsa dem utan att äta upp all processortid.
Har du en LCD med HD44780 styrchip så koppla in den och försök få ut lite text!
-
- Inlägg: 700
- Blev medlem: 23 augusti 2003, 20:42:38
-
- Inlägg: 700
- Blev medlem: 23 augusti 2003, 20:42:38
Nu Fungerar programmeraren perfekt, det visade sig att det var en del av mina pic-kretsar som var kass, gick helt enkelt inte att programmera dom.
Men men, har ialla fall lyckats att göra rinnande ljus fram och tillbaka och blinka mm.
Men får inte till det med input.
Men inget verkar fungera, har läst picbasic pro manualen och mikroBasic manualen men det hjälper inte. Kör med deras exempel.
Visserligen kör jag med programmet: mikroBasic, där komandon:a är inte riktigt samma som picbasic pro. Men det blir inga felmedelanden när jag Kompilierar.
Jag hoppas att det är nån som kan hjälpa mig.
Men men, har ialla fall lyckats att göra rinnande ljus fram och tillbaka och blinka mm.
Men får inte till det med input.
Kod: Markera allt
Har provat denna kod:
main:
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
If PortA = %00000001 Then ' Ifall PortA.0 är hög.
PortB = %00000001 ' Sätt PortB.0 hög.
End If
END
Kod: Markera allt
Och även denna:
main:
TrisA = 1 ' PortA är input
TrisB = 255 ' PortB är Output
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB = %00000001 ' Sätt PortB.0 hög.
End If
END
Men inget verkar fungera, har läst picbasic pro manualen och mikroBasic manualen men det hjälper inte. Kör med deras exempel.
Visserligen kör jag med programmet: mikroBasic, där komandon:a är inte riktigt samma som picbasic pro. Men det blir inga felmedelanden när jag Kompilierar.
Jag hoppas att det är nån som kan hjälpa mig.
-
- Inlägg: 700
- Blev medlem: 23 augusti 2003, 20:42:38
jajjamen!
if PortA.0 = 1 ...
...är ett mycket bättre alternativ om det bara är bit 0 du är intresserad av.
Såg nu att du använder '628. Jag vet inte hur mikroBasic-kompilatorn beter sig, men normalt måste du stänga av komparatordelen på portA innan den går att använda för normalt digitalt bruk. detta görs genom cmcon = 7 i böjan av programmet.
if PortA.0 = 1 ...
...är ett mycket bättre alternativ om det bara är bit 0 du är intresserad av.
Såg nu att du använder '628. Jag vet inte hur mikroBasic-kompilatorn beter sig, men normalt måste du stänga av komparatordelen på portA innan den går att använda för normalt digitalt bruk. detta görs genom cmcon = 7 i böjan av programmet.
-
- Inlägg: 700
- Blev medlem: 23 augusti 2003, 20:42:38
Har nu suttit en bra stund och försökt lösa problemet med input i min pic, men det gick inte.
Jag har placerat " cmcon = 7 " både ovanför "main:" och i "main:" men det går helt enkelt inte.
Jag provade även att köra input på PortB och Output på PortA, och det hjälpte såklart inte.
Körde även ett exempel som stod i mikroBasic - manualen, där det beskrevs att man kunde skriva något mellan "SUB" och "END SUB" så att man skulle fåett studsfritt tillslag, och självklart funkar inte det häller.
Det hade varit kul att kunna de vanliga funktionerna i en pic, det öppnar ju sig en helt ny värld av möjligheter, det verkar ju gå att göra massa saker enklare än med traditionell elektronik.
Jag har placerat " cmcon = 7 " både ovanför "main:" och i "main:" men det går helt enkelt inte.
Jag provade även att köra input på PortB och Output på PortA, och det hjälpte såklart inte.
Körde även ett exempel som stod i mikroBasic - manualen, där det beskrevs att man kunde skriva något mellan "SUB" och "END SUB" så att man skulle fåett studsfritt tillslag, och självklart funkar inte det häller.
Det hade varit kul att kunna de vanliga funktionerna i en pic, det öppnar ju sig en helt ny värld av möjligheter, det verkar ju gå att göra massa saker enklare än med traditionell elektronik.
-
- Inlägg: 700
- Blev medlem: 23 augusti 2003, 20:42:38
Logan> Jag skriver programmet i mikroBasic och kompilierar till hex.
Hex - filen programmerar jag pic:en genom programmet ic-prog.
EDIT:
$tiff> Här kommer koden, hade den på den andra datorn.
Det händer att utgången är hög nån gång ibland, men det går inte att ändra status på den genom att lägga antingen 0v eller 5v på input pinnen. Jo jag kör med ett pulldown motstånd på 15k.
Jag har även provat att använda en annan port som input (både portA och portB) men det hjälper inte, samma resultat.
Att styra utgångarna är inga problem, utan det är ingångarna.
Jag skulle gissa på att det är någonting i koden.
Hex - filen programmerar jag pic:en genom programmet ic-prog.
EDIT:
$tiff> Här kommer koden, hade den på den andra datorn.
Kod: Markera allt
program PicInput
main:
cmcon = 7 ' Stäng av komparator
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB = %00000001 ' Sätt PortB.0 hög.
End If
end.
Jag har även provat att använda en annan port som input (både portA och portB) men det hjälper inte, samma resultat.
Att styra utgångarna är inga problem, utan det är ingångarna.
Jag skulle gissa på att det är någonting i koden.
Kod: Markera allt
program PicInput
main:
cmcon = 7 ' Stäng av komparator
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
loop:
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB.0 = 1 ' Sätt PortB.0 hög.
else
PortB.0 = 0 ' Återställ PortB.0.
End If
goto loop
end
-
- Inlägg: 700
- Blev medlem: 23 augusti 2003, 20:42:38
-
- Inlägg: 700
- Blev medlem: 23 augusti 2003, 20:42:38
Nu fungerar det med denna koden:
Fungerar även med denna:
Jag ser ingen skillnad, men tack ändå $tiff och Murre
Kod: Markera allt
main:
cmcon = 7 ' Stäng av komparator
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
loop:
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB = %00000011 ' Sätter PortB.0 och .1 Hög
Else
PortB = %00001100 ' Sätter PortB.2 och .3 Hög
End If
Goto loop
end.
Fungerar även med denna:
Kod: Markera allt
main:
cmcon = 7 ' Stäng av komparator
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
loop:
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB.1 = 1 ' Sätter PortB.1 Hög
Else
PortB.1 = 0 ' Sätter PortB.1 Låg
End If
Goto loop
end.